@camera.ui/server 0.0.48 → 0.0.50-internal.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (873) hide show
  1. package/.prettierignore +12 -0
  2. package/.prettierrc.json +12 -0
  3. package/artillery.yaml +29 -0
  4. package/bin/cameraui-server.ts +11 -0
  5. package/dist/interface/assets/@xterm.DYP7pi_n.0.0.50-internal.0.css +32 -0
  6. package/dist/interface/assets/Adminpanel.BKek2EMH.0.0.50-internal.0.css +1 -0
  7. package/dist/interface/assets/Cameras.BDWZJqPN.0.0.50-internal.0.css +1 -0
  8. package/dist/interface/assets/Camview.BFUFMoNX.0.0.50-internal.0.css +1 -0
  9. package/dist/interface/assets/CuiConsole.DCYyxdVg.0.0.50-internal.0.css +1 -0
  10. package/dist/interface/assets/CuiPluginCard.yF8V0SZY.0.0.50-internal.0.css +1 -0
  11. package/dist/interface/assets/CuiTimeline.BkIwlYtw.0.0.50-internal.0.css +1 -0
  12. package/dist/interface/assets/Plugin.DJElsAn5.0.0.50-internal.0.css +1 -0
  13. package/dist/interface/assets/Plugins.0h77qnmN.0.0.50-internal.0.css +1 -0
  14. package/dist/interface/assets/Settings.CkgfRkQr.0.0.50-internal.0.css +1 -0
  15. package/dist/interface/assets/SettingsAccount.DeFul3eQ.0.0.50-internal.0.css +1 -0
  16. package/dist/interface/assets/main.Cip9LkS3.0.0.50-internal.0.css +1 -0
  17. package/dist/interface/assets/worker-base.jEXLGV2h.0.0.50-internal.0.js +1332 -0
  18. package/dist/interface/assets/worker-json.DgwNIOck.0.0.50-internal.0.js +1626 -0
  19. package/dist/interface/assets/worker-yaml.B3uUYINB.0.0.50-internal.0.js +5819 -0
  20. package/dist/interface/fonts/InterVariable.woff2 +0 -0
  21. package/dist/interface/index.html +48 -38
  22. package/dist/interface/js/@intlify.BkGPX90O.0.0.50-internal.0.js +15 -0
  23. package/dist/interface/js/@kurkle.D8fDXNIl.0.0.50-internal.0.js +6 -0
  24. package/dist/interface/js/@primeuix.BFAY2Bk9.0.0.50-internal.0.js +5722 -0
  25. package/dist/interface/js/@primevue.OhxoO3MD.0.0.50-internal.0.js +57 -0
  26. package/dist/interface/js/@tanstack.D1IL6eOv.0.0.50-internal.0.js +1 -0
  27. package/dist/interface/{@vee-validate.BEda0VqZ.0.0.48.js → js/@vee-validate.BGPyWWTh.0.0.50-internal.0.js} +2 -2
  28. package/dist/interface/js/@vue.B5vqhCp2.0.0.50-internal.0.js +17 -0
  29. package/dist/interface/js/@vueuse.BsKtqdiG.0.0.50-internal.0.js +1 -0
  30. package/dist/interface/{@xterm.Ct1qg4AD.0.0.48.js → js/@xterm.CAa7rpjv.0.0.50-internal.0.js} +8 -8
  31. package/dist/interface/js/Adminpanel.D93Kvbwp.0.0.50-internal.0.js +1 -0
  32. package/dist/interface/js/Camera.DF2l3OMA.0.0.50-internal.0.js +1 -0
  33. package/dist/interface/js/Cameras.YzvZccdv.0.0.50-internal.0.js +482 -0
  34. package/dist/interface/js/Cammesh.D-6dAROQ.0.0.50-internal.0.js +1 -0
  35. package/dist/interface/js/Camview.CB7_HnoQ.0.0.50-internal.0.js +1 -0
  36. package/dist/interface/js/Config.BwflsWTm.0.0.50-internal.0.js +2 -0
  37. package/dist/interface/js/Console.DZM8pN8Q.0.0.50-internal.0.js +4 -0
  38. package/dist/interface/js/CuiConsole.BXXU7Gth.0.0.50-internal.0.js +1 -0
  39. package/dist/interface/js/CuiPluginCard.YFOrpbVD.0.0.50-internal.0.js +4 -0
  40. package/dist/interface/js/CuiTimeline.VV5KSJd5.0.0.50-internal.0.js +1 -0
  41. package/dist/interface/js/FirstSteps.b-nvymgb.0.0.50-internal.0.js +1 -0
  42. package/dist/interface/js/Plugin.BOMpVEwM.0.0.50-internal.0.js +1 -0
  43. package/dist/interface/js/Plugins.DdPwaUDA.0.0.50-internal.0.js +1 -0
  44. package/dist/interface/js/Recordings.DhxjIW7e.0.0.50-internal.0.js +1 -0
  45. package/dist/interface/js/Settings.D24ttaPu.0.0.50-internal.0.js +1 -0
  46. package/dist/interface/js/SettingsAccount.ms3aqz4E.0.0.50-internal.0.js +1 -0
  47. package/dist/interface/js/SettingsAppearance.DsTjKXk1.0.0.50-internal.0.js +1 -0
  48. package/dist/interface/js/SettingsAppearance.vue_vue_type_script_setup_true_lang.CBQ6lL3T.0.0.50-internal.0.js +1 -0
  49. package/dist/interface/js/SettingsBackup.BPEc4Rjg.0.0.50-internal.0.js +1 -0
  50. package/dist/interface/js/SettingsRecordings.DgW7M0jj.0.0.50-internal.0.js +1 -0
  51. package/dist/interface/js/SettingsRemote.BL5nXbUT.0.0.50-internal.0.js +1 -0
  52. package/dist/interface/js/SettingsSystem.D7T0AIpm.0.0.50-internal.0.js +1 -0
  53. package/dist/interface/js/SettingsUsers.1u0vCOVG.0.0.50-internal.0.js +1 -0
  54. package/dist/interface/js/VersionsHandler.vue_vue_type_script_setup_true_lang.xDishkkS.0.0.50-internal.0.js +4 -0
  55. package/dist/interface/js/ace-builds.D1nmvCwb.0.0.50-internal.0.js +1090 -0
  56. package/dist/interface/js/ace.config.G96T2z54.0.0.50-internal.0.js +1 -0
  57. package/dist/interface/js/axios.DHr9lByg.0.0.50-internal.0.js +6 -0
  58. package/dist/interface/js/backup.B_Gzxtp_.0.0.50-internal.0.js +1 -0
  59. package/dist/interface/js/chart.js.CP_nMnnf.0.0.50-internal.0.js +13 -0
  60. package/dist/interface/js/close-circle.DYLuVIOg.0.0.50-internal.0.js +1 -0
  61. package/dist/interface/js/dnd-core.T9OeW7mu.0.0.50-internal.0.js +1 -0
  62. package/dist/interface/{draggabilly.PrP7w5-3.0.0.48.js → js/draggabilly.D3zGcBb3.0.0.50-internal.0.js} +1 -1
  63. package/dist/interface/js/engine.io-client.kITRnq-g.0.0.50-internal.0.js +1 -0
  64. package/dist/interface/js/fast-deep-equal.Bpc9mIsj.0.0.50-internal.0.js +1 -0
  65. package/dist/interface/js/highlight.js.BlSXU-Wb.0.0.50-internal.0.js +3 -0
  66. package/dist/interface/js/linkify-it.C3N1lWsJ.0.0.50-internal.0.js +1 -0
  67. package/dist/interface/js/main.D0YR3Jat.0.0.50-internal.0.js +31 -0
  68. package/dist/interface/{markdown-it.DU7e183f.0.0.48.js → js/markdown-it.Dj0dt5s2.0.0.50-internal.0.js} +1 -1
  69. package/dist/interface/{nprogress.DTGXmkhG.0.0.48.js → js/nprogress.BwQWDcGj.0.0.50-internal.0.js} +1 -1
  70. package/dist/interface/js/perfect-debounce.l0sNRNKZ.0.0.50-internal.0.js +1 -0
  71. package/dist/interface/js/pinia.DRh7plEC.0.0.50-internal.0.js +5 -0
  72. package/dist/interface/js/primelocale.Bga3dOQu.0.0.50-internal.0.js +1 -0
  73. package/dist/interface/js/primevue.Cl58krXf.0.0.50-internal.0.js +142 -0
  74. package/dist/interface/{qrcode.Bdg1zKx6.0.0.48.js → js/qrcode.C1sDj6P8.0.0.50-internal.0.js} +1 -1
  75. package/dist/interface/js/react-dnd-touch-backend.BA4WhUJo.0.0.50-internal.0.js +1 -0
  76. package/dist/interface/js/refresh-rounded.D_SmhhUf.0.0.50-internal.0.js +1 -0
  77. package/dist/interface/js/rxjs.C-fTBwEO.0.0.50-internal.0.js +3 -0
  78. package/dist/interface/js/socket.io-client.DKrRxgjP.0.0.50-internal.0.js +1 -0
  79. package/dist/interface/js/socket.io-parser.EXj3YDH2.0.0.50-internal.0.js +1 -0
  80. package/dist/interface/js/system.CY8rGd-Q.0.0.50-internal.0.js +1 -0
  81. package/dist/interface/js/trash-fill.CMnCN3Oy.0.0.50-internal.0.js +1 -0
  82. package/dist/interface/{unidragger.3FW7TOUy.0.0.48.js → js/unidragger.D0w6Tqtt.0.0.50-internal.0.js} +1 -1
  83. package/dist/interface/js/uuid.C6aID195.0.0.50-internal.0.js +1 -0
  84. package/dist/interface/js/vee-validate.BeiObIH8.0.0.50-internal.0.js +5 -0
  85. package/dist/interface/js/vue-chartjs.DtdZdiYw.0.0.50-internal.0.js +1 -0
  86. package/dist/interface/js/vue-i18n.BW2bx_6z.0.0.50-internal.0.js +5 -0
  87. package/dist/interface/js/vue-inline-svg.BJkQGmKz.0.0.50-internal.0.js +1 -0
  88. package/dist/interface/js/vue-router.B2mOXHaC.0.0.50-internal.0.js +5 -0
  89. package/dist/interface/js/vue-zoomable.BKDyCJE7.0.0.50-internal.0.js +1 -0
  90. package/dist/interface/js/vue.l0sNRNKZ.0.0.50-internal.0.js +1 -0
  91. package/dist/interface/js/vue3-dnd.DRK24CBp.0.0.50-internal.0.js +1 -0
  92. package/dist/interface/js/zod.SKKegNRO.0.0.50-internal.0.js +1 -0
  93. package/dist/interface/js/zoom-out.DxvzgVEo.0.0.50-internal.0.js +1 -0
  94. package/dist/interface/manifest.webmanifest +1 -1
  95. package/dist/interface/pwa/favicon-32.ico +0 -0
  96. package/dist/interface/pwa/favicon-48.ico +0 -0
  97. package/dist/interface/sw.js +1 -1
  98. package/dist/server/package.json +57 -45
  99. package/dist/server/requirements.txt +12 -11
  100. package/dist/server/src/__init__.py +0 -0
  101. package/dist/server/src/_camera_ui_tools/__init__.py +0 -0
  102. package/dist/server/src/_camera_ui_tools/camera_ui_common/__init__.py +28 -0
  103. package/dist/server/src/_camera_ui_tools/camera_ui_common/camera_utils/utils.py +52 -0
  104. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/__init__.py +0 -0
  105. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/object_path.py +198 -0
  106. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/reactive.py +42 -0
  107. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/signal_handler.py +92 -0
  108. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/subscribed.py +21 -0
  109. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/task.py +39 -0
  110. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/thread.py +10 -0
  111. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/utils.py +91 -0
  112. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/__init__.py +0 -0
  113. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/ansicolor.py +62 -0
  114. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/logger.py +178 -0
  115. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/test.py +116 -0
  116. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/__init__.py +350 -0
  117. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/__init__.py +0 -0
  118. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/base.py +237 -0
  119. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/client.py +256 -0
  120. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/connection.py +784 -0
  121. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/errors.py +745 -0
  122. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/messaging.py +57 -0
  123. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc.py +227 -0
  124. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc_generator.py +584 -0
  125. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/constants.py +96 -0
  126. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/typings.py +218 -0
  127. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/__init__.py +0 -0
  128. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/connection_state.py +86 -0
  129. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/logger.py +30 -0
  130. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/metrics.py +152 -0
  131. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/packer.py +20 -0
  132. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/routing.py +75 -0
  133. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/rpc.py +177 -0
  134. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/subscriptions.py +24 -0
  135. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/tasks.py +39 -0
  136. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/uid.py +37 -0
  137. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/validate.py +119 -0
  138. package/dist/server/src/_camera_ui_tools/camera_ui_types/__init__.py +1360 -0
  139. package/dist/server/src/_camera_ui_tools/camera_ui_types/hybrid_observer.py +338 -0
  140. package/dist/server/src/_camera_ui_tools/camera_ui_types/test.py +196 -0
  141. package/dist/server/src/api/controllers/auth.controller.d.ts +2 -2
  142. package/dist/server/src/api/controllers/auth.controller.js +49 -43
  143. package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
  144. package/dist/server/src/api/controllers/backup.controller.js +1 -2
  145. package/dist/server/src/api/controllers/backup.controller.js.map +1 -1
  146. package/dist/server/src/api/controllers/cameras.controller.d.ts +13 -11
  147. package/dist/server/src/api/controllers/cameras.controller.js +314 -105
  148. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  149. package/dist/server/src/api/controllers/plugins.controller.d.ts +8 -8
  150. package/dist/server/src/api/controllers/plugins.controller.js +208 -244
  151. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  152. package/dist/server/src/api/controllers/system.controller.d.ts +1 -0
  153. package/dist/server/src/api/controllers/system.controller.js +22 -8
  154. package/dist/server/src/api/controllers/system.controller.js.map +1 -1
  155. package/dist/server/src/api/controllers/users.controller.d.ts +2 -2
  156. package/dist/server/src/api/controllers/users.controller.js +13 -25
  157. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  158. package/dist/server/src/api/database/checks.js +2 -2
  159. package/dist/server/src/api/database/checks.js.map +1 -1
  160. package/dist/server/src/api/database/index.d.ts +4 -7
  161. package/dist/server/src/api/database/index.js +59 -86
  162. package/dist/server/src/api/database/index.js.map +1 -1
  163. package/dist/server/src/api/database/migration.js +5 -141
  164. package/dist/server/src/api/database/migration.js.map +1 -1
  165. package/dist/server/src/api/database/selfcheck.js +5 -5
  166. package/dist/server/src/api/database/selfcheck.js.map +1 -1
  167. package/dist/server/src/api/database/types.d.ts +17 -25
  168. package/dist/server/src/api/go2rtc/api/discover.d.ts +30 -0
  169. package/dist/server/src/api/go2rtc/api/discover.js +162 -0
  170. package/dist/server/src/api/go2rtc/api/discover.js.map +1 -0
  171. package/dist/server/src/api/go2rtc/api/index.d.ts +1 -1
  172. package/dist/server/src/api/go2rtc/api/index.js +15 -4
  173. package/dist/server/src/api/go2rtc/api/index.js.map +1 -1
  174. package/dist/server/src/api/go2rtc/api/streams.d.ts +3 -1
  175. package/dist/server/src/api/go2rtc/api/streams.js +66 -9
  176. package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
  177. package/dist/server/src/api/go2rtc/index.d.ts +2 -0
  178. package/dist/server/src/api/go2rtc/index.js +3 -0
  179. package/dist/server/src/api/go2rtc/index.js.map +1 -1
  180. package/dist/server/src/api/go2rtc/queue.js +3 -3
  181. package/dist/server/src/api/go2rtc/queue.js.map +1 -1
  182. package/dist/server/src/api/go2rtc/types.d.ts +66 -11
  183. package/dist/server/src/api/index.d.ts +4 -0
  184. package/dist/server/src/api/index.js +45 -9
  185. package/dist/server/src/api/index.js.map +1 -1
  186. package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +1 -0
  187. package/dist/server/src/api/middlewares/authPermission.middleware.js +11 -2
  188. package/dist/server/src/api/middlewares/authPermission.middleware.js.map +1 -1
  189. package/dist/server/src/api/middlewares/authValidation.middleware.js +20 -12
  190. package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -1
  191. package/dist/server/src/api/middlewares/pagination.middleware.js +45 -53
  192. package/dist/server/src/api/middlewares/pagination.middleware.js.map +1 -1
  193. package/dist/server/src/api/plugins/proxy.plugin.d.ts +14 -0
  194. package/dist/server/src/api/plugins/proxy.plugin.js +200 -0
  195. package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -0
  196. package/dist/server/src/api/routes/cameras.routes.js +56 -30
  197. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  198. package/dist/server/src/api/routes/plugins.routes.js +65 -63
  199. package/dist/server/src/api/routes/plugins.routes.js.map +1 -1
  200. package/dist/server/src/api/routes/system.routes.js +7 -1
  201. package/dist/server/src/api/routes/system.routes.js.map +1 -1
  202. package/dist/server/src/api/routes/users.routes.js +8 -8
  203. package/dist/server/src/api/routes/users.routes.js.map +1 -1
  204. package/dist/server/src/api/schemas/backup.schema.d.ts +3 -3
  205. package/dist/server/src/api/schemas/backup.schema.js +1 -1
  206. package/dist/server/src/api/schemas/backup.schema.js.map +1 -1
  207. package/dist/server/src/api/schemas/cameras.schema.d.ts +1413 -529
  208. package/dist/server/src/api/schemas/cameras.schema.js +229 -182
  209. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  210. package/dist/server/src/api/schemas/config.schema.d.ts +29 -41
  211. package/dist/server/src/api/schemas/config.schema.js +10 -21
  212. package/dist/server/src/api/schemas/config.schema.js.map +1 -1
  213. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +194 -162
  214. package/dist/server/src/api/schemas/go2rtc.schema.js +33 -58
  215. package/dist/server/src/api/schemas/go2rtc.schema.js.map +1 -1
  216. package/dist/server/src/api/schemas/plugins.schema.d.ts +17 -17
  217. package/dist/server/src/api/schemas/plugins.schema.js +1 -1
  218. package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
  219. package/dist/server/src/api/schemas/storage.schema.d.ts +22 -0
  220. package/dist/server/src/api/schemas/storage.schema.js +5 -0
  221. package/dist/server/src/api/schemas/storage.schema.js.map +1 -0
  222. package/dist/server/src/api/schemas/system.schema.d.ts +171 -3
  223. package/dist/server/src/api/schemas/system.schema.js +30 -3
  224. package/dist/server/src/api/schemas/system.schema.js.map +1 -1
  225. package/dist/server/src/api/schemas/users.schema.d.ts +98 -254
  226. package/dist/server/src/api/schemas/users.schema.js +6 -6
  227. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  228. package/dist/server/src/api/services/auth.service.d.ts +5 -5
  229. package/dist/server/src/api/services/auth.service.js +26 -35
  230. package/dist/server/src/api/services/auth.service.js.map +1 -1
  231. package/dist/server/src/api/services/cameras.service.d.ts +11 -15
  232. package/dist/server/src/api/services/cameras.service.js +143 -274
  233. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  234. package/dist/server/src/api/services/plugins.service.d.ts +3 -1
  235. package/dist/server/src/api/services/plugins.service.js +48 -50
  236. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  237. package/dist/server/src/api/services/users.service.d.ts +1 -0
  238. package/dist/server/src/api/services/users.service.js +20 -14
  239. package/dist/server/src/api/services/users.service.js.map +1 -1
  240. package/dist/server/src/api/types/index.d.ts +57 -46
  241. package/dist/server/src/api/types/index.js +0 -4
  242. package/dist/server/src/api/types/index.js.map +1 -1
  243. package/dist/server/src/api/utils/cert.d.ts +5 -1
  244. package/dist/server/src/api/utils/cert.js +24 -26
  245. package/dist/server/src/api/utils/cert.js.map +1 -1
  246. package/dist/server/src/api/utils/constants.d.ts +4 -2
  247. package/dist/server/src/api/utils/constants.js +4 -2
  248. package/dist/server/src/api/utils/constants.js.map +1 -1
  249. package/dist/server/src/api/utils/fetch.d.ts +1 -1
  250. package/dist/server/src/api/utils/fetch.js +2 -2
  251. package/dist/server/src/api/utils/fetch.js.map +1 -1
  252. package/dist/server/src/api/websocket/index.d.ts +1 -0
  253. package/dist/server/src/api/websocket/index.js +14 -9
  254. package/dist/server/src/api/websocket/index.js.map +1 -1
  255. package/dist/server/src/api/websocket/nsp/logs.d.ts +10 -2
  256. package/dist/server/src/api/websocket/nsp/logs.js +75 -27
  257. package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
  258. package/dist/server/src/api/websocket/nsp/metrics.d.ts +20 -12
  259. package/dist/server/src/api/websocket/nsp/metrics.js +188 -117
  260. package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
  261. package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -1
  262. package/dist/server/src/api/websocket/nsp/plugins.js +3 -5
  263. package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
  264. package/dist/server/src/api/websocket/nsp/server.js +6 -0
  265. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  266. package/dist/server/src/api/websocket/types.d.ts +4 -2
  267. package/dist/server/src/api.d.ts +3 -4
  268. package/dist/server/src/api.js +13 -13
  269. package/dist/server/src/api.js.map +1 -1
  270. package/dist/server/src/camera/classes.d.ts +2 -0
  271. package/dist/server/src/camera/classes.js +24 -0
  272. package/dist/server/src/camera/classes.js.map +1 -0
  273. package/dist/server/src/camera/controller.d.ts +30 -18
  274. package/dist/server/src/camera/controller.js +236 -202
  275. package/dist/server/src/camera/controller.js.map +1 -1
  276. package/dist/server/src/camera/device.d.ts +34 -0
  277. package/dist/server/src/camera/device.js +327 -0
  278. package/dist/server/src/camera/device.js.map +1 -0
  279. package/dist/server/src/camera/frameWorker.d.ts +32 -31
  280. package/dist/server/src/camera/frameWorker.js +257 -247
  281. package/dist/server/src/camera/frameWorker.js.map +1 -1
  282. package/dist/server/src/camera/index.d.ts +92 -0
  283. package/dist/server/src/camera/index.js +531 -0
  284. package/dist/server/src/camera/index.js.map +1 -0
  285. package/dist/server/src/camera/interfaces.d.ts +17 -0
  286. package/dist/server/src/camera/interfaces.js +99 -0
  287. package/dist/server/src/camera/interfaces.js.map +1 -0
  288. package/dist/server/src/camera/iou.d.ts +2 -0
  289. package/dist/server/src/camera/iou.js +123 -0
  290. package/dist/server/src/camera/iou.js.map +1 -0
  291. package/dist/server/src/camera/polygon.d.ts +4 -0
  292. package/dist/server/src/camera/polygon.js +192 -0
  293. package/dist/server/src/camera/polygon.js.map +1 -0
  294. package/dist/server/src/camera/python/__init__.py +0 -0
  295. package/dist/server/src/camera/python/classes.py +41 -0
  296. package/dist/server/src/camera/python/interfaces.py +130 -0
  297. package/dist/server/src/camera/python/iou.py +158 -0
  298. package/dist/server/src/camera/python/polygon.py +230 -0
  299. package/dist/server/src/camera/python/typings.py +50 -0
  300. package/dist/server/src/camera/python/video_frame.py +143 -0
  301. package/dist/server/src/camera/session.d.ts +37 -0
  302. package/dist/server/src/camera/session.js +160 -0
  303. package/dist/server/src/camera/session.js.map +1 -0
  304. package/dist/server/src/camera/streaming/fmp4-session.d.ts +17 -0
  305. package/dist/server/src/camera/streaming/fmp4-session.js +308 -0
  306. package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -0
  307. package/dist/server/src/camera/streaming/peer-connection.d.ts +26 -0
  308. package/dist/server/src/camera/streaming/peer-connection.js +213 -0
  309. package/dist/server/src/camera/streaming/peer-connection.js.map +1 -0
  310. package/dist/server/src/camera/streaming/rtsp-session.d.ts +19 -0
  311. package/dist/server/src/camera/streaming/rtsp-session.js +253 -0
  312. package/dist/server/src/camera/streaming/rtsp-session.js.map +1 -0
  313. package/dist/server/src/camera/streaming/webrtc-connection.d.ts +44 -0
  314. package/dist/server/src/camera/streaming/webrtc-connection.js +177 -0
  315. package/dist/server/src/camera/streaming/webrtc-connection.js.map +1 -0
  316. package/dist/server/src/camera/streaming/werift-session.d.ts +19 -0
  317. package/dist/server/src/camera/streaming/werift-session.js +246 -0
  318. package/dist/server/src/camera/streaming/werift-session.js.map +1 -0
  319. package/dist/server/src/camera/types.d.ts +16 -10
  320. package/dist/server/src/camera/utils.d.ts +9 -0
  321. package/dist/server/src/camera/utils.js +416 -0
  322. package/dist/server/src/camera/utils.js.map +1 -0
  323. package/dist/server/src/camera/videoFrame.d.ts +18 -0
  324. package/dist/server/src/camera/videoFrame.js +88 -0
  325. package/dist/server/src/camera/videoFrame.js.map +1 -0
  326. package/dist/server/src/cloud/index.d.ts +12 -0
  327. package/dist/server/src/cloud/index.js +49 -0
  328. package/dist/server/src/cloud/index.js.map +1 -0
  329. package/dist/server/src/cloud/remote/cloudflare.d.ts +7 -0
  330. package/dist/server/src/cloud/remote/cloudflare.js +12 -0
  331. package/dist/server/src/cloud/remote/cloudflare.js.map +1 -0
  332. package/dist/server/src/cloud/remote/upnp.d.ts +7 -0
  333. package/dist/server/src/cloud/remote/upnp.js +12 -0
  334. package/dist/server/src/cloud/remote/upnp.js.map +1 -0
  335. package/dist/server/src/cloud/remote/utils.d.ts +3 -0
  336. package/dist/server/src/cloud/remote/utils.js +20 -0
  337. package/dist/server/src/cloud/remote/utils.js.map +1 -0
  338. package/dist/server/src/cloud/types.d.ts +15 -0
  339. package/dist/server/src/cloud/types.js +11 -0
  340. package/dist/server/src/cloud/types.js.map +1 -0
  341. package/dist/server/src/decoder/child.d.ts +1 -0
  342. package/dist/server/src/decoder/child.js +749 -0
  343. package/dist/server/src/decoder/child.js.map +1 -0
  344. package/dist/server/src/decoder/imageUtils.d.ts +22 -0
  345. package/dist/server/src/decoder/imageUtils.js +196 -0
  346. package/dist/server/src/decoder/imageUtils.js.map +1 -0
  347. package/dist/server/src/decoder/manager.d.ts +19 -0
  348. package/dist/server/src/decoder/manager.js +208 -0
  349. package/dist/server/src/decoder/manager.js.map +1 -0
  350. package/dist/server/src/decoder/python/__init__.py +0 -0
  351. package/dist/server/src/decoder/python/child.py +903 -0
  352. package/dist/server/src/decoder/python/image_utils.py +196 -0
  353. package/dist/server/src/decoder/python/pool.py +45 -0
  354. package/dist/server/src/decoder/python/typings.py +57 -0
  355. package/dist/server/src/decoder/python/utils.py +70 -0
  356. package/dist/server/src/decoder/types.d.ts +23 -0
  357. package/dist/server/src/decoder/types.js.map +1 -0
  358. package/dist/server/src/decoder/utils.d.ts +13 -0
  359. package/dist/server/src/decoder/utils.js +45 -0
  360. package/dist/server/src/decoder/utils.js.map +1 -0
  361. package/dist/server/src/decoder/wasm/build/decoder.d.ts +43 -0
  362. package/dist/server/src/decoder/wasm/build/decoder.js +108 -0
  363. package/dist/server/src/decoder/wasm/build/decoder.wasm +0 -0
  364. package/dist/server/src/decoder/worker.d.ts +1 -0
  365. package/dist/server/src/decoder/worker.js +79 -0
  366. package/dist/server/src/decoder/worker.js.map +1 -0
  367. package/dist/server/src/go2rtc/index.d.ts +1 -0
  368. package/dist/server/src/go2rtc/index.js +27 -9
  369. package/dist/server/src/go2rtc/index.js.map +1 -1
  370. package/dist/server/src/go2rtc/types.d.ts +5 -4
  371. package/dist/server/src/go2rtc/types.js +7 -2
  372. package/dist/server/src/go2rtc/types.js.map +1 -1
  373. package/dist/server/src/main.js +19 -5
  374. package/dist/server/src/main.js.map +1 -1
  375. package/dist/server/src/manager/coreManager.d.ts +16 -0
  376. package/dist/server/src/manager/coreManager.js +95 -0
  377. package/dist/server/src/manager/coreManager.js.map +1 -0
  378. package/dist/server/src/manager/deviceManager.d.ts +12 -0
  379. package/dist/server/src/manager/deviceManager.js +130 -0
  380. package/dist/server/src/manager/deviceManager.js.map +1 -0
  381. package/dist/server/src/manager/types.d.ts +15 -0
  382. package/dist/server/src/manager/types.js +2 -0
  383. package/dist/server/src/manager/types.js.map +1 -0
  384. package/dist/server/src/plugins/index.d.ts +3 -1
  385. package/dist/server/src/plugins/index.js +42 -21
  386. package/dist/server/src/plugins/index.js.map +1 -1
  387. package/dist/server/src/plugins/plugin.d.ts +3 -3
  388. package/dist/server/src/plugins/plugin.js +13 -20
  389. package/dist/server/src/plugins/plugin.js.map +1 -1
  390. package/dist/server/src/plugins/runtime/base.d.ts +54 -0
  391. package/dist/server/src/plugins/runtime/base.js +223 -0
  392. package/dist/server/src/plugins/runtime/base.js.map +1 -0
  393. package/dist/server/src/plugins/runtime/index.d.ts +5 -0
  394. package/dist/server/src/plugins/runtime/index.js +13 -0
  395. package/dist/server/src/plugins/runtime/index.js.map +1 -0
  396. package/dist/server/src/plugins/runtime/node/child.d.ts +22 -0
  397. package/dist/server/src/plugins/runtime/node/child.js +152 -0
  398. package/dist/server/src/plugins/runtime/node/child.js.map +1 -0
  399. package/dist/server/src/plugins/runtime/node/index.d.ts +7 -0
  400. package/dist/server/src/plugins/runtime/node/index.js +54 -0
  401. package/dist/server/src/plugins/runtime/node/index.js.map +1 -0
  402. package/dist/server/src/plugins/runtime/node/plugin.d.ts +24 -0
  403. package/dist/server/src/plugins/runtime/node/plugin.js +128 -0
  404. package/dist/server/src/plugins/runtime/node/plugin.js.map +1 -0
  405. package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +16 -0
  406. package/dist/server/src/plugins/runtime/node/pluginApi.js +18 -0
  407. package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -0
  408. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +25 -0
  409. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +230 -0
  410. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -0
  411. package/dist/server/src/plugins/runtime/node/proxy/coreManager.d.ts +16 -0
  412. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +98 -0
  413. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -0
  414. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +19 -0
  415. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +144 -0
  416. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -0
  417. package/dist/server/src/plugins/runtime/node/storage.d.ts +34 -0
  418. package/dist/server/src/plugins/runtime/node/storage.js +313 -0
  419. package/dist/server/src/plugins/runtime/node/storage.js.map +1 -0
  420. package/dist/server/src/plugins/runtime/node/storageController.d.ts +18 -0
  421. package/dist/server/src/plugins/runtime/node/storageController.js +67 -0
  422. package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -0
  423. package/dist/server/src/plugins/runtime/python/__init__.py +0 -0
  424. package/dist/server/src/plugins/runtime/python/child.py +248 -0
  425. package/dist/server/src/plugins/runtime/python/index.d.ts +9 -0
  426. package/dist/server/src/plugins/runtime/python/index.js +57 -0
  427. package/dist/server/src/plugins/runtime/python/index.js.map +1 -0
  428. package/dist/server/src/plugins/runtime/python/namespaces.py +101 -0
  429. package/dist/server/src/plugins/runtime/python/plugin.py +155 -0
  430. package/dist/server/src/plugins/runtime/python/plugin_api.py +29 -0
  431. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +1732 -0
  432. package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +126 -0
  433. package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +197 -0
  434. package/dist/server/src/plugins/runtime/python/schema.py +99 -0
  435. package/dist/server/src/plugins/runtime/python/storage.py +353 -0
  436. package/dist/server/src/plugins/runtime/python/storage_controller.py +102 -0
  437. package/dist/server/src/plugins/runtime/python/typings.py +195 -0
  438. package/dist/server/src/plugins/schema.d.ts +27 -34
  439. package/dist/server/src/plugins/schema.js +358 -369
  440. package/dist/server/src/plugins/schema.js.map +1 -1
  441. package/dist/server/src/plugins/types.d.ts +43 -1
  442. package/dist/server/src/plugins/types.js +16 -0
  443. package/dist/server/src/plugins/types.js.map +1 -1
  444. package/dist/server/src/plugins/worker.d.ts +12 -31
  445. package/dist/server/src/plugins/worker.js +89 -343
  446. package/dist/server/src/plugins/worker.js.map +1 -1
  447. package/dist/server/src/rpc/index.d.ts +32 -0
  448. package/dist/server/src/rpc/index.js +103 -0
  449. package/dist/server/src/rpc/index.js.map +1 -0
  450. package/dist/server/src/rpc/namespaces.d.ts +35 -0
  451. package/dist/server/src/rpc/namespaces.js +42 -0
  452. package/dist/server/src/rpc/namespaces.js.map +1 -0
  453. package/dist/server/src/{nats → rpc}/server.d.ts +6 -2
  454. package/dist/server/src/{nats → rpc}/server.js +76 -55
  455. package/dist/server/src/rpc/server.js.map +1 -0
  456. package/dist/server/src/rpc/types.d.ts +111 -0
  457. package/dist/server/src/rpc/types.js +2 -0
  458. package/dist/server/src/{nats → rpc}/types.js.map +1 -1
  459. package/dist/server/src/{nats → rpc}/utils.d.ts +1 -1
  460. package/dist/server/src/rpc/utils.js.map +1 -0
  461. package/dist/server/src/services/config/constants.js +12 -48
  462. package/dist/server/src/services/config/constants.js.map +1 -1
  463. package/dist/server/src/services/config/defaults.d.ts +12 -0
  464. package/dist/server/src/services/config/defaults.js +55 -0
  465. package/dist/server/src/services/config/defaults.js.map +1 -0
  466. package/dist/server/src/services/config/index.d.ts +57 -9
  467. package/dist/server/src/services/config/index.js +277 -130
  468. package/dist/server/src/services/config/index.js.map +1 -1
  469. package/dist/server/src/services/config/types.d.ts +10 -4
  470. package/dist/server/src/types.d.ts +3 -0
  471. package/dist/server/src/utils/path.d.ts +5 -0
  472. package/dist/server/src/utils/path.js +12 -0
  473. package/dist/server/src/utils/path.js.map +1 -0
  474. package/dist/server/src/utils/pythonInstaller.d.ts +46 -0
  475. package/dist/server/src/utils/pythonInstaller.js +463 -0
  476. package/dist/server/src/utils/pythonInstaller.js.map +1 -0
  477. package/eslint.config.js +103 -0
  478. package/localdeps.txt +10 -0
  479. package/mypy.ini +30 -0
  480. package/package.json +57 -45
  481. package/requirements.txt +15 -0
  482. package/ruff.toml +90 -0
  483. package/src/__init__.py +0 -0
  484. package/src/_camera_ui_tools/__init__.py +0 -0
  485. package/src/_camera_ui_tools/__pycache__/__init__.cpython-311.pyc +0 -0
  486. package/src/api/controllers/api.controller.ts +19 -0
  487. package/src/api/controllers/auth.controller.ts +294 -0
  488. package/src/api/controllers/backup.controller.ts +72 -0
  489. package/src/api/controllers/cameras.controller.ts +1029 -0
  490. package/src/api/controllers/config.controller.ts +102 -0
  491. package/src/api/controllers/files.controller.ts +35 -0
  492. package/src/api/controllers/frameWorkers.controller.ts +109 -0
  493. package/src/api/controllers/plugins.controller.ts +1206 -0
  494. package/src/api/controllers/system.controller.ts +273 -0
  495. package/src/api/controllers/users.controller.ts +648 -0
  496. package/src/api/database/checks.ts +268 -0
  497. package/src/api/database/constants.ts +8 -0
  498. package/src/api/database/index.ts +262 -0
  499. package/src/api/database/migration.ts +62 -0
  500. package/src/api/database/selfcheck.ts +492 -0
  501. package/src/api/database/types.ts +104 -0
  502. package/src/api/go2rtc/api/application.ts +48 -0
  503. package/src/api/go2rtc/api/config.ts +61 -0
  504. package/src/api/go2rtc/api/discover.ts +197 -0
  505. package/src/api/go2rtc/api/index.ts +49 -0
  506. package/src/api/go2rtc/api/snapshot.ts +44 -0
  507. package/src/api/go2rtc/api/streams.ts +168 -0
  508. package/src/api/go2rtc/index.ts +43 -0
  509. package/src/api/go2rtc/queue.ts +50 -0
  510. package/src/api/go2rtc/types.ts +174 -0
  511. package/src/api/index.ts +286 -0
  512. package/src/api/middlewares/authPermission.middleware.ts +46 -0
  513. package/src/api/middlewares/authValidation.middleware.ts +160 -0
  514. package/src/api/middlewares/pagination.middleware.ts +67 -0
  515. package/src/api/middlewares/socketAuth.middleware.ts +136 -0
  516. package/src/api/plugins/header.plugin.ts +15 -0
  517. package/src/api/plugins/logger.plugin.ts +44 -0
  518. package/src/api/plugins/proxy.plugin.ts +255 -0
  519. package/src/api/plugins/socket.plugin.ts +28 -0
  520. package/src/api/plugins/system.plugin.ts +48 -0
  521. package/src/api/plugins/useragent.plugin.ts +19 -0
  522. package/src/api/routes/api.routes.ts +10 -0
  523. package/src/api/routes/auth.routes.ts +56 -0
  524. package/src/api/routes/backup.routes.ts +28 -0
  525. package/src/api/routes/cameras.routes.ts +281 -0
  526. package/src/api/routes/config.routes.ts +66 -0
  527. package/src/api/routes/files.routes.ts +15 -0
  528. package/src/api/routes/frameWorkers.routes.ts +39 -0
  529. package/src/api/routes/index.ts +37 -0
  530. package/src/api/routes/plugins.routes.ts +420 -0
  531. package/src/api/routes/system.routes.ts +101 -0
  532. package/src/api/routes/users.routes.ts +167 -0
  533. package/src/api/schemas/backup.schema.ts +112 -0
  534. package/src/api/schemas/cameras.schema.ts +479 -0
  535. package/src/api/schemas/config.schema.ts +38 -0
  536. package/src/api/schemas/go2rtc.schema.ts +189 -0
  537. package/src/api/schemas/plugins.schema.ts +126 -0
  538. package/src/api/schemas/storage.schema.ts +11 -0
  539. package/src/api/schemas/system.schema.ts +45 -0
  540. package/src/api/schemas/users.schema.ts +185 -0
  541. package/src/api/services/auth.service.ts +210 -0
  542. package/src/api/services/backup.service.ts +144 -0
  543. package/src/api/services/cameras.service.ts +671 -0
  544. package/src/api/services/plugins.service.ts +470 -0
  545. package/src/api/services/system.service.ts +85 -0
  546. package/src/api/services/users.service.ts +276 -0
  547. package/src/api/types/index.ts +675 -0
  548. package/src/api/utils/cert.ts +254 -0
  549. package/src/api/utils/constants.ts +17 -0
  550. package/src/api/utils/fetch.ts +21 -0
  551. package/src/api/utils/moveFiles.ts +45 -0
  552. package/src/api/utils/parse.ts +17 -0
  553. package/src/api/websocket/index.ts +110 -0
  554. package/src/api/websocket/nsp/logs.ts +240 -0
  555. package/src/api/websocket/nsp/main.ts +27 -0
  556. package/src/api/websocket/nsp/metrics.ts +301 -0
  557. package/src/api/websocket/nsp/notifications.ts +43 -0
  558. package/src/api/websocket/nsp/plugins.ts +37 -0
  559. package/src/api/websocket/nsp/server.ts +220 -0
  560. package/src/api/websocket/nsp/status.ts +77 -0
  561. package/src/api/websocket/types.ts +55 -0
  562. package/src/api.ts +163 -0
  563. package/src/camera/classes.ts +32 -0
  564. package/src/camera/controller.ts +579 -0
  565. package/src/camera/device.ts +422 -0
  566. package/src/camera/frameWorker.ts +403 -0
  567. package/src/camera/index.ts +679 -0
  568. package/src/camera/interfaces.ts +95 -0
  569. package/src/camera/iou.ts +153 -0
  570. package/src/camera/polygon.ts +226 -0
  571. package/src/camera/python/__init__.py +0 -0
  572. package/src/camera/python/__pycache__/__init__.cpython-311.pyc +0 -0
  573. package/src/camera/python/__pycache__/classes.cpython-311.pyc +0 -0
  574. package/src/camera/python/__pycache__/delegate_controller.cpython-311.pyc +0 -0
  575. package/src/camera/python/__pycache__/interfaces.cpython-311.pyc +0 -0
  576. package/src/camera/python/__pycache__/iou.cpython-310.pyc +0 -0
  577. package/src/camera/python/__pycache__/iou.cpython-311.pyc +0 -0
  578. package/src/camera/python/__pycache__/iou2.cpython-310.pyc +0 -0
  579. package/src/camera/python/__pycache__/polygon.cpython-311.pyc +0 -0
  580. package/src/camera/python/__pycache__/typings.cpython-311.pyc +0 -0
  581. package/src/camera/python/__pycache__/video_frame.cpython-311.pyc +0 -0
  582. package/src/camera/python/classes.py +41 -0
  583. package/src/camera/python/interfaces.py +130 -0
  584. package/src/camera/python/iou.py +158 -0
  585. package/src/camera/python/polygon.py +230 -0
  586. package/src/camera/python/test/__pycache__/polygon.cpython-310.pyc +0 -0
  587. package/src/camera/python/test/iou_test.py +799 -0
  588. package/src/camera/python/test/polygon.py +238 -0
  589. package/src/camera/python/test/polygon_test.py +256 -0
  590. package/src/camera/python/test/polygon_test2.py +484 -0
  591. package/src/camera/python/typings.py +50 -0
  592. package/src/camera/python/video_frame.py +143 -0
  593. package/src/camera/session.ts +192 -0
  594. package/src/camera/streaming/fmp4-session.ts +390 -0
  595. package/src/camera/streaming/peer-connection.ts +273 -0
  596. package/src/camera/streaming/rtsp-session.ts +331 -0
  597. package/src/camera/streaming/webrtc-connection.ts +260 -0
  598. package/src/camera/streaming/werift-session.ts +317 -0
  599. package/src/camera/test/iou_test.ts +761 -0
  600. package/src/camera/test/polygon.test.ts +611 -0
  601. package/src/camera/test/polygon_test.ts +210 -0
  602. package/src/camera/types.ts +48 -0
  603. package/src/camera/utils.ts +489 -0
  604. package/src/camera/videoFrame.ts +123 -0
  605. package/src/cloud/index.ts +61 -0
  606. package/src/cloud/remote/cloudflare.ts +18 -0
  607. package/src/cloud/remote/upnp.ts +18 -0
  608. package/src/cloud/remote/utils.ts +24 -0
  609. package/src/cloud/types.ts +16 -0
  610. package/src/decoder/child.ts +883 -0
  611. package/src/decoder/imageUtils.ts +275 -0
  612. package/src/decoder/manager.ts +251 -0
  613. package/src/decoder/python/__init__.py +0 -0
  614. package/src/decoder/python/__pycache__/__init__.cpython-311.pyc +0 -0
  615. package/src/decoder/python/__pycache__/image_utils.cpython-311.pyc +0 -0
  616. package/src/decoder/python/__pycache__/typings.cpython-311.pyc +0 -0
  617. package/src/decoder/python/__pycache__/utils.cpython-311.pyc +0 -0
  618. package/src/decoder/python/child.py +903 -0
  619. package/src/decoder/python/image_utils.py +196 -0
  620. package/src/decoder/python/pool.py +45 -0
  621. package/src/decoder/python/test/group.py +62 -0
  622. package/src/decoder/python/test/motion.mp4 +0 -0
  623. package/src/decoder/python/test/motion2.mp4 +0 -0
  624. package/src/decoder/python/test/opencl.cl +70 -0
  625. package/src/decoder/python/test/opencl2.cl +130 -0
  626. package/src/decoder/python/test/test.py +427 -0
  627. package/src/decoder/python/test/test1.jpg +0 -0
  628. package/src/decoder/python/test/test1_resized.jpg +0 -0
  629. package/src/decoder/python/test/test2.jpg +0 -0
  630. package/src/decoder/python/test/test2.py +451 -0
  631. package/src/decoder/python/test/test2_resized.jpg +0 -0
  632. package/src/decoder/python/test/test3.jpg +0 -0
  633. package/src/decoder/python/test/utils.py +50 -0
  634. package/src/decoder/python/typings.py +57 -0
  635. package/src/decoder/python/utils.py +70 -0
  636. package/src/decoder/test/child.ts +117 -0
  637. package/src/decoder/test/ffmpeg.ts +371 -0
  638. package/src/decoder/test/test.ts +182 -0
  639. package/src/decoder/types.ts +27 -0
  640. package/src/decoder/utils.ts +64 -0
  641. package/src/decoder/wasm/asconfig.json +28 -0
  642. package/src/decoder/wasm/assembly/console.ts +1 -0
  643. package/src/decoder/wasm/assembly/index.ts +890 -0
  644. package/src/decoder/wasm/build/decoder.d.ts +43 -0
  645. package/src/decoder/wasm/build/decoder.js +108 -0
  646. package/src/decoder/wasm/build/decoder.wasm +0 -0
  647. package/src/decoder/wasm/tsconfig.json +5 -0
  648. package/src/decoder/worker.ts +113 -0
  649. package/src/go2rtc/index.ts +324 -0
  650. package/src/go2rtc/types.ts +88 -0
  651. package/src/main.ts +267 -0
  652. package/src/manager/coreManager.ts +78 -0
  653. package/src/manager/deviceManager.ts +132 -0
  654. package/src/manager/types.ts +17 -0
  655. package/src/plugins/index.ts +443 -0
  656. package/src/plugins/plugin.ts +177 -0
  657. package/src/plugins/runtime/base.ts +282 -0
  658. package/src/plugins/runtime/index.ts +15 -0
  659. package/src/plugins/runtime/node/child.ts +193 -0
  660. package/src/plugins/runtime/node/index.ts +67 -0
  661. package/src/plugins/runtime/node/plugin.ts +122 -0
  662. package/src/plugins/runtime/node/pluginApi.ts +27 -0
  663. package/src/plugins/runtime/node/proxy/cameraDevice.ts +299 -0
  664. package/src/plugins/runtime/node/proxy/coreManager.ts +128 -0
  665. package/src/plugins/runtime/node/proxy/deviceManager.ts +187 -0
  666. package/src/plugins/runtime/node/storage.ts +312 -0
  667. package/src/plugins/runtime/node/storageController.ts +91 -0
  668. package/src/plugins/runtime/python/__init__.py +0 -0
  669. package/src/plugins/runtime/python/__pycache__/__init__.cpython-311.pyc +0 -0
  670. package/src/plugins/runtime/python/__pycache__/camera_storage.cpython-311.pyc +0 -0
  671. package/src/plugins/runtime/python/__pycache__/config_service.cpython-311.pyc +0 -0
  672. package/src/plugins/runtime/python/__pycache__/constants.cpython-311.pyc +0 -0
  673. package/src/plugins/runtime/python/__pycache__/ipc.cpython-311.pyc +0 -0
  674. package/src/plugins/runtime/python/__pycache__/logger.cpython-311.pyc +0 -0
  675. package/src/plugins/runtime/python/__pycache__/message_queue.cpython-311.pyc +0 -0
  676. package/src/plugins/runtime/python/__pycache__/namespaces.cpython-311.pyc +0 -0
  677. package/src/plugins/runtime/python/__pycache__/plugin.cpython-311.pyc +0 -0
  678. package/src/plugins/runtime/python/__pycache__/plugin_api.cpython-311.pyc +0 -0
  679. package/src/plugins/runtime/python/__pycache__/plugin_logger.cpython-311.pyc +0 -0
  680. package/src/plugins/runtime/python/__pycache__/proxy_utils.cpython-311.pyc +0 -0
  681. package/src/plugins/runtime/python/__pycache__/schema.cpython-311.pyc +0 -0
  682. package/src/plugins/runtime/python/__pycache__/storage.cpython-311.pyc +0 -0
  683. package/src/plugins/runtime/python/__pycache__/storage_controller.cpython-311.pyc +0 -0
  684. package/src/plugins/runtime/python/__pycache__/typings.cpython-311.pyc +0 -0
  685. package/src/plugins/runtime/python/child.py +248 -0
  686. package/src/plugins/runtime/python/index.ts +73 -0
  687. package/src/plugins/runtime/python/namespaces.py +101 -0
  688. package/src/plugins/runtime/python/plugin.py +155 -0
  689. package/src/plugins/runtime/python/plugin_api.py +29 -0
  690. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-310.pyc +0 -0
  691. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-311.pyc +0 -0
  692. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-38.pyc +0 -0
  693. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-39.pyc +0 -0
  694. package/src/plugins/runtime/python/proxy/__pycache__/constants.cpython-311.pyc +0 -0
  695. package/src/plugins/runtime/python/proxy/__pycache__/constants.cpython-39.pyc +0 -0
  696. package/src/plugins/runtime/python/proxy/__pycache__/core_manager.cpython-311.pyc +0 -0
  697. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-310.pyc +0 -0
  698. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-311.pyc +0 -0
  699. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-38.pyc +0 -0
  700. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-39.pyc +0 -0
  701. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-310.pyc +0 -0
  702. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-311.pyc +0 -0
  703. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-38.pyc +0 -0
  704. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-39.pyc +0 -0
  705. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-310.pyc +0 -0
  706. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-311.pyc +0 -0
  707. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-38.pyc +0 -0
  708. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-39.pyc +0 -0
  709. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-310.pyc +0 -0
  710. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-311.pyc +0 -0
  711. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-38.pyc +0 -0
  712. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-39.pyc +0 -0
  713. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-310.pyc +0 -0
  714. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-311.pyc +0 -0
  715. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-38.pyc +0 -0
  716. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-39.pyc +0 -0
  717. package/src/plugins/runtime/python/proxy/camera_device.py +1732 -0
  718. package/src/plugins/runtime/python/proxy/core_manager.py +126 -0
  719. package/src/plugins/runtime/python/proxy/device_manager.py +197 -0
  720. package/src/plugins/runtime/python/schema.py +99 -0
  721. package/src/plugins/runtime/python/storage.py +353 -0
  722. package/src/plugins/runtime/python/storage_controller.py +102 -0
  723. package/src/plugins/runtime/python/typings.py +195 -0
  724. package/src/plugins/schema.ts +472 -0
  725. package/src/plugins/types.ts +60 -0
  726. package/src/plugins/worker.ts +250 -0
  727. package/src/rpc/index.ts +149 -0
  728. package/src/rpc/namespaces.ts +79 -0
  729. package/src/rpc/server.ts +422 -0
  730. package/src/rpc/types.ts +119 -0
  731. package/src/rpc/utils.ts +16 -0
  732. package/src/services/config/constants.ts +47 -0
  733. package/src/services/config/defaults.ts +57 -0
  734. package/src/services/config/index.ts +744 -0
  735. package/src/services/config/types.ts +211 -0
  736. package/src/services/logger/index.ts +96 -0
  737. package/src/types.ts +47 -0
  738. package/src/utils/path.ts +16 -0
  739. package/src/utils/pythonInstaller.ts +597 -0
  740. package/tsconfig.json +37 -0
  741. package/types/fastify.d.ts +14 -0
  742. package/updates.config.js +3 -0
  743. package/dist/interface/@intlify.Do1-T-x0.0.0.48.js +0 -15
  744. package/dist/interface/@mdi.CbjpODVZ.0.0.48.js +0 -1
  745. package/dist/interface/@tanstack.B7j0RsPf.0.0.48.js +0 -1
  746. package/dist/interface/@vue.DRcZ6uZO.0.0.48.js +0 -17
  747. package/dist/interface/@vueform.B6V1sb13.0.0.48.js +0 -1
  748. package/dist/interface/@vueuse.C65DwZuy.0.0.48.js +0 -1
  749. package/dist/interface/Account.SjrtJ2E-.0.0.48.js +0 -1
  750. package/dist/interface/Adminpanel.2cW-TEJR.0.0.48.js +0 -2
  751. package/dist/interface/Appearance.BCjcy9_6.0.0.48.js +0 -1
  752. package/dist/interface/Backup.DPajlOJy.0.0.48.js +0 -1
  753. package/dist/interface/Camera.DL2k_Ka4.0.0.48.js +0 -1
  754. package/dist/interface/Cameras.Dfo9jtEF.0.0.48.js +0 -1
  755. package/dist/interface/Camview.D65EW1lh.0.0.48.js +0 -1
  756. package/dist/interface/Config.CN7-dqYR.0.0.48.js +0 -1
  757. package/dist/interface/Console.CR82nS2O.0.0.48.js +0 -4
  758. package/dist/interface/FirstSteps.CB5GkCCn.0.0.48.js +0 -1
  759. package/dist/interface/NewCamera.DZmwbpbF.0.0.48.js +0 -448
  760. package/dist/interface/Plugin.CFkM1eRw.0.0.48.js +0 -1
  761. package/dist/interface/Plugins.LYJU4g0H.0.0.48.js +0 -1
  762. package/dist/interface/Recordings.BxmCtPDw.0.0.48.js +0 -1
  763. package/dist/interface/Recordings.UIpgTeCh.0.0.48.js +0 -1
  764. package/dist/interface/Settings.BxGxkxQ-.0.0.48.js +0 -1
  765. package/dist/interface/System.HucLWbQx.0.0.48.js +0 -4
  766. package/dist/interface/User.BB8i1tjm.0.0.48.js +0 -1
  767. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang._4BVZ2To.0.0.48.js +0 -2
  768. package/dist/interface/VConsole.wv8VCqg-.0.0.48.js +0 -1
  769. package/dist/interface/VPlayer.DyeXezbn.0.0.48.js +0 -4
  770. package/dist/interface/VPluginCard.B_Gjjpzq.0.0.48.js +0 -4
  771. package/dist/interface/ace-builds.DPqPJOIH.0.0.48.js +0 -970
  772. package/dist/interface/apexcharts.C_nN6CT2.0.0.48.js +0 -838
  773. package/dist/interface/assets/@vueform.0.0.48.CroAHJs8.css +0 -1
  774. package/dist/interface/assets/@xterm.0.0.48.CFbL2ovg.css +0 -32
  775. package/dist/interface/assets/Account.0.0.48.Bnw6Lbtd.css +0 -1
  776. package/dist/interface/assets/Adminpanel.0.0.48.a3t1v3MB.css +0 -1
  777. package/dist/interface/assets/Camera.0.0.48.Br9s6-lM.css +0 -1
  778. package/dist/interface/assets/Cameras.0.0.48.Buf1Dgce.css +0 -1
  779. package/dist/interface/assets/Camview.0.0.48.B7Cja2ry.css +0 -1
  780. package/dist/interface/assets/Config.0.0.48.DNGo2krN.css +0 -1
  781. package/dist/interface/assets/Console.0.0.48.Bh8l9QnM.css +0 -1
  782. package/dist/interface/assets/FirstSteps.0.0.48.Mu8VPl13.css +0 -1
  783. package/dist/interface/assets/NewCamera.0.0.48.B36nuN1T.css +0 -1
  784. package/dist/interface/assets/Plugin.0.0.48.YIpAU1_n.css +0 -1
  785. package/dist/interface/assets/Plugins.0.0.48.DXSoO9M1.css +0 -1
  786. package/dist/interface/assets/Settings.0.0.48.CVmui2kE.css +0 -1
  787. package/dist/interface/assets/User.0.0.48.BiGtIFqt.css +0 -1
  788. package/dist/interface/assets/VConsole.0.0.48.BCqKHpmJ.css +0 -1
  789. package/dist/interface/assets/VPlayer.0.0.48.C4lm2rVR.css +0 -1
  790. package/dist/interface/assets/VPluginCard.0.0.48.C8Lj6X-J.css +0 -1
  791. package/dist/interface/assets/main.0.0.48.OJngntGT.css +0 -1
  792. package/dist/interface/assets/vue3-toastify.0.0.48.DHXAGmwn.css +0 -1
  793. package/dist/interface/assets/vuetify.0.0.48.Dua9WSqa.css +0 -5
  794. package/dist/interface/axios.DIsA03vz.0.0.48.js +0 -6
  795. package/dist/interface/backup.Bk4AzYLT.0.0.48.js +0 -1
  796. package/dist/interface/dnd-core.Dmh1w8XK.0.0.48.js +0 -1
  797. package/dist/interface/engine.io-client.DRzsVXts.0.0.48.js +0 -1
  798. package/dist/interface/fast-deep-equal.BuOg6xuK.0.0.48.js +0 -1
  799. package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
  800. package/dist/interface/highlight.js.Cg6c_cCL.0.0.48.js +0 -2
  801. package/dist/interface/hookable.B8xFkYCm.0.0.48.js +0 -1
  802. package/dist/interface/linkify-it.D_vNtISo.0.0.48.js +0 -1
  803. package/dist/interface/main.mlm94TYK.0.0.48.js +0 -4
  804. package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.48.js +0 -1
  805. package/dist/interface/pinia.BL6apvtP.0.0.48.js +0 -5
  806. package/dist/interface/plugins.Ch_0cv_L.0.0.48.js +0 -1
  807. package/dist/interface/react-dnd-touch-backend.BVVlM5Mg.0.0.48.js +0 -1
  808. package/dist/interface/rxjs.MDPuHaHC.0.0.48.js +0 -3
  809. package/dist/interface/socket.io-client.Bc7OYr1V.0.0.48.js +0 -1
  810. package/dist/interface/socket.io-parser.DPrtWC9i.0.0.48.js +0 -1
  811. package/dist/interface/system.C-onsBEc.0.0.48.js +0 -1
  812. package/dist/interface/types.Cz9TaZAP.0.0.48.js +0 -1
  813. package/dist/interface/utils.mAKpSMLY.0.0.48.js +0 -1
  814. package/dist/interface/uuid.Ch9TGLTe.0.0.48.js +0 -1
  815. package/dist/interface/vee-validate.Dzj4dBd6.0.0.48.js +0 -5
  816. package/dist/interface/vue-i18n.DtBWXzdw.0.0.48.js +0 -5
  817. package/dist/interface/vue-inline-svg.CPcaXOwr.0.0.48.js +0 -1
  818. package/dist/interface/vue-router.S61oR9AT.0.0.48.js +0 -5
  819. package/dist/interface/vue3-apexcharts.Dvg57mTV.0.0.48.js +0 -1
  820. package/dist/interface/vue3-dnd.CA2xeH6p.0.0.48.js +0 -1
  821. package/dist/interface/vue3-toastify.nL-I4C--.0.0.48.js +0 -1
  822. package/dist/interface/vuetify.DlOnqSL1.0.0.48.js +0 -5
  823. package/dist/interface/zod.bkdEMpUp.0.0.48.js +0 -1
  824. package/dist/server/src/api/utils/cameraSource.d.ts +0 -6
  825. package/dist/server/src/api/utils/cameraSource.js +0 -51
  826. package/dist/server/src/api/utils/cameraSource.js.map +0 -1
  827. package/dist/server/src/api/websocket/go2rtc.d.ts +0 -21
  828. package/dist/server/src/api/websocket/go2rtc.js +0 -88
  829. package/dist/server/src/api/websocket/go2rtc.js.map +0 -1
  830. package/dist/server/src/api/websocket/nsp/proxy.d.ts +0 -27
  831. package/dist/server/src/api/websocket/nsp/proxy.js +0 -127
  832. package/dist/server/src/api/websocket/nsp/proxy.js.map +0 -1
  833. package/dist/server/src/nats/index.d.ts +0 -40
  834. package/dist/server/src/nats/index.js +0 -164
  835. package/dist/server/src/nats/index.js.map +0 -1
  836. package/dist/server/src/nats/proxy/cameraDevice.d.ts +0 -22
  837. package/dist/server/src/nats/proxy/cameraDevice.js +0 -249
  838. package/dist/server/src/nats/proxy/cameraDevice.js.map +0 -1
  839. package/dist/server/src/nats/proxy/coreManager.d.ts +0 -14
  840. package/dist/server/src/nats/proxy/coreManager.js +0 -68
  841. package/dist/server/src/nats/proxy/coreManager.js.map +0 -1
  842. package/dist/server/src/nats/proxy/deviceManager.d.ts +0 -14
  843. package/dist/server/src/nats/proxy/deviceManager.js +0 -101
  844. package/dist/server/src/nats/proxy/deviceManager.js.map +0 -1
  845. package/dist/server/src/nats/server.js.map +0 -1
  846. package/dist/server/src/nats/types.d.ts +0 -18
  847. package/dist/server/src/nats/utils.js.map +0 -1
  848. /package/dist/interface/assets/{Backup.0.0.48.CX0rT0QJ.css → SettingsBackup.CX0rT0QJ.0.0.50-internal.0.css} +0 -0
  849. /package/dist/interface/assets/{highlight.0.0.48.Ch2EwETz.css → highlight.Ch2EwETz.0.0.50-internal.0.css} +0 -0
  850. /package/dist/interface/assets/{logo-256.0.0.48.BCQk9H1-.png → logo-256.BCQk9H1-.0.0.50-internal.0.png} +0 -0
  851. /package/dist/interface/assets/{logo-512.0.0.48.DLKVOU2S.png → logo-512.DLKVOU2S.0.0.50-internal.0.png} +0 -0
  852. /package/dist/interface/assets/{logo.0.0.48.DmEiRk0z.png → logo.DmEiRk0z.0.0.50-internal.0.png} +0 -0
  853. /package/dist/interface/assets/{mode-json.0.0.48.Br7xisR1.js → mode-json.Br7xisR1.0.0.50-internal.0.js} +0 -0
  854. /package/dist/interface/assets/{mode-yaml.0.0.48.CIYL8U3d.js → mode-yaml.CIYL8U3d.0.0.50-internal.0.js} +0 -0
  855. /package/dist/interface/{@babel.l0sNRNKZ.0.0.48.js → js/@babel.l0sNRNKZ.0.0.50-internal.0.js} +0 -0
  856. /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.48.js → js/@react-dnd.CcwRs9xb.0.0.50-internal.0.js} +0 -0
  857. /package/dist/interface/{@socket.io.Dkula2eQ.0.0.48.js → js/@socket.io.Dkula2eQ.0.0.50-internal.0.js} +0 -0
  858. /package/dist/interface/{birpc.l0sNRNKZ.0.0.48.js → js/birpc.l0sNRNKZ.0.0.50-internal.0.js} +0 -0
  859. /package/dist/interface/{compare-versions.DqEOhma6.0.0.48.js → js/compare-versions.DqEOhma6.0.0.50-internal.0.js} +0 -0
  860. /package/dist/interface/{dijkstrajs.C00ieaqj.0.0.48.js → js/dijkstrajs.C00ieaqj.0.0.50-internal.0.js} +0 -0
  861. /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.48.js → js/engine.io-parser.BiEtp6m2.0.0.50-internal.0.js} +0 -0
  862. /package/dist/interface/{entities.C20TfXL6.0.0.48.js → js/entities.C20TfXL6.0.0.50-internal.0.js} +0 -0
  863. /package/dist/interface/{ev-emitter.X5f1qa-c.0.0.48.js → js/ev-emitter.X5f1qa-c.0.0.50-internal.0.js} +0 -0
  864. /package/dist/interface/{get-size.D1dS-IaP.0.0.48.js → js/get-size.D1dS-IaP.0.0.50-internal.0.js} +0 -0
  865. /package/dist/interface/{vue.l0sNRNKZ.0.0.48.js → js/hookable.l0sNRNKZ.0.0.50-internal.0.js} +0 -0
  866. /package/dist/interface/{mdurl.k9Sl0PQj.0.0.48.js → js/mdurl.k9Sl0PQj.0.0.50-internal.0.js} +0 -0
  867. /package/dist/interface/{punycode.js.Dj65hjkv.0.0.48.js → js/punycode.js.Dj65hjkv.0.0.50-internal.0.js} +0 -0
  868. /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.48.js → js/react-dnd-html5-backend.1HQjlkwI.0.0.50-internal.0.js} +0 -0
  869. /package/dist/interface/{redux.BFxtlG_c.0.0.48.js → js/redux.BFxtlG_c.0.0.50-internal.0.js} +0 -0
  870. /package/dist/interface/{tslib.9k7AwCpt.0.0.48.js → js/tslib.9k7AwCpt.0.0.50-internal.0.js} +0 -0
  871. /package/dist/interface/{uc.micro.kMc2yuuw.0.0.48.js → js/uc.micro.kMc2yuuw.0.0.50-internal.0.js} +0 -0
  872. /package/dist/server/src/{nats → decoder}/types.js +0 -0
  873. /package/dist/server/src/{nats → rpc}/utils.js +0 -0
@@ -1,448 +0,0 @@
1
- import{C as xe,c as ke,_ as Se}from"./VPlayer.DyeXezbn.0.0.48.js";import{j as Te,e as Pe,f as Re}from"./main.mlm94TYK.0.0.48.js";import{G as Ae,r as v,D as Ie,c as Ce,w as He,b as d,d as k,P as n,ab as a,f as u,a9 as l,u as e,a7 as h,g as Y,i as G,m as H,Q as K,ad as J,aa as P,p as _,k as M,ac as Ve}from"./@vue.DRcZ6uZO.0.0.48.js";import{H as A,t as je,y as Ee,j as Oe,p as Ge}from"./highlight.js.Cg6c_cCL.0.0.48.js";import{e as q,s as Me,E as Ue,M as $e,X,Y as Le,Z as We}from"./@mdi.CbjpODVZ.0.0.48.js";import{i as De}from"./@vueuse.C65DwZuy.0.0.48.js";import{M as ze}from"./markdown-it.DU7e183f.0.0.48.js";import{F as I,a as Be}from"./vee-validate.Dzj4dBd6.0.0.48.js";import{s as Fe}from"./utils.mAKpSMLY.0.0.48.js";import{a as Ne}from"./vue-router.S61oR9AT.0.0.48.js";import{b as S,e as x,K as Q,L as Z,M as ee,N as te,c as oe,z as L,l as Ye,O as Ke,a as ae}from"./vuetify.DlOnqSL1.0.0.48.js";import"./draggabilly.PrP7w5-3.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";import"./get-size.D1dS-IaP.0.0.48.js";import"./unidragger.3FW7TOUy.0.0.48.js";import"./ev-emitter.X5f1qa-c.0.0.48.js";import"./vue3-toastify.nL-I4C--.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./qrcode.Bdg1zKx6.0.0.48.js";import"./dijkstrajs.C00ieaqj.0.0.48.js";import"./pinia.BL6apvtP.0.0.48.js";import"./plugins.Ch_0cv_L.0.0.48.js";import"./VConsole.wv8VCqg-.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./mdurl.k9Sl0PQj.0.0.48.js";import"./uc.micro.kMc2yuuw.0.0.48.js";import"./entities.C20TfXL6.0.0.48.js";import"./linkify-it.D_vNtISo.0.0.48.js";import"./punycode.js.Dj65hjkv.0.0.48.js";const ne=["bubble://","dvrip://","echo:","exec:","expr:","ffmpeg:","gopro://","hass:","homekit://","http://","https://","httpx://","isapi://","ivideon:","kasa://","nest:","onvif://","roborock://","rtmp://","rtsp://","rtspx://","tapo://","tcp://","webrtc:","webtorrent:"],Je=["#backchannel=0","#header=","#media=audio","#media=video","#timeout=10","#timeout=20","#timeout=30","#transport="],se=["#audio=aac","#audio=aac/16000","#audio=mp3","#audio=opus","#audio=pcm","#audio=pcm/8000","#audio=pcm/16000","#audio=pcm/48000","#audio=pcma","#audio=pcma/8000","#audio=pcma/16000","#audio=pcma/48000","#audio=pcml","#audio=pcml/8000","#audio=pcml/44100","#audio=pcmu","#audio=pcmu/8000","#audio=pcmu/16000","#audio=pcmu/48000","#drawtext","#hardware","#hardware=cuda","#hardware=dxva2","#hardware=rkmpp","#hardware=v4l2m2m","#hardware=vaapi","#hardware=videotoolbox","#height=","#raw=","#rotate=-90","#rotate=90","#rotate=180","#rotate=270","#video=copy","#video=h264","#video=h265","#video=mjpeg","#width="],qe=["client_id=","client_private=","device_id=","device_public="],Xe=["#header="],Qe=["client_id=","client_secret=","refresh_token=","project_id=","device_id="],Ze=["#client_id=","#format=openipc","#format=wyze","#format=kinesis","#ice_servers="],et="#### Source: Bubble\n\nOther names: [ESeeCloud](http://www.eseecloud.com/), [dvr163](http://help.dvr163.com/).\n\n- you can skip `username`, `password`, `port`, `ch` and `stream` if they are default\n- setup separate streams for different channels and streams\n\n```yaml\nstreams:\n camera1: bubble://username:password@192.168.1.123:34567/bubble/live?ch=0&stream=0\n```\n\n_Source: [Go2Rtc Bubble](https://github.com/AlexxIT/go2rtc#source-bubble)_\n",tt="#### Source: DVRIP\n\nOther names: DVR-IP, NetSurveillance, Sofia protocol (NETsurveillance ActiveX plugin XMeye SDK).\n\n- you can skip `username`, `password`, `port`, `channel` and `subtype` if they are default\n- setup separate streams for different channels\n- use `subtype=0` for Main stream, and `subtype=1` for Extra1 stream\n- only the TCP protocol is supported\n\n```yaml\nstreams:\n only_stream: dvrip://username:password@192.168.1.123:34567?channel=0&subtype=0\n only_tts: dvrip://username:password@192.168.1.123:34567?backchannel=1\n two_way_audio:\n - dvrip://username:password@192.168.1.123:34567?channel=0&subtype=0\n - dvrip://username:password@192.168.1.123:34567?backchannel=1\n```\n\n_Source: [Go2Rtc DVRIP](https://github.com/AlexxIT/go2rtc#source-dvrip)_\n",ot=`#### Source: Echo
2
-
3
- Some sources may have a dynamic link. And you will need to get it using a bash or python script. Your script should echo a link to the source. RTSP, FFmpeg or any of the [supported sources](https://github.com/AlexxIT/go2rtc#module-streams).
4
-
5
- **Docker** and **Hass Add-on** users has preinstalled \`python3\`, \`curl\`, \`jq\`.
6
- Check examples in [wiki](https://github.com/AlexxIT/go2rtc/wiki/Source-Echo-examples).
7
-
8
- \`\`\`yaml
9
- streams:
10
- apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
11
- \`\`\`
12
-
13
- _Source: [Go2Rtc Echo](https://github.com/AlexxIT/go2rtc#source-echo)_
14
- `,at=`#### Source: Exec
15
-
16
- Exec source can run any external application and expect data from it. Two transports are supported - **pipe** and **RTSP**.
17
-
18
- If you want to use **RTSP** transport - the command must contain the \`{output}\` argument in any place. On launch, it will be replaced by the local address of the RTSP server.
19
-
20
- **pipe** reads data from app stdout in different formats: **MJPEG**, **H.264/H.265 bitstream**, **MPEG-TS**.
21
-
22
- The source can be used with:
23
-
24
- - [FFmpeg](https://ffmpeg.org/) - go2rtc ffmpeg source just a shortcut to exec source
25
- - [GStreamer](https://gstreamer.freedesktop.org/)
26
- - [Raspberry Pi Cameras](https://www.raspberrypi.com/documentation/computers/camera_software.html)
27
- - any your own software
28
-
29
- \`\`\`yaml
30
- streams:
31
- stream: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {output}
32
- picam_h264: exec:libcamera-vid -t 0 --inline -o -
33
- picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o -
34
- \`\`\`
35
-
36
- _Source: [Go2Rtc Exec](https://github.com/AlexxIT/go2rtc#source-exec)_
37
- `,nt=`#### Source: Expr
38
-
39
- [Expr](https://github.com/antonmedv/expr) - expression language and expression evaluation for Go.
40
-
41
- - [language definition](https://expr.medv.io/docs/Language-Definition) - takes best from JS, Python, Jinja2 syntax
42
- - your expression should return a link of any supported source
43
- - expression supports multiple operation, but:
44
- - all operations must be separated by a semicolon
45
- - all operations, except the last one, must declare a new variable (\`let s = "abc";\`)
46
- - the last operation should return a string
47
- - go2rtc supports additional functions:
48
- - \`fetch\` - JS-like HTTP requests
49
- - \`match\` - JS-like RegExp queries
50
-
51
- ## Examples
52
-
53
- **Two way audio for Dahua VTO**
54
-
55
- \`\`\`yaml
56
- streams:
57
- dahua_vto: |
58
- expr: let host = "admin:password@192.168.1.123";
59
- fetch("http://"+host+"/cgi-bin/configManager.cgi?action=setConfig&Encode[0].MainFormat[0].Audio.Compression=G.711A&Encode[0].MainFormat[0].Audio.Frequency=8000").ok
60
- ? "rtsp://"+host+"/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif" : ""
61
- \`\`\`
62
-
63
- **dom.ru**
64
-
65
- You can get credentials via:
66
-
67
- - https://github.com/alexmorbo/domru (file \`/share/domru/accounts\`)
68
- - https://github.com/ad/domru
69
-
70
- \`\`\`yaml
71
- streams:
72
- dom_ru: |
73
- expr: let camera = "99999999"; let token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; let operator = 99;
74
- fetch("https://myhome.novotelecom.ru/rest/v1/forpost/cameras/"+camera+"/video", {
75
- headers: {Authorization: "Bearer "+token, Operator: operator}
76
- }).json().data.URL
77
- \`\`\`
78
-
79
- **Parse HLS files from Apple**
80
-
81
- Same example in two languages - python and expr.
82
-
83
- \`\`\`yaml
84
- streams:
85
- example_python: |
86
- echo:python -c 'from urllib.request import urlopen; import re
87
-
88
- # url1 = "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8"
89
- html1 = urlopen("https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html").read().decode("utf-8")
90
- url1 = re.search(r"https.+?m3u8", html1)[0]
91
-
92
- # url2 = "gear1/prog_index.m3u8"
93
- html2 = urlopen(url1).read().decode("utf-8")
94
- url2 = re.search(r"^[a-z0-1/_]+\\.m3u8$", html2, flags=re.MULTILINE)[0]
95
-
96
- # url3 = "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear1/prog_index.m3u8"
97
- url3 = url1[:url1.rindex("/")+1] + url2
98
-
99
- print("ffmpeg:" + url3 + "#video=copy")'
100
-
101
- example_expr: |
102
- expr:
103
-
104
- let html1 = fetch("https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html").text;
105
- let url1 = match(html1, "https.+?m3u8")[0];
106
-
107
- let html2 = fetch(url1).text;
108
- let url2 = match(html2, "^[a-z0-1/_]+\\\\.m3u8$", "m")[0];
109
-
110
- let url3 = url1[:lastIndexOf(url1, "/")+1] + url2;
111
-
112
- "ffmpeg:" + url3 + "#video=copy"
113
- \`\`\`
114
-
115
- ## Comparsion
116
-
117
- | expr | python | js |
118
- | ---------------------------- | -------------------------- | ------------------------------ |
119
- | let x = 1; | x = 1 | let x = 1 |
120
- | {a: 1, b: 2} | {"a": 1, "b": 2} | {a: 1, b: 2} |
121
- | let r = fetch(url, {method}) | r = request(method, url) | r = await fetch(url, {method}) |
122
- | r.ok | r.ok | r.ok |
123
- | r.status | r.status_code | r.status |
124
- | r.text | r.text | await r.text() |
125
- | r.json() | r.json() | await r.json() |
126
- | r.headers | r.headers | r.headers |
127
- | let m = match(text, "abc") | m = re.search("abc", text) | let m = text.match(/abc/) |
128
- `,st="#### Source: FFmpeg\n\nYou can get any stream or file or device via FFmpeg and push it to go2rtc. The app will automatically start FFmpeg with the proper arguments when someone starts watching the stream.\n\n- FFmpeg preistalled for **Docker** and **Hass Add-on** users\n- **Hass Add-on** users can target files from [/media](https://www.home-assistant.io/more-info/local-media/setup-media/) folder\n\nFormat: `ffmpeg:{input}#{param1}#{param2}#{param3}`. Examples:\n\n```yaml\nstreams:\n # [FILE] all tracks will be copied without transcoding codecs\n file1: ffmpeg:/media/BigBuckBunny.mp4\n\n # [FILE] video will be transcoded to H264, audio will be skipped\n file2: ffmpeg:/media/BigBuckBunny.mp4#video=h264\n\n # [FILE] video will be copied, audio will be transcoded to pcmu\n file3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu\n\n # [HLS] video will be copied, audio will be skipped\n hls: ffmpeg:https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy\n\n # [MJPEG] video will be transcoded to H264\n mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264\n\n # [RTSP] video with rotation, should be transcoded, so select H264\n rotate: ffmpeg:rtsp://rtsp:12345678@192.168.1.123/av_stream/ch0#video=h264#rotate=90\n```\n\nAll trascoding formats has [built-in templates](https://github.com/AlexxIT/go2rtc/blob/master/internal/ffmpeg/ffmpeg.go): `h264`, `h265`, `opus`, `pcmu`, `pcmu/16000`, `pcmu/48000`, `pcma`, `pcma/16000`, `pcma/48000`, `aac`, `aac/16000`.\n\nBut you can override them via YAML config. You can also add your own formats to config and use them with source params.\n\n```yaml\nffmpeg:\n bin: ffmpeg # path to ffmpeg binary\n h264: '-codec:v libx264 -g:v 30 -preset:v superfast -tune:v zerolatency -profile:v main -level:v 4.1'\n mycodec: '-any args that supported by ffmpeg...'\n myinput: '-fflags nobuffer -flags low_delay -timeout 5000000 -i {input}'\n myraw: '-ss 00:00:20'\n```\n\n- You can use go2rtc stream name as ffmpeg input (ex. `ffmpeg:camera1#video=h264`)\n- You can use `video` and `audio` params multiple times (ex. `#video=copy#audio=copy#audio=pcmu`)\n- You can use `rotate` param with `90`, `180`, `270` or `-90` values, important with transcoding (ex. `#video=h264#rotate=90`)\n- You can use `width` and/or `height` params, important with transcoding (ex. `#video=h264#width=1280`)\n- You can use `drawtext` to add a timestamp (ex. `drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black`)\n - This will greatly increase the CPU of the server, even with hardware acceleration\n- You can use `raw` param for any additional FFmpeg arguments (ex. `#raw=-vf transpose=1`)\n- You can use `input` param to override default input template (ex. `#input=rtsp/udp` will change RTSP transport from TCP to UDP+TCP)\n - You can use raw input value (ex. `#input=-timeout 5000000 -i {input}`)\n - You can add your own input templates\n\nRead more about [hardware acceleration](https://github.com/AlexxIT/go2rtc/wiki/Hardware-acceleration).\n\n**PS.** It is recommended to check the available hardware in the WebUI add page.\n\n<hr>\n\n#### Source: FFmpeg Device\n\nYou can get video from any USB-camera or Webcam as RTSP or WebRTC stream. This is part of FFmpeg integration.\n\n- check available devices in Web interface\n- `video_size` and `framerate` must be supported by your camera!\n- for Linux supported only video for now\n- for macOS you can stream Facetime camera or whole Desktop!\n- for macOS important to set right framerate\n\nFormat: `ffmpeg:device?{input-params}#{param1}#{param2}#{param3}`\n\n```yaml\nstreams:\n linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264\n windows_webcam: ffmpeg:device?video=0#video=h264\n macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma\n```\n\n**PS.** It is recommended to check the available devices in the WebUI add page.\n\n_Source: [Go2Rtc FFmpeg](https://github.com/AlexxIT/go2rtc#source-ffmpeg) & [Go2Rtc FFmpeg Device](https://github.com/AlexxIT/go2rtc#source-ffmpeg-device)_\n",rt=`#### Source: GoPro
129
-
130
- Supported models: HERO9, HERO10, HERO11, HERO12.
131
- Supported OS: Linux, Mac, Windows, [HassOS](https://www.home-assistant.io/installation/)
132
-
133
- The other camera models have different APIs. I will try to add them in the next versions.
134
-
135
- ## Config
136
-
137
- - USB-connected cameras create a new network interface in the system
138
- - Linux users do not need to install anything
139
- - Windows users should install the [network driver](https://community.gopro.com/s/article/GoPro-Webcam)
140
- - if the camera is detected but the stream does not start - you need to disable firewall
141
-
142
- 1. Discover camera address: WebUI > Add > GoPro
143
- 2. Add camera to config
144
-
145
- \`\`\`yaml
146
- streams:
147
- hero12: gopro://172.20.100.51
148
- \`\`\`
149
-
150
- ## Useful links
151
-
152
- - https://gopro.github.io/OpenGoPro/
153
-
154
- _Source: [Go2Rtc Hass](https://github.com/AlexxIT/go2rtc#source-hass)_
155
- `,it=`#### Source: Hass
156
-
157
- Support import camera links from [Home Assistant](https://www.home-assistant.io/) config files:
158
-
159
- - [Generic Camera](https://www.home-assistant.io/integrations/generic/), setup via GUI
160
- - [HomeKit Camera](https://www.home-assistant.io/integrations/homekit_controller/)
161
- - [ONVIF](https://www.home-assistant.io/integrations/onvif/)
162
- - [Roborock](https://github.com/humbertogontijo/homeassistant-roborock) vacuums with camera
163
-
164
- \`\`\`yaml
165
- hass:
166
- config: '/config' # skip this setting if you Hass Add-on user
167
-
168
- streams:
169
- generic_camera: hass:Camera1 # Settings > Integrations > Integration Name
170
- aqara_g3: hass:Camera-Hub-G3-AB12
171
- \`\`\`
172
-
173
- **WebRTC Cameras**
174
-
175
- Any cameras in WebRTC format are supported. But at the moment Home Assistant only supports some [Nest](https://www.home-assistant.io/integrations/nest/) cameras in this fomat.
176
-
177
- The Nest API only allows you to get a link to a stream for 5 minutes. So every 5 minutes the stream will be reconnected.
178
-
179
- \`\`\`yaml
180
- streams:
181
- # link to Home Assistant Supervised
182
- hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell
183
- # link to external Hass with Long-Lived Access Tokens
184
- hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
185
- \`\`\`
186
-
187
- **RTSP Cameras**
188
-
189
- By default, the Home Assistant API does not allow you to get dynamic RTSP link to a camera stream. So more cameras, like [Tuya](https://www.home-assistant.io/integrations/tuya/), and possibly others can also be imported by using [this method](https://github.com/felipecrs/hass-expose-camera-stream-source#importing-home-assistant-cameras-to-go2rtc-andor-frigate).
190
-
191
- _Source: [Go2Rtc Hass](https://github.com/AlexxIT/go2rtc#source-hass)_
192
- `,ct=`#### Source: HomeKit
193
-
194
- **Important:**
195
-
196
- - You can use HomeKit Cameras **without Apple devices** (iPhone, iPad, etc.), it's just a yet another protocol
197
- - HomeKit device can be paired with only one ecosystem. So, if you have paired it to an iPhone (Apple Home) - you can't pair it with Home Assistant or go2rtc. Or if you have paired it to go2rtc - you can't pair it with iPhone
198
- - HomeKit device should be in same network with working [mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) between device and go2rtc
199
-
200
- go2rtc support import paired HomeKit devices from [Home Assistant](https://github.com/AlexxIT/go2rtc#source-hass). So you can use HomeKit camera with Hass and go2rtc simultaneously. If you using Hass, I recommend pairing devices with it, it will give you more options.
201
-
202
- You can pair device with go2rtc on the HomeKit page. If you can't see your devices - reload the page. Also try reboot your HomeKit device (power off). If you still can't see it - you have a problems with mDNS.
203
-
204
- If you see a device but it does not have a pair button - it is paired to some ecosystem (Apple Home, Home Assistant, HomeBridge etc). You need to delete device from that ecosystem, and it will be available for pairing. If you cannot unpair device, you will have to reset it.
205
-
206
- **Important:**
207
-
208
- - HomeKit audio uses very non-standard **AAC-ELD** codec with very non-standard params and specification violation
209
- - Audio can't be played in \`VLC\` and probably any other player
210
- - Audio should be transcoded for using with MSE, WebRTC, etc.
211
-
212
- Recommended settings for using HomeKit Camera with WebRTC, MSE, MP4, RTSP:
213
-
214
- \`\`\`
215
- streams:
216
- aqara_g3:
217
- - hass:Camera-Hub-G3-AB12
218
- - ffmpeg:aqara_g3#audio=aac#audio=opus
219
- \`\`\`
220
-
221
- RTSP link with "normal" audio for any player: \`rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac\`
222
-
223
- **This source is in active development!** Tested only with [Aqara Camera Hub G3](https://www.aqara.com/eu/product/camera-hub-g3) (both EU and CN versions).
224
-
225
- _Source: [Go2Rtc HomeKit](https://github.com/AlexxIT/go2rtc#source-homekit)_
226
- `,lt=`#### Source: HTTP
227
-
228
- Support Content-Type:
229
-
230
- - **HTTP-FLV** (\`video/x-flv\`) - same as RTMP, but over HTTP
231
- - **HTTP-JPEG** (\`image/jpeg\`) - camera snapshot link, can be converted by go2rtc to MJPEG stream
232
- - **HTTP-MJPEG** (\`multipart/x\`) - simple MJPEG stream over HTTP
233
- - **MPEG-TS** (\`video/mpeg\`) - legacy [streaming format](https://en.wikipedia.org/wiki/MPEG_transport_stream)
234
-
235
- Source also support HTTP and TCP streams with autodetection for different formats: **MJPEG**, **H.264/H.265 bitstream**, **MPEG-TS**.
236
-
237
- \`\`\`yaml
238
- streams:
239
- # [HTTP-FLV] stream in video/x-flv format
240
- http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617
241
-
242
- # [JPEG] snapshots from Dahua camera, will be converted to MJPEG stream
243
- dahua_snap: http://admin:password@192.168.1.123/cgi-bin/snapshot.cgi?channel=1
244
-
245
- # [MJPEG] stream will be proxied without modification
246
- http_mjpeg: https://mjpeg.sanford.io/count.mjpeg
247
-
248
- # [MJPEG or H.264/H.265 bitstream or MPEG-TS]
249
- tcp_magic: tcp://192.168.1.123:12345
250
-
251
- # Add custom header
252
- custom_header: 'https://mjpeg.sanford.io/count.mjpeg#header=Authorization: Bearer XXX'
253
- \`\`\`
254
-
255
- **PS.** Dahua camera has bug: if you select MJPEG codec for RTSP second stream - snapshot won't work.
256
-
257
- _Source: [Go2Rtc Http](https://github.com/AlexxIT/go2rtc#source-http)_
258
- `,mt=`#### Source: ISAPI
259
-
260
- This source type support only backchannel audio for Hikvision ISAPI protocol. So it should be used as second source in addition to the RTSP protocol.
261
-
262
- \`\`\`yaml
263
- streams:
264
- hikvision1:
265
- - rtsp://admin:password@192.168.1.123:554/Streaming/Channels/101
266
- - isapi://admin:password@192.168.1.123:80/
267
- \`\`\`
268
-
269
- _Source: [Go2Rtc Isapi](https://github.com/AlexxIT/go2rtc#source-isapi)_
270
- `,ut=`#### Source: Ivideon
271
-
272
- Support public cameras from service [Ivideon](https://tv.ivideon.com/).
273
-
274
- \`\`\`yaml
275
- streams:
276
- quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
277
- \`\`\`
278
-
279
- _Source: [Go2Rtc Ivideon](https://github.com/AlexxIT/go2rtc#source-ivideon)_
280
- `,pt=`#### Source: Kasa
281
-
282
- [TP-Link Kasa](https://www.kasasmart.com/) non-standard protocol [more info](https://medium.com/@hu3vjeen/reverse-engineering-tp-link-kc100-bac4641bf1cd).
283
-
284
- \`\`\`yaml
285
- streams:
286
- kasa: kasa://user:pass@192.168.1.123:19443/https/stream/mixed
287
- \`\`\`
288
-
289
- _Source: [Go2Rtc Kasa](https://github.com/AlexxIT/go2rtc#source-kasa)_
290
- `,dt=`#### Source: Nest
291
-
292
- Currently only WebRTC cameras are supported. Stream reconnects every 5 minutes.
293
-
294
- For simplicity, it is recommended to connect the Nest/WebRTC camera to the [Home Assistant](https://github.com/AlexxIT/go2rtc#source-hass). But if you can somehow get the below parameters - Nest/WebRTC source will work without Hass.
295
-
296
- \`\`\`yaml
297
- streams:
298
- nest-doorbell: nest:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
299
- \`\`\`
300
-
301
- _Source: [Go2Rtc Nest](https://github.com/AlexxIT/go2rtc#source-nest)_
302
- `,ht=`#### Source: ONVIF
303
-
304
- The source is not very useful if you already know RTSP and snapshot links for your camera. But it can be useful if you don't.
305
-
306
- **WebUI > Add** webpage support ONVIF autodiscovery. Your server must be on the same subnet as the camera. If you use docker, you must use "network host".
307
-
308
- \`\`\`yaml
309
- streams:
310
- dahua1: onvif://admin:password@192.168.1.123
311
- reolink1: onvif://admin:password@192.168.1.123:8000
312
- tapo1: onvif://admin:password@192.168.1.123:2020
313
- \`\`\`
314
-
315
- _Source: [Go2Rtc Onvif](https://github.com/AlexxIT/go2rtc#source-onvif)_
316
- `,gt=`#### Source: Roborock
317
-
318
- This source type support Roborock vacuums with cameras. Known working models:
319
-
320
- - Roborock S6 MaxV - only video (the vacuum has no microphone)
321
- - Roborock S7 MaxV - video and two way audio
322
-
323
- Source support load Roborock credentials from Home Assistant [custom integration](https://github.com/humbertogontijo/homeassistant-roborock). Otherwise, you need to log in to your Roborock account (MiHome account is not supported). Go to: go2rtc WebUI > Add webpage. Copy \`roborock://...\` source for your vacuum and paste it to \`go2rtc.yaml\` config.
324
-
325
- If you have graphic pin for your vacuum - add it as numeric pin (lines: 123, 456, 678) to the end of the roborock-link.
326
-
327
- _Source: [Go2Rtc Roborock](https://github.com/AlexxIT/go2rtc#source-roborock)_
328
- `,ft=`#### Source: RTMP
329
-
330
- You can get stream from RTMP server, for example [Frigate](https://docs.frigate.video/configuration/rtmp).
331
-
332
- \`\`\`yaml
333
- streams:
334
- rtmp_stream: rtmp://192.168.1.123/live/camera1
335
- \`\`\`
336
-
337
- _Source: [Go2Rtc RTMP](https://github.com/AlexxIT/go2rtc#source-rtmp)_
338
- `,bt=`#### Source: RTSP
339
-
340
- \`\`\`yaml
341
- streams:
342
- sonoff_camera: rtsp://rtsp:12345678@192.168.1.123/av_stream/ch0
343
- dahua_camera:
344
- - rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif
345
- - rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=1
346
- amcrest_doorbell:
347
- - rtsp://username:password@192.168.1.123:554/cam/realmonitor?channel=1&subtype=0#backchannel=0
348
- unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK
349
- glichy_camera: ffmpeg:rstp://username:password@192.168.1.123/live/ch00_1
350
- \`\`\`
351
-
352
- **Recommendations**
353
-
354
- - **Amcrest Doorbell** users may want to disable two way audio, because with an active stream you won't have a call button working. You need to add \`#backchannel=0\` to the end of your RTSP link in YAML config file
355
- - **Dahua Doorbell** users may want to change backchannel [audio codec](https://github.com/AlexxIT/go2rtc/issues/52)
356
- - **Reolink** users may want NOT to use RTSP protocol at all, some camera models have a very awful unusable stream implementation
357
- - **Ubiquiti UniFi** users may want to disable HTTPS verification. Use \`rtspx://\` prefix instead of \`rtsps://\`. And don't use \`?enableSrtp\` [suffix](https://github.com/AlexxIT/go2rtc/issues/81)
358
- - **TP-Link Tapo** users may skip login and password, because go2rtc support login [without them](https://drmnsamoliu.github.io/video.html)
359
- - If your camera has two RTSP links - you can add both of them as sources. This is useful when streams has different codecs, as example AAC audio with main stream and PCMU/PCMA audio with second stream
360
- - If the stream from your camera is glitchy, try using [ffmpeg source](https://github.com/AlexxIT/go2rtc#source-ffmpeg). It will not add CPU load if you won't use transcoding
361
- - If the stream from your camera is very glitchy, try to use transcoding with [ffmpeg source](#source-ffmpeg)
362
-
363
- **Other options**
364
-
365
- Format:
366
-
367
- \`rtsp...#{param1}#{param2}#{param3}\`
368
-
369
- - Add custom timeout \`#timeout=30\` (in seconds)
370
- - Ignore audio - \`#media=video\` or ignore video - \`#media=audio\`
371
- - Ignore two way audio API \`#backchannel=0\` - important for some glitchy cameras
372
- - Use WebSocket transport \`#transport=ws...\`
373
-
374
- **RTSP over WebSocket**
375
-
376
- \`\`\`yaml
377
- streams:
378
- # WebSocket with authorization, RTSP - without
379
- axis-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&resolution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:pass@192.168.1.123:4567/rtsp-over-websocket
380
- # WebSocket without authorization, RTSP - with
381
- dahua-rtsp-ws: rtsp://user:pass@192.168.1.123/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
382
- \`\`\`
383
-
384
- _Source: [Go2Rtc RTSP](https://github.com/AlexxIT/go2rtc#source-rtsp)_
385
- `,wt=`#### Source: Tapo
386
-
387
- [TP-Link Tapo](https://www.tapo.com/) proprietary camera protocol with **two way audio** support.
388
-
389
- - stream quality is the same as [RTSP protocol](https://www.tapo.com/en/faq/34/)
390
- - use the **cloud password**, this is not the RTSP password! you do not need to add a login!
391
- - you can also use UPPERCASE MD5 hash from your cloud password with \`admin\` username
392
-
393
- \`\`\`yaml
394
- streams:
395
- # cloud password without username
396
- camera1: tapo://cloud-password@192.168.1.123
397
- # admin username and UPPERCASE MD5 cloud-password hash
398
- camera2: tapo://admin:MD5-PASSWORD-HASH@192.168.1.123
399
- \`\`\`
400
-
401
- _Source: [Go2Rtc Tapo](https://github.com/AlexxIT/go2rtc#source-tapo)_
402
- `,vt=`#### Source: WebRTC
403
-
404
- This source type support four connection formats.
405
-
406
- **whep**
407
-
408
- [WebRTC/WHEP](https://www.ietf.org/id/draft-murillo-whep-02.html) - is an unapproved standard for WebRTC video/audio viewers. But it may already be supported in some third-party software. It is supported in go2rtc.
409
-
410
- **go2rtc**
411
-
412
- This format is only supported in go2rtc. Unlike WHEP it supports asynchronous WebRTC connection and two way audio.
413
-
414
- **openipc**
415
-
416
- Support connection to [OpenIPC](https://openipc.org/) cameras.
417
-
418
- **wyze**
419
-
420
- Supports connection to [Wyze](https://www.wyze.com/) cameras, using WebRTC protocol. You can use [docker-wyze-bridge](https://github.com/mrlt8/docker-wyze-bridge) project to get connection credentials.
421
-
422
- **kinesis**
423
-
424
- Supports [Amazon Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/), using WebRTC protocol. You need to specify signalling WebSocket URL with all credentials in query params, \`client_id\` and \`ice_servers\` list in [JSON format](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer).
425
-
426
- \`\`\`yaml
427
- streams:
428
- webrtc-whep: webrtc:http://192.168.1.123:1984/api/webrtc?src=camera1
429
- webrtc-go2rtc: webrtc:ws://192.168.1.123:1984/api/websocket?src=camera1
430
- webrtc-openipc: webrtc:ws://192.168.1.123/webrtc_ws#format=openipc#ice_servers=[{"urls":"stun:stun.kinesisvideo.eu-north-1.amazonaws.com:443"}]
431
- webrtc-wyze: webrtc:http://192.168.1.123:5000/signaling/camera1?kvs#format=wyze
432
- webrtc-kinesis: webrtc:wss://...amazonaws.com/?...#format=kinesis#client_id=...#ice_servers=[{...},{...}]
433
- \`\`\`
434
-
435
- **PS.** For \`kinesis\` sources you can use [echo](https://github.com/AlexxIT/go2rtc#source-echo) to get connection params using \`bash\`/\`python\` or any other script language.
436
-
437
- _Source: [Go2Rtc WebRTC](https://github.com/AlexxIT/go2rtc#source-webrtc)_
438
- `,_t=`#### Source: WebTorrent
439
-
440
- This source can get a stream from another go2rtc via [WebTorrent](https://github.com/AlexxIT/go2rtc#module-webtorrent) protocol.
441
-
442
- \`\`\`yaml
443
- streams:
444
- webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
445
- \`\`\`
446
-
447
- _Source: [Go2Rtc Webtorrent](https://github.com/AlexxIT/go2rtc#source-webtorrent)_
448
- `,yt={class:"page-title"},xt={class:"window"},kt={class:"subview-title text-color"},St={class:"relative"},Tt={for:"name",class:"v-label"},Pt={class:"mt-5"},Rt={class:"subview-title text-color"},At={class:"flex flex-row items-center justify-center ml-auto"},It={class:"relative w-full flex flex-col"},Ct=["for"],Ht=["for"],Vt=["for"],jt={key:0,class:"w-full flex flex-row justify-center my-1"},Et={class:"ml-2 flex items-center justify-center",style:{"max-height":"44px"}},Ot={class:"w-full flex flex-row justify-center my-1"},Gt={class:"ml-2 flex items-center justify-center",style:{"max-height":"44px"}},Mt={class:"flex items-center ml-auto"},Ut={class:"flex flex-row w-full items-center justify-center mt-3"},$t={key:0,class:"w-full h-full"},Lt=["innerHTML"],Wt={key:1,class:"w-full h-full flex items-center justify-center"},Dt={key:0,class:"w-full h-full flex items-center justify-center"},zt=Ae({__name:"NewCamera",setup(Bt){A.registerLanguage("typescript",je),A.registerLanguage("yaml",Ee),A.registerLanguage("json",Oe),A.registerLanguage("python",Ge);const{smallMobileActive:V,extraSmallMobileActive:U}=Te(),re=Ne(),W=new xe,ie=v(new Set),ce=v(),le=v(!1),$=v(0),j=v([0]),R=v(),me=v(["high-resolution","mid-resolution","low-resolution","snapshot"]),E=Ie(),C=v(!1),O=v(!1),f=v({disabled:!1,name:"",info:{manufacturer:"",model:"",hardware:"",serialNumber:"",firmwareVersion:"",supportUrl:""},sources:[{name:"",roles:[],urls:[{protocol:"rtsp://",url:[]}],internal:!1}],recording:{enabled:!1},interface:{streamingMode:"auto",streamingSource:"low-resolution"},extensions:{hub:[],plugins:[]}}),{mutate:ue,isPending:pe}=W.createCameraQuery(),{mutateAsync:de,isPending:he}=W.previewCameraQuery(),p=Ce(()=>pe.value||le.value),D=ze("commonmark",{highlight(o,t){if(t&&A.getLanguage(t))try{return'<pre><code class="hljs">'+A.highlight(o,{language:t,ignoreIllegals:!0}).value+"</code></pre>"}catch{}return'<pre><code class="hljs">'+D.utils.escapeHtml(o)+"</code></pre>"}});He(C,o=>{o||setTimeout(()=>{E.value={presets:[],md:void 0}},300)});const ge=o=>{f.value.sources[o].urls.push({protocol:"rtsp://",url:[]})},fe=(o,t)=>{f.value.sources[o].urls.splice(t,1)},be=()=>{f.value.sources.push({name:"",roles:[],urls:[{protocol:"rtsp://",url:[]}],internal:!1}),j.value=[f.value.sources.length]},we=o=>{f.value.sources.splice(o,1)},z=o=>{let t,s,b;switch(o){case"bubble://":t=[],s=Object.assign({"../markdowns/bubble.md":et});break;case"dvrip://":t=[],s=Object.assign({"../markdowns/dvrip.md":tt});break;case"echo:":t=[],s=Object.assign({"../markdowns/echo.md":ot});break;case"exec:":t=[],s=Object.assign({"../markdowns/exec.md":at});break;case"expr:":t=[],s=Object.assign({"../markdowns/expr.md":nt});break;case"ffmpeg:":t=se,s=Object.assign({"../markdowns/ffmpeg.md":st});break;case"gopro://":t=se,s=Object.assign({"../markdowns/gopro.md":rt});break;case"hass:":t=[],s=Object.assign({"../markdowns/hass.md":it});break;case"homekit://":t=qe,s=Object.assign({"../markdowns/homekit.md":ct});break;case"http://":case"https://":case"httpx://":case"tcp://":t=Xe,s=Object.assign({"../markdowns/http.md":lt});break;case"isapi://":t=[],s=Object.assign({"../markdowns/isapi.md":mt});break;case"ivideon:":t=[],s=Object.assign({"../markdowns/ivideon.md":ut});break;case"kasa://":t=[],s=Object.assign({"../markdowns/kasa.md":pt});break;case"nest:":t=Qe,s=Object.assign({"../markdowns/nest.md":dt});break;case"onvif://":t=[],s=Object.assign({"../markdowns/onvif.md":ht});break;case"roborock://":t=[],s=Object.assign({"../markdowns/roborock.md":gt});break;case"rtmp://":t=[],s=Object.assign({"../markdowns/rtmp.md":ft});break;case"rtsp://":case"rtspx://":t=Je,s=Object.assign({"../markdowns/rtsp.md":bt});break;case"tapo://":t=[],s=Object.assign({"../markdowns/tapo.md":wt});break;case"webrtc:":t=Ze,s=Object.assign({"../markdowns/webrtc.md":vt});break;case"webtorrent:":t=[],s=Object.assign({"../markdowns/webtorrent.md":_t});break;default:t=[],s=void 0;break}return s&&(b=Object.values(s)[0]),E.value={presets:t,md:b},{presets:t,md:b}},B=o=>{z(o),C.value=!0},ve=async o=>{R.value=void 0,O.value=!0;const t=o.url.join(""),b={url:t.includes(o.protocol)?t:`${o.protocol}${t}`},r=await de({cameraData:b});R.value=r?`data:image/jpeg;base64,${r}`:"ERROR",R.value!=="ERROR"&&ie.value.add(b.url)},_e=o=>({...o,pluginId:"native",type:"camera",isCloud:!1,hasLight:!1,hasSiren:!1,hasBinarySensor:!1,hasBattery:!1,snapshotTTL:600,detectionZone:[],detectionSettings:{motion:{timeout:20},object:{confidence:.7}},frameWorkerSettings:{decoder:"pillow",fps:10,resolution:"640x360"},sources:o.sources.map(s=>{const b=s.urls.map(r=>{if(r.url){const c=r.url.join("");return c.includes(r.protocol)?c:`${r.protocol}${c}`}}).filter(Boolean);return{_id:"",...s,urls:b,internal:!1}})}),ye=o=>{const{isLoading:t}=De(0,{parent:".topbar"});t.value=!0;const s=_e(o);ue({cameraData:s},{onSuccess:async()=>{t.value=!1,await Fe(500),re.push({path:"/cameras"})}})},F=(o,t)=>{t.protocol=o};return(o,t)=>{const s=Pe,b=Se;return d(),k("main",{class:Y(["w-full h-full",{"px-0":e(V)}])},[n(e(Be),{ref_key:"cameraVeeForm",ref:ce,class:"firststeps-form flex flex-col h-full w-full","validation-schema":e(ke),"initial-values":e(f),onSubmit:t[3]||(t[3]=r=>ye(r))},{default:a(()=>[u("div",{class:Y(["mb-3 flex items-center",{"mx-2":e(V)}]),style:{height:"30px"}},[u("h1",yt,l(o.$t("views.new_camera.title")),1),n(S,{loading:e(p),variant:"text",color:"green",type:"submit",class:"ml-auto"},{default:a(()=>[n(x,{size:"15",class:"mr-1"},{default:a(()=>[h(l(e(q)),1)]),_:1}),h(" "+l(o.$t("components.form.button.add")),1)]),_:1},8,["loading"])],2),u("div",xt,[u("div",null,[u("span",kt,l(o.$t("components.form.label.camera")),1),n(Q,{modelValue:e($),"onUpdate:modelValue":t[1]||(t[1]=r=>G($)?$.value=r:null),class:"inner-component mt-2"},{default:a(()=>[n(Z,{elevation:"0",value:1},{default:a(()=>[n(ee,{style:{height:"48px"},class:"truncate"},{default:a(()=>[h(l(o.$t("views.new_camera.camera")),1)]),_:1}),n(te,{eager:""},{default:a(()=>[u("div",St,[n(e(I),{modelValue:e(f).name,"onUpdate:modelValue":t[0]||(t[0]=r=>e(f).name=r),name:"name"},{default:a(({field:r,errorMessage:c,errors:i})=>[u("label",Tt,l(o.$t("components.form.label.name")),1),n(oe,H({loading:e(p),variant:"outlined",name:"name",type:"text",density:"compact"},r,{error:i.length>0,"error-messages":c}),null,16,["loading","error","error-messages"])]),_:1},8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),u("div",Pt,[u("span",Rt,l(o.$t("components.form.label.sources")),1),n(Q,{modelValue:e(j),"onUpdate:modelValue":t[2]||(t[2]=r=>G(j)?j.value=r:null),class:"inner-component mt-2",multiple:"",variant:"accordion"},{default:a(()=>[(d(!0),k(K,null,J(e(f).sources,(r,c)=>(d(),P(Z,{key:c,value:c+1,elevation:"0",style:Ve(e(V)?"border-radius: 0px !important":"")},{default:a(()=>[n(ee,{style:{height:"48px"},class:"truncate"},{actions:a(({expanded:i})=>[u("div",At,[n(S,{disabled:e(f).sources.length<2||e(p),size:"22.5",rounded:"",color:"red",variant:"text",class:"mx-2",onClick:_(g=>we(c),["stop"])},{default:a(()=>[n(x,null,{default:a(()=>[h(l(e(Me)),1)]),_:1})]),_:2},1032,["disabled","onClick"]),i?(d(),P(x,{key:0,size:"22.5"},{default:a(()=>[h(l(e(Ue)),1)]),_:1})):(d(),P(x,{key:1,size:"22.5"},{default:a(()=>[h(l(e($e)),1)]),_:1}))])]),default:a(()=>[h(l(o.$t("views.new_camera.source")+": "+c)+" ",1)]),_:2},1024),n(te,{eager:""},{default:a(()=>[u("div",It,[n(e(I),{modelValue:r.name,"onUpdate:modelValue":i=>r.name=i,name:`sources[${c}].name`},{default:a(({field:i,errorMessage:g,errors:m})=>[u("label",{for:`sources[${c}].name`,class:"v-label"},l(o.$t("components.form.label.source_name")),9,Ct),n(oe,H({loading:e(p),variant:"outlined",name:`sources[${c}].name`,type:"text",density:"compact",ref_for:!0},i,{error:m.length>0,"error-messages":g}),null,16,["loading","name","error","error-messages"])]),_:2},1032,["modelValue","onUpdate:modelValue","name"]),n(e(I),{modelValue:r.roles,"onUpdate:modelValue":i=>r.roles=i,name:`sources[${c}].roles`},{default:a(({field:i,errorMessage:g,errors:m})=>[u("label",{for:`sources[${c}].roles`,class:"v-label"},l(o.$t("components.form.label.source_role")),9,Ht),n(L,H({loading:e(p),items:e(me).filter(y=>!e(f).sources.some((T,w)=>{var N;return((N=T.roles)==null?void 0:N.includes(y))&&w!==c})),variant:"outlined",name:`sources[${c}].roles`,type:"text",density:"compact",chips:"",multiple:"",clearable:"",ref_for:!0},i,{error:m.length>0,"error-messages":g,"model-value":i.value,onKeydown:_(()=>null,["prevent"])}),{chip:a(({item:y})=>[n(Ye,{color:"#df2a4c"},{default:a(()=>[h(l(y.title),1)]),_:2},1024)]),_:2},1040,["loading","items","name","error","error-messages","model-value"])]),_:2},1032,["modelValue","onUpdate:modelValue","name"]),u("label",{for:`sources[${c}].urls[].url`,class:"v-label"},l(o.$t("components.form.label.sources")),9,Vt),(d(!0),k(K,null,J(r.urls,(i,g)=>(d(),k("div",{key:g},[e(U)?(d(),k("div",jt,[n(e(I),{modelValue:i.protocol,"onUpdate:modelValue":m=>i.protocol=m,name:`sources[${c}].urls[${g}].protocol`},{default:a(({field:m,errors:y,errorMessage:T})=>[n(L,H({loading:e(p),items:e(ne),"hide-no-data":"","hide-details":"",variant:"outlined",name:`sources[${c}].urls[${g}].protocol`,type:"text",density:"compact",class:"camera-protocol",ref_for:!0},m,{error:y.length>0,"error-messages":T,"model-value":m.value,onKeydown:_(()=>null,["prevent"]),"onUpdate:modelValue":w=>F(w,i)}),null,16,["loading","items","name","error","error-messages","model-value","onUpdate:modelValue"])]),_:2},1032,["modelValue","onUpdate:modelValue","name"]),u("div",Et,[n(S,{disabled:e(p),color:"#5e5e5e",density:"compact",icon:"",variant:"text",onClick:_(m=>B(i.protocol),["prevent"])},{default:a(()=>[n(x,{size:"20"},{default:a(()=>[h(l(e(X)),1)]),_:1})]),_:2},1032,["disabled","onClick"])])])):M("",!0),u("div",Ot,[e(U)?M("",!0):(d(),P(e(I),{key:0,modelValue:i.protocol,"onUpdate:modelValue":m=>i.protocol=m,name:`sources[${c}].urls[${g}].protocol`},{default:a(({field:m,errors:y,errorMessage:T})=>[n(L,H({loading:e(p),items:e(ne),"hide-no-data":"","hide-details":"",variant:"outlined",name:`sources[${c}].urls[${g}].protocol`,type:"text",density:"compact",style:{"min-width":"125px","max-width":"125px","min-height":"40px","max-height":"40px"},class:"camera-protocol",ref_for:!0},m,{error:y.length>0,"error-messages":T,"model-value":m.value,onKeydown:_(()=>null,["prevent"]),"onUpdate:modelValue":w=>F(w,i)}),null,16,["loading","items","name","error","error-messages","model-value","onUpdate:modelValue"])]),_:2},1032,["modelValue","onUpdate:modelValue","name"])),n(e(I),{modelValue:i.url,"onUpdate:modelValue":m=>i.url=m,name:`sources[${c}].urls[${g}].url`},{default:a(({field:m,errorMessage:y,errors:T})=>[n(Ke,{modelValue:i.url,"onUpdate:modelValue":[w=>i.url=w,w=>m.value=w],loading:e(p),clearable:"",chips:"",multiple:"",items:z(i.protocol).presets,variant:"outlined",name:`sources[${c}].urls[${g}].url`,type:"text",density:"compact",class:"camera-source",error:T.length>0,"error-messages":y},{"append-inner":a(()=>[r.urls.length>1?(d(),P(S,{key:0,size:"28",variant:"text",rounded:"",density:"compact",color:"red",disabled:r.urls.length<2||e(p),onClick:_(w=>fe(c,g),["prevent"])},{default:a(()=>[n(x,{size:"20"},{default:a(()=>[h(l(e(Le)),1)]),_:1})]),_:2},1032,["disabled","onClick"])):M("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","loading","items","name","error","error-messages"])]),_:2},1032,["modelValue","onUpdate:modelValue","name"]),u("div",Gt,[n(S,{disabled:!i.protocol||!i.url.length||e(p),color:"#5e5e5e",density:"compact",icon:"",variant:"text",onClick:_(m=>ve(i),["prevent"])},{default:a(()=>[n(x,{size:"20"},{default:a(()=>[h(l(e(We)),1)]),_:1})]),_:2},1032,["disabled","onClick"]),e(U)?M("",!0):(d(),P(S,{key:0,disabled:e(p),color:"#5e5e5e",density:"compact",icon:"",variant:"text",onClick:_(m=>B(i.protocol),["prevent"])},{default:a(()=>[n(x,{size:"20"},{default:a(()=>[h(l(e(X)),1)]),_:1})]),_:2},1032,["disabled","onClick"]))])])]))),128)),u("div",Mt,[n(S,{disabled:e(p),color:"#df2a4c",variant:"flat",onClick:_(i=>ge(c),["prevent"])},{default:a(()=>[h(l(o.$t("components.form.button.add_source")),1)]),_:2},1032,["disabled","onClick"])])])]),_:2},1024)]),_:2},1032,["value","style"]))),128))]),_:1},8,["modelValue"]),u("div",Ut,[n(S,{disabled:e(p),variant:"text",color:"#df2a4c",icon:"",onClick:_(be,["prevent"])},{default:a(()=>[n(x,{size:"30"},{default:a(()=>[h(l(e(q)),1)]),_:1})]),_:1},8,["disabled"])])])])]),_:1},8,["validation-schema","initial-values"]),n(s,{modelValue:e(C),"onUpdate:modelValue":t[4]||(t[4]=r=>G(C)?C.value=r:null),title:o.$t("components.dialog.title.information"),loading:e(p),"hide-confirm-button":""},{content:a(()=>{var r;return[(r=e(E))!=null&&r.md?(d(),k("div",$t,[u("div",{class:"w-full markdown-body",innerHTML:e(D).render(e(E).md)},null,8,Lt)])):(d(),k("div",Wt,[n(ae,{color:"#df2a4c",indeterminate:""})]))]}),_:1},8,["modelValue","title","loading"]),n(s,{modelValue:e(O),"onUpdate:modelValue":t[5]||(t[5]=r=>G(O)?O.value=r:null),title:o.$t("components.dialog.title.preview"),loading:e(p),"hide-confirm-button":""},{content:a(()=>[!e(R)||e(he)?(d(),k("div",Dt,[n(ae,{color:"#df2a4c",indeterminate:""})])):(d(),P(b,{key:1,class:"mt-5 inner-component","show-camera-name":"","current-camera":e(R),"border-radius":e(V)?0:3,border:!1,target:"preview","preview-src":e(R),"button-elevation":"1"},null,8,["current-camera","border-radius","preview-src"]))]),_:1},8,["modelValue","title","loading"])],2)}}}),Mo=Re(zt,[["__scopeId","data-v-25f9455e"]]);export{Mo as default};
@@ -1 +0,0 @@
1
- import{b as ke,d as at,C as lt,g as it,e as ut,f as rt}from"./VPlayer.DyeXezbn.0.0.48.js";import{_ as ct}from"./VPluginCard.B_Gjjpzq.0.0.48.js";import{G as Ie,t as Ee,r as l,c as G,w as K,b as a,d as r,f as s,u as e,a9 as d,n as ne,k as $,g as W,a7 as q,P as f,ab as g,p as S,aa as F,i as me,S as dt,R as ft,Q as De,ad as je,ac as Qe}from"./@vue.DRcZ6uZO.0.0.48.js";import{Y as Ae,q as de,i as se,c as Be}from"./@mdi.CbjpODVZ.0.0.48.js";import{i as $e}from"./vue3-toastify.nL-I4C--.0.0.48.js";import{P as Ce}from"./plugins.Ch_0cv_L.0.0.48.js";import{A as Me,M as Le,i as Ue,f as Se,z as Je,C as Ve,e as Ye,D as Re,E as ze,y as mt,j as pt,F as vt}from"./main.mlm94TYK.0.0.48.js";import{e as le,b as pe,a as fe,U as gt,W as _t,D as ht,x as yt,G as qe,f as He,I as bt,J as xt,m as wt,y as $t}from"./vuetify.DlOnqSL1.0.0.48.js";import{H as ae,t as kt,y as It,j as Ct,p as St}from"./highlight.js.Cg6c_cCL.0.0.48.js";import{M as Pt}from"./markdown-it.DU7e183f.0.0.48.js";import{u as Dt}from"./vue-router.S61oR9AT.0.0.48.js";import{t as jt}from"./@vueuse.C65DwZuy.0.0.48.js";import"./draggabilly.PrP7w5-3.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";import"./get-size.D1dS-IaP.0.0.48.js";import"./unidragger.3FW7TOUy.0.0.48.js";import"./ev-emitter.X5f1qa-c.0.0.48.js";import"./vee-validate.Dzj4dBd6.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./qrcode.Bdg1zKx6.0.0.48.js";import"./dijkstrajs.C00ieaqj.0.0.48.js";import"./pinia.BL6apvtP.0.0.48.js";import"./VConsole.wv8VCqg-.0.0.48.js";import"./VConfigEditor.vue_vue_type_script_setup_true_lang._4BVZ2To.0.0.48.js";import"./ace-builds.DPqPJOIH.0.0.48.js";import"./@vueform.B6V1sb13.0.0.48.js";import"./types.Cz9TaZAP.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./mdurl.k9Sl0PQj.0.0.48.js";import"./uc.micro.kMc2yuuw.0.0.48.js";import"./entities.C20TfXL6.0.0.48.js";import"./linkify-it.D_vNtISo.0.0.48.js";import"./punycode.js.Dj65hjkv.0.0.48.js";const Lt={class:"w-full"},Vt={key:0,class:"w-full"},zt={class:"flex flex-col justify-center items-center mb-5"},Et={for:"restoreInput",class:"cursor-pointer text-center text-sm"},At=["accept"],Ft={key:0,class:"text-red text-sm"},Ot={key:1,class:"w-full flex flex-col items-center justify-center"},Tt={class:"relative mb-4 w-full"},Nt=["src","type"],Qt={class:"flex items-center justify-center"},Bt={class:"mx-2"},Mt={class:"disabled-text"},Ut={class:"mt-10"},Jt={class:"box-title w-full mb-3"},Rt={key:0,class:"flex items-center justify-center text-sm text-passive mt-5"},qt=Ie({__name:"VAudioDetectionInterface",props:{pluginName:{}},setup(oe){const T=new Ce,C=oe,{pluginName:N}=Ee(C),i=l([]),x=l(!1),p=l(!1),P=l(!1),y=l(!1),w=l(null),k=l(null),V=l(Me.join(",")),Q=l(""),z=l({}),h=l(!1),D=l(),_=l(!0),{mutateAsync:E,isPending:B}=T.detectAudioQuery(),{data:A,isLoading:J}=T.getPluginInterfaceQuery(N.value,{type:"audioDetection"}),H=G(()=>B.value||J.value||h.value),b=n=>{const t=i.value.findIndex(o=>o.name===n);t>-1&&(i.value.splice(t,1),Z(),Q.value="",D.value=void 0)},j=n=>{if(x.value=!1,p.value=!1,y.value=!1,i.value=[],n.dataTransfer)if(n.dataTransfer.files.length>1)p.value=!0;else{const t=n.dataTransfer.files[0];Me.includes(t.type)&&t.size<=Le?(i.value.push(t),ne(()=>{I(t)})):t.size>Le?y.value=!0:p.value=!0}},X=n=>{var o;p.value=!1,y.value=!1,i.value=[];const t=n.target;if(t&&t.files){if(((o=t.files)==null?void 0:o.length)>1)p.value=!0;else if(t.files.length===1){const m=t.files[0];m.size<=Le?(i.value.push(m),ne(()=>{I(m)})):y.value=!0}}},Z=()=>{w.value&&(w.value.value="")},ee=n=>n<1024?n+" bytes":n<1048576?(n/1024).toFixed(1)+" KB":(n/1048576).toFixed(1)+" MB",I=n=>{h.value=!0;const t=new Audio;t.src=URL.createObjectURL(n),t.onloadedmetadata=()=>{D.value={mimeType:n.type},h.value=!1}},Y=async n=>{if(!i.value.length){P.value=!0;return}h.value=!0;const t=new FormData;t.append("upload",i.value[0]),t.append("config",JSON.stringify(n)),t.append("metadata",JSON.stringify(D.value));try{await E({pluginName:N.value,formData:t})?$e.info(Ue.global.t("components.detection_interface.audio_detected")):$e.info(Ue.global.t("components.detection_interface.audio_not_detected"))}catch(o){console.error("Error detecting audio",o)}finally{h.value=!1}};return K(i,n=>{n.length>0?(P.value=!1,_.value=!1):(Q.value="",D.value=void 0,_.value=!0)},{immediate:!0,deep:!0}),(n,t)=>{const o=ke;return a(),r("div",Lt,[s("div",{class:"file-upload-box p-4",onDrop:t[1]||(t[1]=S(m=>j(m),["prevent"])),onDragover:t[2]||(t[2]=S(m=>x.value=!0,["prevent"])),onDragenter:t[3]||(t[3]=S(m=>x.value=!0,["prevent"])),onDragleave:t[4]||(t[4]=S(m=>x.value=!1,["prevent"]))},[e(i).length?(a(),r("div",Ot,[s("div",Tt,[s("audio",{ref_key:"audioPlayer",ref:k,controls:"",class:"w-full"},[s("source",{src:e(Q),type:e(i)[0].type},null,8,Nt),t[5]||(t[5]=q(" Your browser does not support the audio element. "))],512)]),s("div",Qt,[f(pe,{size:"28",variant:"text",color:"red",rounded:"",onClick:t[0]||(t[0]=S(m=>b(e(i)[0].name),["stop"]))},{default:g(()=>[f(le,{size:"20"},{default:g(()=>[q(d(e(Ae)),1)]),_:1})]),_:1}),s("b",Bt,d(e(i)[0].name),1),s("span",Mt,"("+d(ee(e(i)[0].size))+")",1)])])):(a(),r("div",Vt,[s("div",zt,[s("label",Et,d(n.$t("components.detection_interface.drop_or_select_audio_to_detect")),1),s("input",{id:"restoreInput",ref_key:"fileInput",ref:w,type:"file",class:"d-none",accept:e(V),onChange:X},null,40,At),e(p)?(a(),r("p",Ft,d(n.$t("components.detection_interface.only_one_audio_allowed")),1)):$("",!0),e(P)?(a(),r("p",{key:1,class:W(["text-red text-sm",{"mt-2":e(p)}])},d(n.$t("components.detection_interface.audio_required")),3)):$("",!0),e(y)?(a(),r("p",{key:2,class:W(["text-red text-sm",{"mt-2":e(p)||e(P)}])},d(n.$t("components.detection_interface.file_size_error")),3)):$("",!0)])]))],32),s("div",Ut,[s("div",Jt,d(n.$t("components.detection_interface.interface_config")),1),e(A)&&Object.keys(e(A)).length?(a(),F(o,{key:1,config:e(z),"ui-schema":e(A),loading:e(H),"save-button-label":n.$t("components.detection_interface.detect_audio"),"disable-button":e(_),"save-button-color":"#df2a4c","show-button":"","button-full-width":!1,onOnFormSubmit:Y},null,8,["config","ui-schema","loading","save-button-label","disable-button"])):(a(),r("div",Rt,d(n.$t("components.detection_interface.no_interface_config")),1))])])}}}),Ht=Se(qt,[["__scopeId","data-v-a4ab00a0"]]),Yt={class:"w-full"},Gt={key:0,class:"w-full"},Kt={class:"flex flex-col justify-center items-center mb-5"},Wt={for:"restoreInput",class:"cursor-pointer text-center text-sm"},Xt=["accept"],Zt={key:0,class:"text-red text-sm"},en={key:1,class:"w-full flex flex-col items-center justify-center"},tn={class:"relative mb-4"},nn=["src"],on={class:"flex items-center justify-center"},sn={class:"mx-2"},an={class:"disabled-text"},ln={class:"mt-10"},un={class:"box-title w-full mb-3"},rn={key:0,class:"flex items-center justify-center text-sm text-passive mt-5"},cn={class:"relative"},dn=["src"],fn=Ie({__name:"VObjectDetectionInterface",props:{pluginName:{}},setup(oe){const T=new Ce,C=oe,{pluginName:N}=Ee(C),i=l([]),x=l(!1),p=l(!1),P=l(!1),y=l(!1),w=l(null),k=l(Je.join(",")),V=l(""),Q=l({}),z=l(!1),h=l(),D=l([]),_=l(!1),E=l(!0),{mutateAsync:B,isPending:A}=T.detectObjectsQuery(),{data:J,isLoading:H}=T.getPluginInterfaceQuery(N.value,{type:"objectDetection"}),b=G(()=>A.value||H.value||z.value),j=t=>{const o=i.value.findIndex(m=>m.name===t);o>-1&&(i.value.splice(o,1),ee(),V.value="",h.value=void 0)},X=t=>{if(x.value=!1,p.value=!1,y.value=!1,i.value=[],t.dataTransfer)if(t.dataTransfer.files.length>1)p.value=!0;else{const o=t.dataTransfer.files[0];Je.includes(o.type)&&o.size<=Ve?(i.value.push(o),ne(()=>{I(o)})):o.size>Ve?y.value=!0:p.value=!0}},Z=t=>{var m;p.value=!1,y.value=!1,i.value=[];const o=t.target;if(o&&o.files){if(((m=o.files)==null?void 0:m.length)>1)p.value=!0;else if(o.files.length===1){const L=o.files[0];L.size<=Ve?(i.value.push(L),ne(()=>{I(L)})):y.value=!0}}},ee=()=>{w.value&&(w.value.value="")},I=t=>{z.value=!0;const o=new Image;o.src=URL.createObjectURL(t),o.onload=()=>{V.value=o.src,h.value={width:o.width,height:o.height},z.value=!1}},Y=t=>t<1024?t+" bytes":t<1048576?(t/1024).toFixed(1)+" KB":(t/1048576).toFixed(1)+" MB",n=async t=>{if(!i.value.length){P.value=!0;return}z.value=!0;const o=new FormData;o.append("upload",i.value[0]),o.append("config",JSON.stringify(t)),o.append("metadata",JSON.stringify(h.value));try{const m=await B({pluginName:N.value,formData:o});_.value=!0,setTimeout(()=>{D.value=m},300)}catch(m){console.error("Error detecting objects",m)}finally{z.value=!1}};return K(i,t=>{t.length>0?(P.value=!1,E.value=!1):(V.value="",h.value=void 0,E.value=!0)},{immediate:!0,deep:!0}),(t,o)=>{const m=ke,L=at,ve=Ye;return a(),r("div",Yt,[s("div",{class:"file-upload-box p-4",onDrop:o[1]||(o[1]=S(R=>X(R),["prevent"])),onDragover:o[2]||(o[2]=S(R=>x.value=!0,["prevent"])),onDragenter:o[3]||(o[3]=S(R=>x.value=!0,["prevent"])),onDragleave:o[4]||(o[4]=S(R=>x.value=!1,["prevent"]))},[e(i).length?(a(),r("div",en,[s("div",tn,[s("img",{src:e(V),alt:"Preview",class:"w-full"},null,8,nn)]),s("div",on,[f(pe,{size:"28",variant:"text",color:"red",rounded:"",onClick:o[0]||(o[0]=S(R=>j(e(i)[0].name),["stop"]))},{default:g(()=>[f(le,{size:"20"},{default:g(()=>[q(d(e(Ae)),1)]),_:1})]),_:1}),s("b",sn,d(e(i)[0].name),1),s("span",an,"("+d(Y(e(i)[0].size))+")",1)])])):(a(),r("div",Gt,[s("div",Kt,[s("label",Wt,d(t.$t("components.detection_interface.drop_or_select_image_to_detect_objects")),1),s("input",{id:"restoreInput",ref_key:"fileInput",ref:w,type:"file",class:"d-none",accept:e(k),onChange:Z},null,40,Xt),e(p)?(a(),r("p",Zt,d(t.$t("components.detection_interface.only_one_image_allowed")),1)):$("",!0),e(P)?(a(),r("p",{key:1,class:W(["text-red text-sm",{"mt-2":e(p)}])},d(t.$t("components.detection_interface.image_required")),3)):$("",!0),e(y)?(a(),r("p",{key:2,class:W(["text-red text-sm",{"mt-2":e(p)||e(P)}])},d(t.$t("components.detection_interface.file_size_error")),3)):$("",!0)])]))],32),s("div",ln,[s("div",un,d(t.$t("components.detection_interface.interface_config")),1),e(J)&&Object.keys(e(J)).length?(a(),F(m,{key:1,config:e(Q),"ui-schema":e(J),loading:e(b),"save-button-label":t.$t("components.detection_interface.detect_objects"),"disable-button":e(E),"save-button-color":"#df2a4c","show-button":"","button-full-width":!1,onOnFormSubmit:n},null,8,["config","ui-schema","loading","save-button-label","disable-button"])):(a(),r("div",rn,d(t.$t("components.detection_interface.no_interface_config")),1))]),f(ve,{modelValue:e(_),"onUpdate:modelValue":o[5]||(o[5]=R=>me(_)?_.value=R:null),title:t.$t("components.dialog.title.result"),"hide-confirm-button":"",width:"auto"},{content:g(()=>[s("div",cn,[f(L,{detections:e(D)},null,8,["detections"]),s("img",{src:e(V),alt:"Preview",class:"w-full"},null,8,dn)])]),_:1},8,["modelValue","title"])])}}}),mn=Se(fn,[["__scopeId","data-v-8ad72111"]]),pn={class:"w-full"},vn={key:0,class:"w-full"},gn={class:"flex flex-col justify-center items-center mb-5"},_n={for:"restoreInput",class:"cursor-pointer text-center text-sm"},hn=["accept"],yn={key:0,class:"text-red text-sm"},bn={key:1,class:"w-full flex flex-col items-center justify-center"},xn={class:"relative mb-4 w-full"},wn={class:"flex items-center justify-center"},$n={class:"mx-2"},kn={class:"disabled-text"},In={class:"mt-10"},Cn={class:"box-title w-full mb-3"},Sn={key:0,class:"flex items-center justify-center text-sm text-passive mt-5"},Pn={class:"relative"},Dn=Ie({__name:"VMotionDetectionInterface",props:{pluginName:{}},setup(oe){const T=new Ce,C=oe,{pluginName:N}=Ee(C),i=l([]),x=l(!1),p=l(!1),P=l(!1),y=l(!1),w=l(null),k=l(null),V=l(null),Q=l(Re.join(",")),z=l({}),h=l(!1),D=l(!1),_=l(!0),{mutateAsync:E,isPending:B}=T.detectMotionQuery(),{data:A,isLoading:J}=T.getPluginInterfaceQuery(N.value,{type:"motionDetection"}),H=G(()=>B.value||J.value||h.value),b=n=>{const t=i.value.findIndex(o=>o.name===n);t>-1&&(i.value.splice(t,1),Z(),k.value.src="")},j=n=>{if(x.value=!1,p.value=!1,y.value=!1,i.value=[],n.dataTransfer)if(n.dataTransfer.files.length>1)p.value=!0;else{const t=n.dataTransfer.files[0];Re.includes(t.type)&&t.size<=ze?(i.value.push(t),ne(()=>{I(t)})):t.size>ze?y.value=!0:p.value=!0}},X=n=>{var o;p.value=!1,y.value=!1,i.value=[];const t=n.target;if(t&&t.files){if(((o=t.files)==null?void 0:o.length)>1)p.value=!0;else if(t.files.length===1){const m=t.files[0];m.size<=ze?(i.value.push(m),ne(()=>{I(m)})):y.value=!0}}},Z=()=>{w.value&&(w.value.value="")},ee=n=>n<1024?n+" bytes":n<1048576?(n/1024).toFixed(1)+" KB":(n/1048576).toFixed(1)+" MB",I=n=>{h.value=!0,k.value.src=URL.createObjectURL(n),k.value.load(),k.value.onloadeddata=()=>{h.value=!1}},Y=async n=>{if(!i.value.length){P.value=!0;return}h.value=!0;const t=new FormData;t.append("upload",i.value[0]),t.append("config",JSON.stringify(n));try{const o=await E({pluginName:N.value,formData:t}),m=new Blob([o],{type:"video/mp4"});D.value=!0,setTimeout(()=>{V.value&&(V.value.src=URL.createObjectURL(m),V.value.load())},300)}catch(o){console.error("Error detecting motion",o)}finally{h.value=!1}};return K(i,n=>{n.length>0?(P.value=!1,_.value=!1):_.value=!0},{immediate:!0,deep:!0}),(n,t)=>{const o=ke,m=Ye;return a(),r("div",pn,[s("div",{class:"file-upload-box p-4",onDrop:t[1]||(t[1]=S(L=>j(L),["prevent"])),onDragover:t[2]||(t[2]=S(L=>x.value=!0,["prevent"])),onDragenter:t[3]||(t[3]=S(L=>x.value=!0,["prevent"])),onDragleave:t[4]||(t[4]=S(L=>x.value=!1,["prevent"]))},[e(i).length?(a(),r("div",bn,[s("div",xn,[s("video",{ref_key:"videoPlayer",ref:k,controls:"",class:"w-full"},"Your browser does not support the video tag.",512)]),s("div",wn,[f(pe,{size:"28",variant:"text",color:"red",rounded:"",onClick:t[0]||(t[0]=S(L=>b(e(i)[0].name),["stop"]))},{default:g(()=>[f(le,{size:"20"},{default:g(()=>[q(d(e(Ae)),1)]),_:1})]),_:1}),s("b",$n,d(e(i)[0].name),1),s("span",kn,"("+d(ee(e(i)[0].size))+")",1)])])):(a(),r("div",vn,[s("div",gn,[s("label",_n,d(n.$t("components.detection_interface.drop_or_select_video_to_detect_motion")),1),s("input",{id:"restoreInput",ref_key:"fileInput",ref:w,type:"file",class:"d-none",accept:e(Q),onChange:X},null,40,hn),e(p)?(a(),r("p",yn,d(n.$t("components.detection_interface.only_one_video_allowed")),1)):$("",!0),e(P)?(a(),r("p",{key:1,class:W(["text-red text-sm",{"mt-2":e(p)}])},d(n.$t("components.detection_interface.video_required")),3)):$("",!0),e(y)?(a(),r("p",{key:2,class:W(["text-red text-sm",{"mt-2":e(p)||e(P)}])},d(n.$t("components.detection_interface.file_size_error")),3)):$("",!0)])]))],32),s("div",In,[s("div",Cn,d(n.$t("components.detection_interface.interface_config")),1),e(A)&&Object.keys(e(A)).length?(a(),F(o,{key:1,config:e(z),"ui-schema":e(A),loading:e(H),"save-button-label":n.$t("components.detection_interface.detect_motion"),"disable-button":e(_),"save-button-color":"#df2a4c","show-button":"","button-full-width":!1,onOnFormSubmit:Y},null,8,["config","ui-schema","loading","save-button-label","disable-button"])):(a(),r("div",Sn,d(n.$t("components.detection_interface.no_interface_config")),1))]),f(m,{modelValue:e(D),"onUpdate:modelValue":t[5]||(t[5]=L=>me(D)?D.value=L:null),title:n.$t("components.dialog.title.result"),"hide-confirm-button":"",width:"auto"},{content:g(()=>[s("div",Pn,[s("video",{ref_key:"videoPlayerResult",ref:V,controls:"",class:"w-full"},"Your browser does not support the video tag.",512)])]),_:1},8,["modelValue","title"])])}}}),jn=Se(Dn,[["__scopeId","data-v-9c401771"]]),Ln={key:0,class:"flex items-center justify-center w-full h-full"},Vn={key:1,class:"h-full w-full"},zn={class:"page-title"},En={class:"flex flex-col flex-1 inner-component mt-0 p-4"},An={class:"box-title w-full mb-3"},Fn={key:0,class:"w-full h-full flex items-center justify-center"},On={key:1},Tn={class:"options-segments flex items-center justify-between"},Nn={class:"flex flex-col items-center justify-center"},Qn={class:"options-segments-text mt-2"},Bn={key:1},Mn={key:2},Un={key:3},Jn={key:4},Rn={class:"w-full full-inner-height"},qn={class:"flex flex-col md:flex-row gap-2 h-full"},Hn={class:"flex flex-col flex-1",style:{height:"200px","max-height":"200px"}},Yn={key:0,class:"w-full h-full flex items-center justify-center inner-component mt-0"},Gn={class:"flex flex-col flex-1 inner-component mt-0 p-4"},Kn={class:"box-title w-full mb-3"},Wn={key:0,class:"w-full h-full flex items-center justify-center"},Xn=["innerHTML"],Zn={class:"flex flex-col flex-1 inner-component mt-0 p-4"},eo={class:"box-title w-full mb-3"},to={key:0,class:"w-full h-full flex items-center justify-center"},no=["innerHTML"],oo=["data-ignore-id"],so=Ie({__name:"Plugin",setup(oe){ae.registerLanguage("typescript",kt),ae.registerLanguage("yaml",It),ae.registerLanguage("json",Ct),ae.registerLanguage("python",St);const T=new lt,C=new Ce,N=mt(),i=Dt(),{mobileActive:x,smallMobileActive:p}=pt(),P=l(vt()),y=l(),w=l(!1),k=l([]),V=l(!1),Q=l(i.params.scope),z=l(i.params.pluginname),h=l(),D=l([]),_=l({name:"settings",icon:de,isInterface:!1}),E=l(!1),B=l(),A=l(),[J,H]=jt(),b=G(()=>Q.value?`${Q.value}/${z.value}`:z.value);C.toggleQueryActivator("getPluginContractQuery",!1);const{data:j,isLoading:X}=C.getPluginQuery(b),{data:Z,isLoading:ee}=C.getPluginConfigJsonQuery(b),{data:I,isLoading:Y}=C.getPluginSchemaQuery(b),{data:n}=C.getPluginContractQuery(b),{data:t,isLoading:o}=C.getPluginReadmeQuery(b),{data:m,isLoading:L}=C.getPluginChangelogQuery(b),{mutateAsync:ve,isPending:R}=C.actionButtonQuery(),{mutateAsync:Ge,isPending:Ke}=C.patchPluginConfigQuery(),{mutateAsync:We,isPending:Xe}=T.addCameraExtensionQuery(),{mutateAsync:Ze,isPending:et}=T.removeCameraExtensionQuery(),Fe=G(()=>!!(X.value||ee.value||Y.value||o.value||L.value)),ge=G(()=>!!(Xe.value||et.value||Ke.value)),ie=G(()=>!!(w.value||R.value)),_e=G(()=>{var u,c,O;return!!(I.value||(u=n.value)!=null&&u.cameras.length||(c=n.value)!=null&&c.contract.extension||(O=n.value)!=null&&O.contract.supportAdditionalCameras)}),Pe=Pt("commonmark",{highlight(u,c){if(c&&ae.getLanguage(c))try{return'<pre><code class="hljs">'+ae.highlight(u,{language:c,ignoreIllegals:!0}).value+"</code></pre>"}catch{}return'<pre><code class="hljs">'+Pe.utils.escapeHtml(u)+"</code></pre>"}});K(()=>i.params.pluginname,()=>{z.value=i.params.pluginname},{deep:!0,immediate:!0}),K(h,u=>{ne(()=>V.value=!!u)}),K(I,()=>{Y.value?C.toggleQueryActivator("getPluginContractQuery",!1):C.toggleQueryActivator("getPluginContractQuery",!0)},{deep:!0,immediate:!0}),K(n,()=>{var M,he,ye,be,xe,we,ue,re,ce,v;const u=[];let c=!1,O=!1;((M=n.value)==null?void 0:M.contract.extension)==="motionDetection"&&(O=!0,u.push({name:"motion_detection",icon:se,isInterface:!0}),_.value={name:"motion_detection",icon:se,isInterface:!0}),((he=n.value)==null?void 0:he.contract.extension)==="objectDetection"&&(O=!0,u.push({name:"object_detection",icon:se,isInterface:!0}),_.value={name:"object_detection",icon:se,isInterface:!0}),((ye=n.value)==null?void 0:ye.contract.extension)==="audioDetection"&&(O=!0,u.push({name:"audio_detection",icon:se,isInterface:!0}),_.value={name:"audio_detection",icon:se,isInterface:!0}),I.value&&I.value.schema&&Object.keys(I.value.schema).length&&(u.push({name:"settings",icon:de,isInterface:!1}),c=!0,O||(_.value={name:"settings",icon:de,isInterface:!1})),((be=n.value)!=null&&be.cameras.length||(xe=n.value)!=null&&xe.contract.extension||(we=n.value)!=null&&we.contract.supportAdditionalCameras)&&(u.push({name:"cameras",icon:Be,isInterface:!1}),!c&&!O&&(_.value={name:"cameras",icon:Be,isInterface:!1})),D.value=u,((ue=n.value)!=null&&ue.contract.extension||(re=n.value)!=null&&re.contract.supportAdditionalCameras)&&((ce=n.value)!=null&&ce.cameras.length)&&(k.value=(v=n.value)==null?void 0:v.cameras.filter(te=>te.extensions.plugins.includes(b.value)).map(te=>te.name))},{deep:!0,immediate:!0}),K(E,u=>{u||(B.value=void 0,A.value=void 0)});const tt=async u=>{if(!I.value)return;w.value=!0;const c=it(I.value.schema,u),O=async()=>{await ve({pluginName:b.value,actionId:"config",payload:c},{onSuccess:M=>{M!=null&&M.toast&&$e[M.toast.type](M.toast.message)},onSettled:()=>{w.value=!1}})};await Ge({pluginName:b.value,configData:c},{onSuccess:()=>{O()},onSettled:()=>{w.value=!1}})},nt=async u=>{w.value=!0,await ve({pluginName:b.value,actionId:u.actionId,payload:u.payload},{onSuccess:c=>{c!=null&&c.toast&&$e[c.toast.type](c.toast.message),c!=null&&c.schema&&Object.keys(c.schema).length&&(A.value=u.payload,B.value=c,E.value=!0)},onSettled:()=>{w.value=!1}})},ot=async u=>{j.value&&(k.value.includes(u.name)?await Ze({cameraname:u.name,pluginname:j.value.pluginName},{onSuccess:()=>{k.value=k.value.filter(c=>c!==u.name)}}):await We({cameraname:u.name,pluginname:j.value.pluginName},{onSuccess:()=>{k.value=[...k.value,u.name]}}))};return dt(()=>{y.value=N.connectToNamespace("/plugins")}),ft(()=>{var u,c;(c=(u=y.value)==null?void 0:u.end)==null||c.call(u)}),(u,c)=>{var ue,re,ce;const O=ke,M=jn,he=mn,ye=Ht,be=ct,xe=ut,we=rt;return a(),r("main",{class:W(["w-full h-full",{"px-0":e(p)}])},[e(Fe)?(a(),r("div",Ln,[f(fe,{color:"#df2a4c",indeterminate:""})])):(a(),r("div",Vn,[s("div",{class:W(["mb-3 flex w-full items-center",{"px-2":e(p)}]),style:{height:"30px"}},[s("h1",zn,d((ue=e(j))==null?void 0:ue.displayName),1)],2),f(e(J),null,{default:g(()=>[s("div",{class:"plugin-settings-box flex flex-col gap-2 h-full",style:Qe({width:e(_e)&&!e(x)?"40%":"100%"})},[s("div",En,[s("div",An,d(u.$t("views.plugin.plugin_settings")),1),e(j)?(a(),r("div",On,[s("div",Tn,[f(gt,{modelValue:e(_),"onUpdate:modelValue":c[0]||(c[0]=v=>me(_)?_.value=v:null),height:"100%",grow:"","slider-color":"#df2a4c","hide-slider":e(ge)||e(ie)},{default:g(()=>[(a(!0),r(De,null,je(e(D),(v,te)=>(a(),F(_t,{key:te,value:v,disabled:e(Fe)||v.isInterface&&e(j).disabled,"min-width":"auto"},{default:g(()=>[s("div",Nn,[f(le,{size:"20"},{default:g(()=>[q(d(v.icon),1)]),_:2},1024),s("span",Qn,d(v.isInterface?u.$t("views.plugin.segment_tab_interface"):u.$t(`views.plugin.segment_tab_${v.name.toLowerCase()}`)),1)])]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","hide-slider"])]),e(ge)||e(ie)?(a(),F(ht,{key:0,height:"2",color:"#df2a4c",indeterminate:"",style:{"margin-top":"-2px"}})):$("",!0),f(yt,{modelValue:e(_),"onUpdate:modelValue":c[1]||(c[1]=v=>me(_)?_.value=v:null),class:"box-content w-full flex-1 mt-3",continuous:""},{default:g(()=>[(a(!0),r(De,null,je(e(D),(v,te)=>(a(),F($t,{key:te,value:{name:v.name,icon:v.icon,isInterface:v.isInterface},disabled:v.isInterface&&e(j).disabled},{default:g(()=>{var Oe;return[v.name==="settings"&&e(I)?(a(),F(O,{key:0,config:e(Z)||{},"ui-schema":e(I),loading:e(ie),"button-full-width":!1,onOnFormSubmit:tt,onOnSubmit:nt},null,8,["config","ui-schema","loading"])):$("",!0),v.name==="cameras"?(a(),r("div",Bn,[(a(!0),r(De,null,je((Oe=e(n))==null?void 0:Oe.cameras,U=>{var Te,Ne;return a(),r("div",{key:U.name},[!((Te=e(n))!=null&&Te.contract.extension)&&!((Ne=e(n))!=null&&Ne.contract.supportAdditionalCameras)?(a(),F(qe,{key:0,"select-strategy":"classic",class:"py-0",disabled:e(ge)||e(ie),"onClick:select":()=>u.$router.push(`/cameras/${U.name}`)},{default:g(()=>[f(He,{value:U.name,class:"px-2"},{append:g(()=>[f(pe,{class:"ml-auto",size:"28",rounded:"",density:"compact",variant:"text",onClick:S(st=>h.value=U.name,["stop"])},{default:g(()=>[f(le,{size:"18"},{default:g(()=>[q(d(e(de)),1)]),_:1})]),_:2},1032,["onClick"])]),default:g(()=>[q(d(U.name)+" ",1)]),_:2},1032,["value"])]),_:2},1032,["disabled","onClick:select"])):(a(),F(qe,{key:1,"select-strategy":"classic",class:"py-0",disabled:e(ge)||e(ie),"onUpdate:selected":()=>ot(U)},{default:g(()=>[f(He,{class:"px-2",value:e(j).pluginName,active:e(k).includes(U.name)},{prepend:g(()=>[f(bt,{start:""},{default:g(()=>[f(xt,{"model-value":e(k).includes(U.name),color:"#df2a4c"},null,8,["model-value"])]),_:2},1024)]),append:g(()=>[f(pe,{class:"ml-auto",size:"28",rounded:"",density:"compact",variant:"text",onClick:S(st=>h.value=U.name,["stop"])},{default:g(()=>[f(le,{size:"18"},{default:g(()=>[q(d(e(de)),1)]),_:1})]),_:2},1032,["onClick"])]),default:g(()=>[q(d(U.name)+" ",1)]),_:2},1032,["value","active"])]),_:2},1032,["disabled","onUpdate:selected"])),f(wt,{style:{"border-color":"rgba(var(--color-rgb), 0.1)",opacity:"1"},class:"my-1"})])}),128))])):$("",!0),v.name==="motion_detection"?(a(),r("div",Mn,[f(M,{"plugin-name":e(b)},null,8,["plugin-name"])])):$("",!0),v.name==="object_detection"?(a(),r("div",Un,[f(he,{"plugin-name":e(b)},null,8,["plugin-name"])])):$("",!0),v.name==="audio_detection"?(a(),r("div",Jn,[f(ye,{"plugin-name":e(b)},null,8,["plugin-name"])])):$("",!0)]}),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue"])])):(a(),r("div",Fn,[f(fe,{color:"#df2a4c",indeterminate:""})]))])],4)]),_:1}),s("div",Rn,[s("div",qn,[s("div",{class:"w-full flex flex-col gap-2 h-full",style:Qe({width:e(_e)&&!e(x)?"60%":"100%"})},[s("div",Hn,[e(j)?(a(),F(be,{key:1,ref:"pluginRef",plugin:e(j),"min-height":"175px",height:"100%",width:"100%","border-radius":"4px","show-toggle":"","show-settings":"","show-logo":"","show-plugin-status":"","show-logs":"","show-configs":"",onIsLoading:c[2]||(c[2]=v=>w.value=v)},null,8,["plugin"])):(a(),r("div",Yn,[f(fe,{color:"#df2a4c",indeterminate:""})]))]),e(_e)&&e(x)?(a(),F(e(H),{key:0})):$("",!0),s("div",Gn,[s("div",Kn,d(u.$t("views.plugin.readme")),1),e(o)?(a(),r("div",Wn,[f(fe,{color:"#df2a4c",indeterminate:""})])):(a(),r("div",{key:1,class:"box-content w-full h-full flex-1 markdown-body pt-1",innerHTML:e(Pe).render(e(t)||u.$t("views.plugin.no_readme"))},null,8,Xn))]),s("div",Zn,[s("div",eo,d(u.$t("views.plugin.changelog")),1),e(L)?(a(),r("div",to,[f(fe,{color:"#df2a4c",indeterminate:""})])):(a(),r("div",{key:1,class:"box-content w-full h-full flex-1 markdown-body pt-1",innerHTML:e(Pe).render(e(m)||u.$t("views.plugin.no_changelog"))},null,8,no))])],4),e(_e)&&!e(x)?(a(),F(e(H),{key:0})):$("",!0)])])])),e(h)?(a(),r("div",{key:2,"data-ignore-id":e(P)},[f(xe,{"camera-name":e(h),show:e(V),onClose:c[3]||(c[3]=v=>h.value=void 0)},null,8,["camera-name","show"])],8,oo)):$("",!0),(ce=(re=e(B))==null?void 0:re.schema)!=null&&ce.config?(a(),F(we,{key:3,modelValue:e(E),"onUpdate:modelValue":c[4]||(c[4]=v=>me(E)?E.value=v:null),"ui-schema":{schema:e(B).schema},"plugin-config":e(A)||{},"plugin-name":e(b)},null,8,["modelValue","ui-schema","plugin-config","plugin-name"])):$("",!0)],2)}}}),ts=Se(so,[["__scopeId","data-v-547fa9ea"]]);export{ts as default};
@@ -1 +0,0 @@
1
- import{j as S,f as C,y as j,e as I}from"./main.mlm94TYK.0.0.48.js";import{_ as B}from"./VPluginCard.B_Gjjpzq.0.0.48.js";import{P as z}from"./plugins.Ch_0cv_L.0.0.48.js";import{c as R,S as T,l as F,m as U,D as A,B as G,e as q,b as E}from"./vuetify.DlOnqSL1.0.0.48.js";import{G as L,r,w as H,b as s,d as i,P as l,ab as f,f as n,a9 as c,i as Q,u as e,a7 as D,ac as k,Q as P,ad as $,k as J,S as K,R as O,g as V,_ as W,p as X}from"./@vue.DRcZ6uZO.0.0.48.js";import{e as Y}from"./@mdi.CbjpODVZ.0.0.48.js";import"./vue3-toastify.nL-I4C--.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./pinia.BL6apvtP.0.0.48.js";import"./vue-router.S61oR9AT.0.0.48.js";import"./@vueuse.C65DwZuy.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";import"./vee-validate.Dzj4dBd6.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";import"./VConfigEditor.vue_vue_type_script_setup_true_lang._4BVZ2To.0.0.48.js";import"./ace-builds.DPqPJOIH.0.0.48.js";import"./@vueform.B6V1sb13.0.0.48.js";import"./VConsole.wv8VCqg-.0.0.48.js";import"./types.Cz9TaZAP.0.0.48.js";const Z={class:"v-label"},ee={class:"flex flex-row items-center justify-center w-full mt-8"},te={class:"flex flex-col items-center justify-center w-full mt-3"},le={key:0,class:"my-3"},oe={key:1,class:"search-container w-full overflow-scroll hide-scrollbar"},se=L({__name:"VPluginSearch",setup(M){const a=new z,{smallMobileActive:v}=S(),y=r({page:1,pageSize:-1}),w=r({}),u=r(""),d=r([]),{data:g,isLoading:p}=a.searchPluginsQuery(w,y);H(g,t=>{t!=null&&t.result&&(d.value=t.result.filter(o=>!o.installPath))},{immediate:!0,deep:!0});const h=t=>{t.preventDefault(),w.value.pluginname=u.value??""};return(t,o)=>{const x=B;return s(),i("div",null,[l(T,{class:"ml-auto",onSubmit:h},{default:f(()=>[n("label",Z,c(t.$t("components.form.label.name")),1),l(R,{modelValue:e(u),"onUpdate:modelValue":o[0]||(o[0]=_=>Q(u)?u.value=_:null),placeholder:"camera-ui-","hide-details":"",clearable:"",solo:"",variant:"outlined",density:"comfortable","onClick:clear":h},null,8,["modelValue"])]),_:1}),n("div",ee,[n("h3",null,c(t.$t("components.plugin_search.plugins")),1),l(F,{size:"small",class:"ml-auto",color:"#df2a4c"},{default:f(()=>[D(c(e(d).length),1)]),_:1})]),l(U,{style:{"border-color":"rgba(var(--color-rgb), 0.1)",opacity:"1"},class:"mt-3"}),l(A,{active:e(p),indeterminate:e(p),color:"#df2a4c",height:"2px"},null,8,["active","indeterminate"]),n("div",te,[!e(p)&&!e(d).length?(s(),i("div",le,c(t.$t("views.plugins.no_plugins")),1)):e(p)?J("",!0):(s(),i("div",oe,[n("div",{class:"grid gap-2",style:k(`grid-template-columns: repeat(auto-fill, minmax(${e(v)?"100%":"450px"}, 1fr))`)},[(s(!0),i(P,null,$(e(d),(_,m)=>(s(),i("div",{key:m,class:"relative"},[l(x,{plugin:_,height:"200px","max-height":"200px",width:"100%",background:"var(--background-inner-component-card)","min-width":e(v)?"100%":"450px","show-install-button":"","show-plugin-type":!1,"show-plugin-code":!1,"show-full-plugin-name":""},null,8,["plugin","min-width"])]))),128))],4)]))])])}}}),ie=C(se,[["__scopeId","data-v-0d35625b"]]),ae={class:"page-title"},ne={class:"w-full flex justify-center items-center mt-3"},re=L({__name:"Plugins",setup(M){const{smallMobileActive:a}=S(),v=j(),y=new z,w=r(null),u=r(),d=r({page:1,pageSize:-1}),g=r(!1),{data:p,isLoading:h}=y.getPluginsQuery(d);return K(()=>{u.value=v.connectToNamespace("/plugins")}),O(()=>{var t,o;(o=(t=u.value)==null?void 0:t.end)==null||o.call(t)}),(t,o)=>{const x=ie,_=I;return s(),i("main",{class:V(["w-full h-full",{"px-0":e(a)}])},[n("div",{class:V(["mb-3 flex w-full items-center",{"px-2":e(a)}]),style:{height:"30px"}},[n("h1",ae,c(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)],2),l(W,{name:"fade",tag:"div"},{default:f(()=>{var m;return[e(h)?(s(),i("div",{key:0,class:"grid gap-2",style:k(`grid-template-columns: repeat(auto-fill, minmax(${e(a)?"100%":"450px"}, 1fr))`)},[(s(),i(P,null,$(15,b=>l(G,{key:b,elevation:1,type:"image",class:"relative",style:{"border-radius":"8px",overflow:"hidden"},height:175})),64))],4)):(m=e(p))!=null&&m.result.length?(s(),i("div",{key:2,class:"grid gap-2",style:k(`grid-template-columns: repeat(auto-fill, minmax(${e(a)?"100%":"450px"}, 1fr))`)},[(s(!0),i(P,null,$(e(p).result,(b,N)=>(s(),i("div",{key:N,class:"relative"},[l(B,{ref_for:!0,ref_key:"pluginRef",ref:w,plugin:b,height:"200px","max-height":"200px",width:"100%","min-width":e(a)?"100%":"450px","border-radius":e(a)?"0px":"8px","show-toggle":"","show-settings":"","show-logo":"","show-plugin-status":"","show-logs":"","show-configs":""},null,8,["plugin","min-width","border-radius"])]))),128))],4)):(s(),i("div",{key:1,class:V(["disabled-text",{"px-2":e(a)}])},c(t.$t("views.plugins.no_plugins")),3))]}),_:1}),n("div",ne,[l(E,{variant:"text",color:"#df2a4c",icon:"",onClick:o[0]||(o[0]=X(m=>g.value=!0,["prevent"]))},{default:f(()=>[l(q,{size:"30"},{default:f(()=>[D(c(e(Y)),1)]),_:1})]),_:1})]),l(_,{modelValue:e(g),"onUpdate:modelValue":o[1]||(o[1]=m=>Q(g)?g.value=m:null),title:t.$t("components.dialog.title.search_plugin"),"hide-confirm-button":"",loading:e(h),fullscreen:""},{content:f(()=>[l(x)]),_:1},8,["modelValue","title","loading"])],2)}}}),qe=C(re,[["__scopeId","data-v-8648604f"]]);export{qe as default};
@@ -1 +0,0 @@
1
- import{f as r}from"./main.mlm94TYK.0.0.48.js";import{b as o,d as t}from"./@vue.DRcZ6uZO.0.0.48.js";import"./vue3-toastify.nL-I4C--.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./pinia.BL6apvtP.0.0.48.js";import"./vue-router.S61oR9AT.0.0.48.js";import"./@vueuse.C65DwZuy.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";import"./vuetify.DlOnqSL1.0.0.48.js";import"./@mdi.CbjpODVZ.0.0.48.js";import"./vee-validate.Dzj4dBd6.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";const i={};function m(p,e){return o(),t("div",null,"Test")}const G=r(i,[["render",m]]);export{G as default};
@@ -1 +0,0 @@
1
- import{j as p}from"./main.mlm94TYK.0.0.48.js";import{G as m,b as s,d as a,f as r,a9 as l,g as i,u as e}from"./@vue.DRcZ6uZO.0.0.48.js";import"./vue3-toastify.nL-I4C--.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./pinia.BL6apvtP.0.0.48.js";import"./vue-router.S61oR9AT.0.0.48.js";import"./@vueuse.C65DwZuy.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";import"./vuetify.DlOnqSL1.0.0.48.js";import"./@mdi.CbjpODVZ.0.0.48.js";import"./vee-validate.Dzj4dBd6.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";const n={class:"page-title"},H=m({__name:"Recordings",setup(c){const{smallMobileActive:t}=p();return(o,f)=>(s(),a("main",{class:i(["w-full h-full",{"px-0":e(t)}])},[r("div",{class:i(["flex w-full items-center",{"px-2":e(t)}]),style:{height:"30px"}},[r("h1",n,l(o.$t(`views.${String(o.$route.name).toLowerCase()}.title`)),1)],2)],2))}});export{H as default};
@@ -1 +0,0 @@
1
- import{G as K,t as te,r,c as g,w as p,S as oe,C as ae,a5 as q,b as l,d as h,f as s,Q as G,ad as se,aa as V,ab as S,P as x,a7 as ne,a9 as T,u as o,k as N,ac as E,$ as J,F as ie,p as re,g as P,M as le}from"./@vue.DRcZ6uZO.0.0.48.js";import{k as ce,j as U,S as Q,B as ue,Q as de,T as pe,f as Y,R as Z,c as j}from"./main.mlm94TYK.0.0.48.js";import{u as ee,a as me}from"./vue-router.S61oR9AT.0.0.48.js";import{o as fe,f as ve,g as be}from"./@vueuse.C65DwZuy.0.0.48.js";import{s as _e}from"./pinia.BL6apvtP.0.0.48.js";import{e as he,b as ge}from"./vuetify.DlOnqSL1.0.0.48.js";import{D as Se,H as xe}from"./@mdi.CbjpODVZ.0.0.48.js";import"./perfect-debounce.Cp2ysxOb.0.0.48.js";import"./hookable.B8xFkYCm.0.0.48.js";import"./vue3-toastify.nL-I4C--.0.0.48.js";import"./vue-i18n.DtBWXzdw.0.0.48.js";import"./@intlify.Do1-T-x0.0.0.48.js";import"./axios.DIsA03vz.0.0.48.js";import"./@tanstack.B7j0RsPf.0.0.48.js";import"./vee-validate.Dzj4dBd6.0.0.48.js";import"./@vee-validate.BEda0VqZ.0.0.48.js";import"./zod.bkdEMpUp.0.0.48.js";import"./uuid.Ch9TGLTe.0.0.48.js";import"./socket.io-client.Bc7OYr1V.0.0.48.js";import"./engine.io-client.DRzsVXts.0.0.48.js";import"./engine.io-parser.BiEtp6m2.0.0.48.js";import"./@socket.io.Dkula2eQ.0.0.48.js";import"./socket.io-parser.DPrtWC9i.0.0.48.js";import"./rxjs.MDPuHaHC.0.0.48.js";import"./tslib.9k7AwCpt.0.0.48.js";import"./vue-inline-svg.CPcaXOwr.0.0.48.js";import"./nprogress.DTGXmkhG.0.0.48.js";import"./@xterm.Ct1qg4AD.0.0.48.js";var R=(u=>(u[u.MAXWIDTH=280]="MAXWIDTH",u))(R||{});const ke={class:"flex flex-col w-full pb-safe"},ye={class:"flex flex-row navigation-text"},we={class:"ml-5"},Be={class:"navigation-title"},Ie={key:0},$e={key:0,class:"overlay"},Ce=K({__name:"VSubNavigation",props:{routes:{},description:{type:Boolean,default:!1},state:{type:Boolean,default:!1}},emits:["inner-sidebar-state"],setup(u,{emit:k}){const y=ce(),{desktopActive:n,mobileActive:A,extraSmallMobileActive:c}=U(),m=ee(),f=ve(de),i=k,H=u,{uiSettings:v}=_e(y),{routes:w,state:b,description:B}=te(H),I=r(null),t=r(),a=r(),D=g(()=>{let e=`calc(${$.value}px + env(safe-area-inset-left, 0px))`;return a.value==="closed"&&t.value==="closed"&&(e=`calc(${$.value}px - env(safe-area-inset-left, 0px))`),e}),$=g(()=>{let e=0;switch(a.value){case"opened":e=Q.MAXWIDTH;break;case"minified":e=Q.MINWIDTH;break;case"closed":e=0;break}return!n.value&&!b.value&&(e-=R.MAXWIDTH),e}),C=g(()=>{var e;return c.value&&((e=m.meta)!=null&&e.navigation.showMobileBottomBar)&&v.value.interface.showBottomBarOnMobile?ue.HEIGHT:0});return fe(I,e=>{if(n.value||t.value==="closed")return;e.target.closest(".no-outside")||(t.value="closed")}),f.on(e=>{e.sidebarState&&(a.value=e.sidebarState)}),p(n,e=>{t.value=e?"opened":"closed"}),p(b,e=>{t.value=e?n.value?"opened":"overlay":"closed"}),p(t,e=>{e&&(f.emit({subNavigationState:e}),i("inner-sidebar-state",e))}),oe(()=>{var e;A.value||(e=m.meta)!=null&&e.ui.noMinifiedSidebar?a.value="closed":a.value="minified"}),ae(()=>{var _;t.value=n.value?"opened":"closed";const e=(_=m.name)==null?void 0:_.toString().toLowerCase(),M=document.getElementById(e);M&&setTimeout(()=>{M.scrollIntoView({behavior:"smooth"})},100)}),(e,M)=>{const _=q("router-link");return l(),h(G,null,[s("div",{ref_key:"innerSidebar",ref:I,class:"inner-sidebar-settings",style:E({left:o(D),maxWidth:`${o(R).MAXWIDTH}px`,height:`calc(100dvh - ${o(pe).HEIGHT}px - ${o(C)}px)`})},[s("div",ke,[(l(!0),h(G,null,se(o(w),(d,W)=>{var z;return l(),V(_,{id:(z=d.name)==null?void 0:z.toString().toLowerCase(),key:W,class:"navigation-inner",to:d.path,style:E({"border-bottom":W!==o(w).length-1?"1px solid var(--border)":void 0})},{default:S(()=>{var L,O,X;return[s("div",ye,[x(he,{size:((L=d.meta)==null?void 0:L.navigation.iconSize)||"20",class:"navigation-icon"},{default:S(()=>{var F;return[ne(T((F=d.meta)==null?void 0:F.navigation.icon),1)]}),_:2},1032,["size"]),s("div",we,[s("b",Be,T(e.$t(`navigation.${(O=d.meta)==null?void 0:O.name}`)),1),o(B)?(l(),h("p",Ie,T(e.$t(`navigation_description.${(X=d.meta)==null?void 0:X.description}`)),1)):N("",!0)])])]}),_:2},1032,["id","to","style"])}),128))])],4),x(J,{name:"overlay-fade",mode:"in-out"},{default:S(()=>[o(t)==="overlay"?(l(),h("div",$e)):N("",!0)]),_:1})],64)}}}),Me=Y(Ce,[["__scopeId","data-v-2a952d18"]]),Te={class:"w-full h-full flex flex-row"},Re={class:"flex flex-row items-center"},Ae=K({__name:"Settings",setup(u){const k=ee(),y=me(),{desktopActive:n,smallMobileActive:A}=U(),c=r(),m=r(null),f=r(null),i=r(!1),H=r(0),v=ie(Z.find(t=>t.name==="Settings").children.filter(t=>j(t))),w=g(()=>Z.find(t=>t.name==="Settings").children.filter(t=>j(t))),{isSwiping:b,direction:B}=be(f),I=g(()=>{let t="0px";switch(c.value){case"closed":case"overlay":t="0px";break;case"opened":t=`${R.MAXWIDTH}px`;break}return`padding-left: ${t}`});return p([b,B],()=>{if(b.value){const t=v.findIndex(a=>a.path===k.path.split("/settings/")[1]);switch(B.value){case"right":{const a=v[t-1];a&&y.push({path:a.path})}break;case"left":{const a=v[t+1];a&&y.push({path:a.path})}break}}}),p(c,()=>{i.value=c.value!=="closed"}),p(k,()=>{n.value||(i.value=!1)},{deep:!0}),(t,a)=>{var C;const D=Me,$=q("router-view");return l(),h("main",Te,[x(D,{description:"",state:o(i),routes:o(w),onInnerSidebarState:a[0]||(a[0]=e=>c.value=e)},null,8,["state","routes"]),s("div",{class:"router-container",style:E(`transition: 0.2s all ease-in-out;${o(I)};`)},[s("div",{ref_key:"routerContainer",ref:m,class:"router-container-inner h-full w-full flex flex-col"},[s("div",Re,[o(n)?N("",!0):(l(),V(ge,{key:0,ref:"innerSidebarButton",density:"compact",icon:o(i)?o(Se):o(xe),class:P(["no-outside",{"ml-2":o(A)}]),elevation:"0",style:{border:"1px solid rgba(var(--border-rgb), 0.75)"},onClick:a[1]||(a[1]=re(e=>i.value=!o(i),["prevent"]))},null,8,["icon","class"])),s("h1",{class:P(["page-title text-color",{"mx-3":o(c)!=="opened"}])},T(t.$t(`views.settings.title_${(C=t.$route.meta)==null?void 0:C.name}`)),3)]),s("div",{ref_key:"subviewContainer",ref:f,class:"h-full"},[x($,{class:"mt-10 pb-5",style:{height:"calc(100% - 40px)"}},{default:S(({Component:e})=>[x(J,{name:"fade",mode:"out-in"},{default:S(()=>[(l(),V(le(e),{key:o(H)}))]),_:2},1024)]),_:1})],512)],512)],4)])}}}),rt=Y(Ae,[["__scopeId","data-v-de995e12"]]);export{rt as default};