@camera.ui/server 0.0.64 → 0.0.65

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 (165) hide show
  1. package/README.md +29 -0
  2. package/dist/interface/assets/main.BJSPOiOB.0.0.65.css +1 -0
  3. package/dist/interface/index.html +44 -44
  4. package/dist/interface/js/{@primeuix.BkBDkSvZ.0.0.64.js → @primeuix.bRNqZjQz.0.0.65.js} +43 -43
  5. package/dist/interface/js/{@primevue.CmI9gDHB.0.0.64.js → @primevue.nr37tGdz.0.0.65.js} +8 -8
  6. package/dist/interface/js/@tanstack.BlGunTa7.0.0.65.js +1 -0
  7. package/dist/interface/js/{@vee-validate.C7vvUs8h.0.0.64.js → @vee-validate.CM3rjqgU.0.0.65.js} +1 -1
  8. package/dist/interface/js/{@vueuse.CrzNw-Ap.0.0.64.js → @vueuse.CT4ArM_v.0.0.65.js} +1 -1
  9. package/dist/interface/js/{Adminpanel.Cr9cLAVO.0.0.64.js → Adminpanel.Hao0o9sq.0.0.65.js} +1 -1
  10. package/dist/interface/js/{Camera.PUrVh71A.0.0.64.js → Camera.DlM_BanJ.0.0.65.js} +1 -1
  11. package/dist/interface/js/{Cameras.BOIq1uuW.0.0.64.js → Cameras.Cvg5uMvR.0.0.65.js} +3 -3
  12. package/dist/interface/js/Cammesh.C7rHisuG.0.0.65.js +1 -0
  13. package/dist/interface/js/Camview.BRwFhhGH.0.0.65.js +1 -0
  14. package/dist/interface/js/Config.DD7ZQYIb.0.0.65.js +2 -0
  15. package/dist/interface/js/Console.QIMOqe_j.0.0.65.js +4 -0
  16. package/dist/interface/js/{CuiConsole.IQ_54YIe.0.0.64.js → CuiConsole.DFTuJye2.0.0.65.js} +1 -1
  17. package/dist/interface/js/{CuiPluginCard.Dxq5PA3u.0.0.64.js → CuiPluginCard.DbxiKfJr.0.0.65.js} +2 -2
  18. package/dist/interface/js/{CuiTimeline.Dvg-A_D3.0.0.64.js → CuiTimeline.CoOU089I.0.0.65.js} +1 -1
  19. package/dist/interface/js/{FirstSteps.D21zB4I8.0.0.64.js → FirstSteps.cJvnvd0p.0.0.65.js} +1 -1
  20. package/dist/interface/js/{Plugin.CfcJolDg.0.0.64.js → Plugin.BeWKpCW0.0.0.65.js} +1 -1
  21. package/dist/interface/js/{Plugins.BDGFT4rc.0.0.64.js → Plugins.B2csFQ62.0.0.65.js} +1 -1
  22. package/dist/interface/js/Recordings.QK0SFOP1.0.0.65.js +1 -0
  23. package/dist/interface/js/{Settings.n1QgVCKo.0.0.64.js → Settings.BcPlqzDA.0.0.65.js} +1 -1
  24. package/dist/interface/js/{SettingsAccount.DKOD5pn9.0.0.64.js → SettingsAccount.CT1-o1T3.0.0.65.js} +1 -1
  25. package/dist/interface/js/SettingsAppearance.Ch77J-K9.0.0.65.js +1 -0
  26. package/dist/interface/js/{SettingsAppearance.vue_vue_type_script_setup_true_lang.CdbksPIo.0.0.64.js → SettingsAppearance.vue_vue_type_script_setup_true_lang.Dasx97LK.0.0.65.js} +1 -1
  27. package/dist/interface/js/{SettingsBackup.B6E4lHe4.0.0.64.js → SettingsBackup.Vq3t50X5.0.0.65.js} +1 -1
  28. package/dist/interface/js/SettingsRecordings.BySo0NsX.0.0.65.js +1 -0
  29. package/dist/interface/js/{SettingsRemote.f8St_CxB.0.0.64.js → SettingsRemote.KojIuybJ.0.0.65.js} +1 -1
  30. package/dist/interface/js/{SettingsSystem.DT9sW8Bn.0.0.64.js → SettingsSystem.YAXxE6CS.0.0.65.js} +1 -1
  31. package/dist/interface/js/{SettingsUsers.B4zh8W2n.0.0.64.js → SettingsUsers.CMKXsKiJ.0.0.65.js} +1 -1
  32. package/dist/interface/js/{VersionsHandler.vue_vue_type_script_setup_true_lang.B3uSmbkC.0.0.64.js → VersionsHandler.vue_vue_type_script_setup_true_lang.Cf81Fg_-.0.0.65.js} +1 -1
  33. package/dist/interface/js/{ace-builds.o3mMMRPR.0.0.64.js → ace-builds.BXuWnsHa.0.0.65.js} +57 -56
  34. package/dist/interface/js/ace.config.Ckh2Op_e.0.0.65.js +1 -0
  35. package/dist/interface/js/{backup.DO1-cZ9-.0.0.64.js → backup.DjiTbs1Q.0.0.65.js} +1 -1
  36. package/dist/interface/js/{chart.js.C8Mk0WY-.0.0.64.js → chart.js.COWP81wl.0.0.65.js} +1 -1
  37. package/dist/interface/js/{close-circle.JtgTH15k.0.0.64.js → close-circle.Bt0DolDf.0.0.65.js} +1 -1
  38. package/dist/interface/js/{dnd-core.Bx9xaNPa.0.0.64.js → dnd-core.CIZI_Pnh.0.0.65.js} +1 -1
  39. package/dist/interface/js/{draggabilly.D5Tqj-Pe.0.0.64.js → draggabilly.jXME3Xl7.0.0.65.js} +1 -1
  40. package/dist/interface/js/{engine.io-client.QoXAw3T2.0.0.64.js → engine.io-client.Bwq6EbBZ.0.0.65.js} +1 -1
  41. package/dist/interface/js/{fast-deep-equal.BCDE3b5h.0.0.64.js → fast-deep-equal.wMnqc5nP.0.0.65.js} +1 -1
  42. package/dist/interface/js/{highlight.js.Cl8NtSQj.0.0.64.js → highlight.js.BJ--bJsY.0.0.65.js} +1 -1
  43. package/dist/interface/js/{linkify-it.C7Vybjuw.0.0.64.js → linkify-it.BgSGKsum.0.0.65.js} +1 -1
  44. package/dist/interface/js/main.DteM3Tyw.0.0.65.js +31 -0
  45. package/dist/interface/js/{markdown-it.DORLzL2K.0.0.64.js → markdown-it.CC2C4XG8.0.0.65.js} +1 -1
  46. package/dist/interface/js/{nprogress.CnzttbPh.0.0.64.js → nprogress.Y-YIR5w8.0.0.65.js} +1 -1
  47. package/dist/interface/js/{pinia.9X0kaQsa.0.0.64.js → pinia.B3xyHOOv.0.0.65.js} +2 -2
  48. package/dist/interface/js/primevue.NVdW9OqK.0.0.65.js +142 -0
  49. package/dist/interface/js/{qrcode.JP5fcfb-.0.0.64.js → qrcode.BsXR3CD9.0.0.65.js} +1 -1
  50. package/dist/interface/js/{react-dnd-touch-backend.creckxB4.0.0.64.js → react-dnd-touch-backend.C5TP3QMu.0.0.65.js} +1 -1
  51. package/dist/interface/js/{refresh-rounded.BkvK54dd.0.0.64.js → refresh-rounded.DOZ-DEFG.0.0.65.js} +1 -1
  52. package/dist/interface/js/{rxjs.Bn5s3PW8.0.0.64.js → rxjs.CUmmYmXR.0.0.65.js} +1 -1
  53. package/dist/interface/js/{socket.io-client.DfD_gFzU.0.0.64.js → socket.io-client.Bd1Z4yya.0.0.65.js} +1 -1
  54. package/dist/interface/js/{socket.io-parser.bDxrXN8d.0.0.64.js → socket.io-parser.Brq8Mynw.0.0.65.js} +1 -1
  55. package/dist/interface/js/{system.CyLB9Qia.0.0.64.js → system.Ch6phD20.0.0.65.js} +1 -1
  56. package/dist/interface/js/{trash-fill.DVgSz9-h.0.0.64.js → trash-fill.CK6-EpFr.0.0.65.js} +1 -1
  57. package/dist/interface/js/{unidragger.sbyCyCtI.0.0.64.js → unidragger.BlS0U2Yu.0.0.65.js} +1 -1
  58. package/dist/interface/js/{vee-validate.Y46tSO5P.0.0.64.js → vee-validate.Ba-stGSk.0.0.65.js} +1 -1
  59. package/dist/interface/js/{vue-chartjs.CNgApzKN.0.0.64.js → vue-chartjs._SToXEZB.0.0.65.js} +1 -1
  60. package/dist/interface/js/{vue-i18n.DT9DWshi.0.0.64.js → vue-i18n.Bdweqx4L.0.0.65.js} +1 -1
  61. package/dist/interface/js/{vue-inline-svg.DNIHHt2R.0.0.64.js → vue-inline-svg.dmm7rA4k.0.0.65.js} +1 -1
  62. package/dist/interface/js/{vue-router.Ct6ui15G.0.0.64.js → vue-router.BnioVTWI.0.0.65.js} +1 -1
  63. package/dist/interface/js/vue-zoomable.BYLfof9a.0.0.65.js +1 -0
  64. package/dist/interface/js/{vue3-dnd.DRABWH33.0.0.64.js → vue3-dnd.BltUqrfR.0.0.65.js} +1 -1
  65. package/dist/interface/js/{zoom-out.CTXHwELe.0.0.64.js → zoom-out.B7PvyI4N.0.0.65.js} +1 -1
  66. package/dist/interface/sw.js +1 -1
  67. package/dist/server/package.json +12 -12
  68. package/dist/server/requirements.txt +1 -1
  69. package/dist/server/src/api/controllers/cameras.controller.d.ts +1 -0
  70. package/dist/server/src/api/controllers/cameras.controller.js +27 -0
  71. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  72. package/dist/server/src/api/database/index.js +10 -2
  73. package/dist/server/src/api/database/index.js.map +1 -1
  74. package/dist/server/src/api/go2rtc/api/streams.d.ts +2 -0
  75. package/dist/server/src/api/go2rtc/api/streams.js +44 -0
  76. package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
  77. package/dist/server/src/api/routes/cameras.routes.js +6 -0
  78. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  79. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +8 -0
  80. package/dist/server/src/api/schemas/go2rtc.schema.js +6 -0
  81. package/dist/server/src/api/schemas/go2rtc.schema.js.map +1 -1
  82. package/dist/server/src/api/services/cameras.service.d.ts +1 -0
  83. package/dist/server/src/api/services/cameras.service.js +38 -8
  84. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  85. package/dist/server/src/camera/controller.d.ts +1 -3
  86. package/dist/server/src/camera/controller.js +5 -11
  87. package/dist/server/src/camera/controller.js.map +1 -1
  88. package/dist/server/src/camera/device.d.ts +1 -1
  89. package/dist/server/src/camera/device.js +2 -2
  90. package/dist/server/src/camera/device.js.map +1 -1
  91. package/dist/server/src/camera/frameWorker.js +17 -2
  92. package/dist/server/src/camera/frameWorker.js.map +1 -1
  93. package/dist/server/src/camera/iou.js +13 -14
  94. package/dist/server/src/camera/iou.js.map +1 -1
  95. package/dist/server/src/camera/utils.js.map +1 -1
  96. package/dist/server/src/decoder/wasm/build/decoder.js +4 -4
  97. package/dist/server/src/decoder/wasm/build/decoder.wasm +0 -0
  98. package/dist/server/src/services/config/index.js +11 -0
  99. package/dist/server/src/services/config/index.js.map +1 -1
  100. package/dist/server/src/services/config/types.d.ts +4 -0
  101. package/package.json +12 -12
  102. package/dist/interface/assets/main.B-DXUtPa.0.0.64.css +0 -1
  103. package/dist/interface/assets/mode-json.Br7xisR1.0.0.64.js +0 -275
  104. package/dist/interface/assets/worker-json.DgwNIOck.0.0.64.js +0 -1626
  105. package/dist/interface/js/@tanstack.a3M2yFKp.0.0.64.js +0 -1
  106. package/dist/interface/js/Cammesh.DzbbmpBq.0.0.64.js +0 -1
  107. package/dist/interface/js/Camview.DBZOlAZ1.0.0.64.js +0 -1
  108. package/dist/interface/js/Config.CN7_wXsV.0.0.64.js +0 -2
  109. package/dist/interface/js/Console.BmVLvya9.0.0.64.js +0 -4
  110. package/dist/interface/js/Recordings.i1TKNg0g.0.0.64.js +0 -1
  111. package/dist/interface/js/SettingsAppearance.DC-07_Te.0.0.64.js +0 -1
  112. package/dist/interface/js/SettingsRecordings.DpSe0tNQ.0.0.64.js +0 -1
  113. package/dist/interface/js/ace.config.DPCh40Y7.0.0.64.js +0 -1
  114. package/dist/interface/js/main.Bbw0FMaK.0.0.64.js +0 -31
  115. package/dist/interface/js/primevue.biDzr1tV.0.0.64.js +0 -142
  116. package/dist/interface/js/vue-zoomable.D6Sv0QVL.0.0.64.js +0 -1
  117. package/dist/server/src/camera/session.d.ts +0 -37
  118. package/dist/server/src/camera/session.js +0 -160
  119. package/dist/server/src/camera/session.js.map +0 -1
  120. /package/dist/interface/assets/{@xterm.DYP7pi_n.0.0.64.css → @xterm.DYP7pi_n.0.0.65.css} +0 -0
  121. /package/dist/interface/assets/{Adminpanel.BKek2EMH.0.0.64.css → Adminpanel.BKek2EMH.0.0.65.css} +0 -0
  122. /package/dist/interface/assets/{Cameras.BDWZJqPN.0.0.64.css → Cameras.BDWZJqPN.0.0.65.css} +0 -0
  123. /package/dist/interface/assets/{Camview.Cvhuou6V.0.0.64.css → Camview.Cvhuou6V.0.0.65.css} +0 -0
  124. /package/dist/interface/assets/{CuiConsole.DCYyxdVg.0.0.64.css → CuiConsole.DCYyxdVg.0.0.65.css} +0 -0
  125. /package/dist/interface/assets/{CuiPluginCard.yF8V0SZY.0.0.64.css → CuiPluginCard.yF8V0SZY.0.0.65.css} +0 -0
  126. /package/dist/interface/assets/{CuiTimeline.BkIwlYtw.0.0.64.css → CuiTimeline.BkIwlYtw.0.0.65.css} +0 -0
  127. /package/dist/interface/assets/{Plugin.DJElsAn5.0.0.64.css → Plugin.DJElsAn5.0.0.65.css} +0 -0
  128. /package/dist/interface/assets/{Plugins.BwPlcRrV.0.0.64.css → Plugins.BwPlcRrV.0.0.65.css} +0 -0
  129. /package/dist/interface/assets/{Settings.CkgfRkQr.0.0.64.css → Settings.CkgfRkQr.0.0.65.css} +0 -0
  130. /package/dist/interface/assets/{SettingsAccount.CDZT7gN-.0.0.64.css → SettingsAccount.CDZT7gN-.0.0.65.css} +0 -0
  131. /package/dist/interface/assets/{SettingsBackup.CX0rT0QJ.0.0.64.css → SettingsBackup.CX0rT0QJ.0.0.65.css} +0 -0
  132. /package/dist/interface/assets/{highlight.Ch2EwETz.0.0.64.css → highlight.Ch2EwETz.0.0.65.css} +0 -0
  133. /package/dist/interface/assets/{logo-256.BCQk9H1-.0.0.64.png → logo-256.BCQk9H1-.0.0.65.png} +0 -0
  134. /package/dist/interface/assets/{logo-512.DLKVOU2S.0.0.64.png → logo-512.DLKVOU2S.0.0.65.png} +0 -0
  135. /package/dist/interface/assets/{logo.DmEiRk0z.0.0.64.png → logo.DmEiRk0z.0.0.65.png} +0 -0
  136. /package/dist/interface/assets/{mode-yaml.CIYL8U3d.0.0.64.js → mode-yaml.CIYL8U3d.0.0.65.js} +0 -0
  137. /package/dist/interface/assets/{worker-base.jEXLGV2h.0.0.64.js → worker-base.jEXLGV2h.0.0.65.js} +0 -0
  138. /package/dist/interface/assets/{worker-yaml.B3uUYINB.0.0.64.js → worker-yaml.B3uUYINB.0.0.65.js} +0 -0
  139. /package/dist/interface/js/{@babel.l0sNRNKZ.0.0.64.js → @babel.l0sNRNKZ.0.0.65.js} +0 -0
  140. /package/dist/interface/js/{@intlify.BIbPqCER.0.0.64.js → @intlify.BIbPqCER.0.0.65.js} +0 -0
  141. /package/dist/interface/js/{@kurkle.D8fDXNIl.0.0.64.js → @kurkle.D8fDXNIl.0.0.65.js} +0 -0
  142. /package/dist/interface/js/{@react-dnd.CcwRs9xb.0.0.64.js → @react-dnd.CcwRs9xb.0.0.65.js} +0 -0
  143. /package/dist/interface/js/{@socket.io.Dkula2eQ.0.0.64.js → @socket.io.Dkula2eQ.0.0.65.js} +0 -0
  144. /package/dist/interface/js/{@vue.BxBKarQv.0.0.64.js → @vue.BxBKarQv.0.0.65.js} +0 -0
  145. /package/dist/interface/js/{@xterm.qQMvi5Sq.0.0.64.js → @xterm.tD6mXzBA.0.0.65.js} +0 -0
  146. /package/dist/interface/js/{axios.DHr9lByg.0.0.64.js → axios.DHr9lByg.0.0.65.js} +0 -0
  147. /package/dist/interface/js/{birpc.l0sNRNKZ.0.0.64.js → birpc.l0sNRNKZ.0.0.65.js} +0 -0
  148. /package/dist/interface/js/{compare-versions.DqEOhma6.0.0.64.js → compare-versions.DqEOhma6.0.0.65.js} +0 -0
  149. /package/dist/interface/js/{dijkstrajs.C00ieaqj.0.0.64.js → dijkstrajs.C00ieaqj.0.0.65.js} +0 -0
  150. /package/dist/interface/js/{engine.io-parser.BiEtp6m2.0.0.64.js → engine.io-parser.BiEtp6m2.0.0.65.js} +0 -0
  151. /package/dist/interface/js/{entities.C20TfXL6.0.0.64.js → entities.C20TfXL6.0.0.65.js} +0 -0
  152. /package/dist/interface/js/{ev-emitter.X5f1qa-c.0.0.64.js → ev-emitter.X5f1qa-c.0.0.65.js} +0 -0
  153. /package/dist/interface/js/{get-size.D1dS-IaP.0.0.64.js → get-size.D1dS-IaP.0.0.65.js} +0 -0
  154. /package/dist/interface/js/{hookable.l0sNRNKZ.0.0.64.js → hookable.l0sNRNKZ.0.0.65.js} +0 -0
  155. /package/dist/interface/js/{mdurl.k9Sl0PQj.0.0.64.js → mdurl.k9Sl0PQj.0.0.65.js} +0 -0
  156. /package/dist/interface/js/{perfect-debounce.l0sNRNKZ.0.0.64.js → perfect-debounce.l0sNRNKZ.0.0.65.js} +0 -0
  157. /package/dist/interface/js/{primelocale.Bga3dOQu.0.0.64.js → primelocale.Bga3dOQu.0.0.65.js} +0 -0
  158. /package/dist/interface/js/{punycode.js.Dj65hjkv.0.0.64.js → punycode.js.Dj65hjkv.0.0.65.js} +0 -0
  159. /package/dist/interface/js/{react-dnd-html5-backend.1HQjlkwI.0.0.64.js → react-dnd-html5-backend.1HQjlkwI.0.0.65.js} +0 -0
  160. /package/dist/interface/js/{redux.BFxtlG_c.0.0.64.js → redux.BFxtlG_c.0.0.65.js} +0 -0
  161. /package/dist/interface/js/{tslib.9k7AwCpt.0.0.64.js → tslib.9k7AwCpt.0.0.65.js} +0 -0
  162. /package/dist/interface/js/{uc.micro.kMc2yuuw.0.0.64.js → uc.micro.kMc2yuuw.0.0.65.js} +0 -0
  163. /package/dist/interface/js/{uuid.C6aID195.0.0.64.js → uuid.C6aID195.0.0.65.js} +0 -0
  164. /package/dist/interface/js/{vue.l0sNRNKZ.0.0.64.js → vue.l0sNRNKZ.0.0.65.js} +0 -0
  165. /package/dist/interface/js/{zod.2bfLsWMZ.0.0.64.js → zod.2bfLsWMZ.0.0.65.js} +0 -0
@@ -1 +0,0 @@
1
- import{B as Z,r as w,k as b,c as E,w as _,o as S,d as g,G as B,M as D,O as Y,h,P as X,e as p,$ as y,ab as C}from"./@vue.BxBKarQv.0.0.64.js";const j={class:"controll"},L={class:"controll__item controll__item--circle"},M={class:"controll__pan controll__item--circle__inner"},T={class:"controll__pan__up controll__item--circle__inner__up"},O={class:"controll__pan__right controll__item--circle__inner__right"},$={class:"controll__pan__down controll__item--circle__inner__down"},H={class:"controll__pan__left controll__item--circle__inner__left"},W={class:"controll__home controll__item controll__item--list-item"},I={class:"controll__zoom-in controll__item controll__item--list-item"},U={class:"controll__zoom-in controll__item controll__item--list-item"},V=Z({__name:"ControlButtons",emits:["buttondown","buttonup"],setup(e,{emit:l}){const u=l;function r(a,o){u("buttondown",{key:o})}function t(a,o){u("buttonup",{key:o})}return(a,o)=>(g(),E("div",{id:"v-zoomable-control-btns",class:"controll__buttons",onDblclick:o[31]||(o[31]=y(()=>{},["stop"])),onMousedown:o[32]||(o[32]=y(()=>{},["stop"]))},[p("ul",j,[p("li",L,[p("ul",M,[p("li",T,[p("a",{onPointerdown:o[0]||(o[0]=n=>r(n,"pan-up")),onPointerup:o[1]||(o[1]=n=>t(n,"pan-up")),onPointercancel:o[2]||(o[2]=n=>t(n,"pan-up")),onPointerleave:o[3]||(o[3]=n=>t(n,"pan-up")),onContextmenu:o[4]||(o[4]=y(()=>{},["prevent"]))},o[33]||(o[33]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"feather feather-chevron-up"},[p("polyline",{points:"18 15 12 9 6 15"})],-1)]),32)]),p("li",O,[p("a",{onPointerdown:o[5]||(o[5]=n=>r(n,"pan-right")),onPointerup:o[6]||(o[6]=n=>t(n,"pan-right")),onPointercancel:o[7]||(o[7]=n=>t(n,"pan-right")),onPointerleave:o[8]||(o[8]=n=>t(n,"pan-right")),onContextmenu:o[9]||(o[9]=y(()=>{},["prevent"]))},o[34]||(o[34]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"feather feather-chevron-right"},[p("polyline",{points:"9 18 15 12 9 6"})],-1)]),32)]),p("li",$,[p("a",{onPointerdown:o[10]||(o[10]=n=>r(n,"pan-down")),onPointerup:o[11]||(o[11]=n=>t(n,"pan-down")),onPointercancel:o[12]||(o[12]=n=>t(n,"pan-down")),onPointerleave:o[13]||(o[13]=n=>t(n,"pan-down")),onContextmenu:o[14]||(o[14]=y(()=>{},["prevent"]))},o[35]||(o[35]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"feather feather-chevron-down"},[p("polyline",{points:"6 9 12 15 18 9"})],-1)]),32)]),p("li",H,[p("a",{onPointerdown:o[15]||(o[15]=n=>r(n,"pan-left")),onPointercancel:o[16]||(o[16]=n=>t(n,"pan-left")),onPointerup:o[17]||(o[17]=n=>t(n,"pan-left")),onPointerleave:o[18]||(o[18]=n=>t(n,"pan-left")),onContextmenu:o[19]||(o[19]=y(()=>{},["prevent"]))},o[36]||(o[36]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"feather feather-chevron-left"},[p("polyline",{points:"15 18 9 12 15 6"})],-1)]),32)])])]),p("li",W,[p("a",{onPointerdown:o[20]||(o[20]=n=>r(n,"home"))},o[37]||(o[37]=[C('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minimize-2" data-v-3ba139de><polyline points="4 14 10 14 10 20" data-v-3ba139de></polyline><polyline points="20 10 14 10 14 4" data-v-3ba139de></polyline><line x1="14" y1="10" x2="21" y2="3" data-v-3ba139de></line><line x1="3" y1="21" x2="10" y2="14" data-v-3ba139de></line></svg>',1)]),32)]),p("li",I,[p("a",{onPointerdown:o[21]||(o[21]=n=>r(n,"zoom-in")),onPointerup:o[22]||(o[22]=n=>t(n,"zoom-in")),onPointercancel:o[23]||(o[23]=n=>t(n,"zoom-in")),onPointerleave:o[24]||(o[24]=n=>t(n,"zoom-in")),onContextmenu:o[25]||(o[25]=y(()=>{},["prevent"]))},o[38]||(o[38]=[C('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-zoom-in" data-v-3ba139de><circle cx="11" cy="11" r="8" data-v-3ba139de></circle><line x1="21" y1="21" x2="16.65" y2="16.65" data-v-3ba139de></line><line x1="11" y1="8" x2="11" y2="14" data-v-3ba139de></line><line x1="8" y1="11" x2="14" y2="11" data-v-3ba139de></line></svg>',1)]),32)]),p("li",U,[p("a",{onPointerdown:o[26]||(o[26]=n=>r(n,"zoom-out")),onPointerup:o[27]||(o[27]=n=>t(n,"zoom-out")),onPointercancel:o[28]||(o[28]=n=>t(n,"zoom-out")),onPointerleave:o[29]||(o[29]=n=>t(n,"zoom-out")),onContextmenu:o[30]||(o[30]=y(()=>{},["prevent"]))},o[39]||(o[39]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"feather feather-zoom-out"},[p("circle",{cx:"11",cy:"11",r:"8"}),p("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),p("line",{x1:"8",y1:"11",x2:"14",y2:"11"})],-1)]),32)])])],32))}}),N=(e,l)=>{const u=e.__vccOpts||e;for(const[r,t]of l)u[r]=t;return u},q=N(V,[["__scopeId","data-v-3ba139de"]]);function G(){let e=0;function l(r,t,a,o){r(),e=window.setTimeout(()=>{e=window.setInterval(()=>{t()},o)},a)}function u(){e&&(window.clearInterval(e),e=0)}return{startHold:l,clearHold:u}}const x="control-btn";function R({props:e,transform:l}){let u=G();function r(c){u.startHold(()=>{l.changeZoom(c*e.buttonZoomStep*.5,x)},()=>{l.changeZoom(c*e.buttonZoomStep*.5,x)},300,50)}function t(c){if(!e.disabled)switch(c.key){case"home":n();break;case"zoom-in":r(1);break;case"zoom-out":r(-1);break;case"pan-left":o({x:1,y:0});break;case"pan-right":o({x:-1,y:0});break;case"pan-up":o({x:0,y:1});break;case"pan-down":o({x:0,y:-1});break}}function a(c){u.clearHold()}function o(c){u.startHold(()=>{l.changePan(c.x*e.buttonPanStep,c.y*e.buttonPanStep,x)},()=>{l.changePan(c.x*e.buttonPanStep,c.y*e.buttonPanStep,x)},300,50)}function n(){l.goHome(x)}return{onButtonDown:t,onButtonUp:a}}function A({props:e,transform:l}){let u={x:0,y:0};function r(o){e.disabled||o.pointerType!=="mouse"||!e.mouseEnabled||(u={x:o.clientX,y:o.clientY},document.addEventListener("pointermove",a,{passive:!1}),document.addEventListener("pointerup",function(n){document.removeEventListener("pointermove",a)}),document.addEventListener("pointerleave",function(n){document.removeEventListener("pointermove",a)}),document.addEventListener("pointercancel",function(n){document.removeEventListener("pointermove",a)}))}function t(o){if(e.disabled||!e.dblClickEnabled||!e.zoomEnabled)return;const n={x:o.clientX,y:o.clientY};l.changeZoom(e.dblClickZoomStep,"dblClick",n)}function a(o){if(e.disabled||!e.panEnabled||o.pointerType!=="mouse"||!e.mouseEnabled)return;let n={x:o.clientX-u.x,y:o.clientY-u.y};l.changePan(n.x,n.y,o.pointerType),u={x:o.clientX,y:o.clientY},o.preventDefault()}return{onPointerDown:r,onDblClick:t}}function F({props:e,transform:l}){let u=w({}),r=w(0),t=null;function a(c){if(e.disabled||!e.touchEnabled||!e.panEnabled&&!e.zoomEnabled||(c.preventDefault(),c.touches.length<1))return;const i=c.touches.item(0);if(!i)return;let d=0,s={x:i.clientX,y:i.clientY};if(c.touches.length===2){const v=c.touches.item(1);let f=o({x:i?i.clientX:0,y:i?i.clientY:0},{x:v?v.clientX:0,y:v?v.clientY:0});r.value<=0?(r.value=f.distance,d=0):(d=f.distance/r.value*l.zoom.value-l.zoom.value,r.value=f.distance),s=f.center}if(e.zoomEnabled&&l.changeZoom(d,"touch",s),t===null){t={x:s.x,y:s.y};return}const m={x:s.x-t.x,y:s.y-t.y};e.panEnabled&&l.changePan(m.x,m.y,"touch"),t={x:s.x,y:s.y}}function o(c,i){let d=Math.sqrt(Math.pow(c.x-i.x,2)+Math.pow(c.y-i.y,2)),s={x:(c.x+i.x)/2,y:(c.y+i.y)/2};return{distance:d,center:s}}function n(c){e.disabled||!e.touchEnabled||(t=null,document.addEventListener("touchmove",a,{passive:!1}),document.addEventListener("touchend",function(i){c.touches.length<2&&(r.value=-1),document.removeEventListener("touchmove",a)}))}return{onTouchStart:n,touchCount:b(()=>Object.keys(u.value).length)}}function J({props:e,onChange:l,container:u,target:r}){const t=w({x:0,y:0}),a=w(0);S(()=>{a.value=e.minZoom,t.value={x:e.pan!=null?e.pan.x:e.initialPanX,y:e.pan!=null?e.pan.y:e.initialPanY},e.zoom?a.value=e.zoom:e.initialZoom>=e.minZoom&&e.initialZoom<=e.maxZoom&&(a.value=e.initialZoom)}),_(()=>e.zoom,()=>{isNaN(e.zoom)||(a.value=e.zoom)}),_(()=>e.pan,()=>{e.pan&&(t.value.x=e.pan.x,t.value.y=e.pan.y)},{deep:!0});function o(i,d,s){if(isNaN(i)||i===0)return;const m=a.value;let v=a.value+i;if(v>e.maxZoom?v=e.maxZoom:v<e.minZoom&&(v=e.minZoom),Math.abs(m-v)<1e-4)return;if(a.value=v,e.zoomOrigin==="center"&&(s=k(u.value)),e.zoomOrigin!=="content-center"){s||(s=k(u.value));const P=K(u.value,t.value),z={x:(v-m)*((P.x-s.x)/m),y:(v-m)*((P.y-s.y)/m)};n(z.x,z.y,"zoom")}let f={zoom:v,delta:{zoom:i,pan:{x:0,y:0}},pan:{x:t.value.x,y:t.value.y,deltaX:0,deltaY:0},type:d};l("zoom",f)}function n(i,d,s){isNaN(i)&&(i=0),isNaN(d)&&(d=0),t.value={x:t.value.x+i,y:t.value.y+d};let m={zoom:a.value,delta:{zoom:0,pan:{x:i,y:d}},pan:{x:t.value.x,y:t.value.y,deltaX:i,deltaY:d},type:s};l("panned",m)}function c(i){a.value=e.initialZoom,l("zoom",{zoom:a.value,pan:{x:t.value.x,y:t.value.y,deltaX:0,deltaY:0},type:i});let d={x:e.initialPanX-t.value.x,y:e.initialPanY-t.value.y};t.value={x:e.initialPanX,y:e.initialPanY},l("panned",{zoom:a.value,pan:{x:t.value.x,y:t.value.y,deltaX:d.x,deltaY:d.y},type:i})}return{zoom:b(()=>a.value),pan:b(()=>t.value),setZoom:i=>{a.value=i},setPan:i=>{t.value=i},changeZoom:o,changePan:n,goHome:c}}function k(e){const l=e.getBoundingClientRect();return{x:l.left+l.width/2,y:l.top+l.height/2}}function K(e,l){const u=k(e);return{x:u.x+l.x,y:u.y+l.y}}function Q({props:e,transform:l}){function u(r){if(e.disabled||!e.wheelEnabled||!e.zoomEnabled)return;const t=e.wheelZoomStep*-1*r.deltaY/Math.abs(r.deltaY),a={x:r.clientX,y:r.clientY};l.changeZoom(t,"wheel",a),r.preventDefault()}return{onWheel:u}}function oo({props:e,onChange:l,container:u,target:r}){const t=J({props:e,onChange:l,container:u,target:r}),a=F({props:e,transform:t}),o=Q({props:e,transform:t}),n=A({props:e,transform:t}),c=R({props:e,transform:t});return{zoom:t.zoom,pan:t.pan,setZoom:t.setZoom,setPan:t.setPan,onWheel:o.onWheel,onTouchStart:a.onTouchStart,onButtonUp:c.onButtonUp,onButtonDown:c.onButtonDown,onPointerDown:n.onPointerDown,onDblClick:n.onDblClick}}const eo=Z({__name:"VueZoomable",props:{zoom:{type:Number,default:null},pan:{type:Object,default:null},selector:{type:String,default:"* > *"},maxZoom:{type:Number,default:3},minZoom:{type:Number,default:.5},initialPanX:{type:Number,default:0},initialPanY:{type:Number,default:0},initialZoom:{type:Number,default:.5},dblClickZoomStep:{type:Number,default:.4},wheelZoomStep:{type:Number,default:.4},panEnabled:{type:Boolean,default:!0},zoomEnabled:{type:Boolean,default:!0},mouseEnabled:{type:Boolean,default:!0},touchEnabled:{type:Boolean,default:!0},dblClickEnabled:{type:Boolean,default:!0},wheelEnabled:{type:Boolean,default:!0},enableControlButton:{type:Boolean,default:!0},buttonPanStep:{type:Number,default:15},buttonZoomStep:{type:Number,default:.1},disabled:{type:Boolean,default:!1},zoomOrigin:{type:String,default:"pointer"}},emits:["panned","zoom","update:zoom","update:pan"],setup(e,{emit:l}){let u=l,r=e,t=w(),a=b(()=>{var d;return(d=t.value)==null?void 0:d.querySelector(r.selector)}),o=oo({props:r,onChange:n,container:t,target:a});function n(d,s){d==="zoom"?u("update:zoom",s.zoom):d==="panned"&&u("update:pan",s.pan),u(d,s)}let c=b(()=>`translate(${o.pan.value.x}px, ${o.pan.value.y}px) scale(${o.zoom.value})`);function i(){a.value&&(a.value.style.transform=c.value,a.value.style.transformOrigin="center center",a.value.style.transition="transform 0.07s ease-out",a.value.style.transformBox="fill-box")}return _(c,()=>{i()},{flush:"post"}),S(()=>{i()}),(d,s)=>(g(),E("div",{ref_key:"container",ref:t,class:X(d.$style.container),onDblclick:s[0]||(s[0]=(...m)=>h(o).onDblClick&&h(o).onDblClick(...m)),onPointerdown:s[1]||(s[1]=(...m)=>h(o).onPointerDown&&h(o).onPointerDown(...m)),onWheel:s[2]||(s[2]=(...m)=>h(o).onWheel&&h(o).onWheel(...m)),onTouchstart:s[3]||(s[3]=(...m)=>h(o).onTouchStart&&h(o).onTouchStart(...m))},[B(d.$slots,"default",{},void 0,!0),B(d.$slots,"buttons",{},()=>[h(r).enableControlButton?(g(),D(q,{key:0,onButtondown:h(o).onButtonDown,onButtonup:h(o).onButtonUp},null,8,["onButtondown","onButtonup"])):Y("",!0)],!0)],34))}}),to="_container_irdvc_2",no="_buttons_irdvc_11",ao={container:to,buttons:no},lo={$style:ao},io=N(eo,[["__cssModules",lo],["__scopeId","data-v-fce7d501"]]);export{io as m};
@@ -1,37 +0,0 @@
1
- import { Subscribed } from '@camera.ui/common/utils';
2
- import { ReplaySubject } from 'rxjs';
3
- import type { CameraDeviceSource } from '@camera.ui/types';
4
- import type { CameraController } from './controller.js';
5
- export declare class Session {
6
- private camera;
7
- private source;
8
- readonly onStarted: ReplaySubject<void>;
9
- readonly onError: ReplaySubject<Error>;
10
- readonly onConnected: ReplaySubject<void>;
11
- readonly onCallEnded: ReplaySubject<void>;
12
- private client;
13
- private isStopped;
14
- private hasEnded;
15
- constructor(camera: CameraController, source: CameraDeviceSource);
16
- start(): Promise<void>;
17
- stop(): Promise<void>;
18
- private bindConnection;
19
- private callError;
20
- private callEnded;
21
- }
22
- export declare class SessionController extends Subscribed {
23
- private camera;
24
- private readonly sessions;
25
- private killed;
26
- private restartTimer;
27
- constructor(camera: CameraController);
28
- start(sources: CameraDeviceSource[]): void;
29
- stop(): void;
30
- private setupEventListeners;
31
- private startSession;
32
- private setupEventListener;
33
- private removeOrphanedSessions;
34
- private createNewSessions;
35
- private stopSessions;
36
- private canStartSession;
37
- }
@@ -1,160 +0,0 @@
1
- import { sleep, Subscribed } from '@camera.ui/common/utils';
2
- import { RTSPClient } from '@camera.ui/rtsp/rtspClient';
3
- import { ReplaySubject } from 'rxjs';
4
- export class Session {
5
- camera;
6
- source;
7
- onStarted = new ReplaySubject();
8
- onError = new ReplaySubject();
9
- onConnected = new ReplaySubject();
10
- onCallEnded = new ReplaySubject(1);
11
- client;
12
- isStopped = false;
13
- hasEnded = false;
14
- constructor(camera, source) {
15
- this.camera = camera;
16
- this.source = source;
17
- this.client = new RTSPClient({ url: this.source.urls.rtsp.muted, readOnly: true });
18
- this.bindConnection();
19
- }
20
- async start() {
21
- if (!this.camera.connected || this.isStopped) {
22
- return;
23
- }
24
- this.hasEnded = false;
25
- await this.client.start();
26
- }
27
- async stop() {
28
- this.isStopped = true;
29
- await this.callEnded();
30
- }
31
- bindConnection() {
32
- this.client.onPlay.subscribe(this.onConnected);
33
- this.client.onClose.subscribe((error) => {
34
- if (error) {
35
- this.callError(error);
36
- }
37
- else {
38
- this.callEnded();
39
- }
40
- });
41
- }
42
- async callError(error) {
43
- this.onError.next(error);
44
- await this.callEnded();
45
- }
46
- async callEnded() {
47
- if (this.hasEnded) {
48
- return;
49
- }
50
- this.hasEnded = true;
51
- await this.client.close();
52
- this.onCallEnded.next();
53
- }
54
- }
55
- export class SessionController extends Subscribed {
56
- camera;
57
- sessions = new Map();
58
- killed = false;
59
- restartTimer = 60000;
60
- constructor(camera) {
61
- super();
62
- this.camera = camera;
63
- this.setupEventListeners();
64
- }
65
- start(sources) {
66
- if (!this.camera.connected) {
67
- this.camera.logger.debug('Camera not connected, hot mode will not start');
68
- this.stop();
69
- return;
70
- }
71
- this.removeOrphanedSessions(sources);
72
- this.createNewSessions(sources);
73
- }
74
- stop() {
75
- this.killed = true;
76
- this.unsubscribe();
77
- this.stopSessions();
78
- }
79
- setupEventListeners() {
80
- this.addSubscriptions(this.camera.onPropertyChange('sources').subscribe(() => {
81
- if (this.killed) {
82
- return;
83
- }
84
- this.start(this.camera.sources);
85
- }), this.camera.onConnected.subscribe((connected) => {
86
- if (connected) {
87
- this.start(this.camera.sources);
88
- }
89
- else {
90
- this.stopSessions();
91
- }
92
- }));
93
- }
94
- async startSession(source, session) {
95
- if (!this.canStartSession(source)) {
96
- this.camera.logger.debug(`[${source.name}] Skipping hot mode start`);
97
- return;
98
- }
99
- try {
100
- this.camera.logger.debug(`[${source.name}] Starting hot mode...`);
101
- await session.start();
102
- }
103
- catch (error) {
104
- this.camera.logger.debug(`[${source.name}] Failed to start hot mode:`, error.message);
105
- }
106
- }
107
- setupEventListener(source, session) {
108
- this.addSubscriptions(session.onConnected.subscribe(() => {
109
- this.camera.logger.debug(`[${source.name}] Hot mode started`);
110
- }), session.onError.subscribe((error) => {
111
- this.camera.logger.debug(`[${source.name}] Hot mode error:`, error.message);
112
- }), session.onCallEnded.subscribe(async () => {
113
- this.camera.logger.debug(`[${source.name}] Hot mode stopped`);
114
- if (!this.canStartSession(source)) {
115
- return;
116
- }
117
- try {
118
- await sleep(this.restartTimer);
119
- await this.startSession(source, session);
120
- }
121
- catch (error) {
122
- this.camera.logger.debug(`[${source.name}] Failed to restart hot mode:`, error.message);
123
- }
124
- }));
125
- }
126
- async removeOrphanedSessions(sources) {
127
- for (const [id, session] of this.sessions.entries()) {
128
- const source = sources.find((source) => source._id === id);
129
- if (source && !this.canStartSession(source)) {
130
- await session.stop();
131
- this.sessions.delete(id);
132
- }
133
- }
134
- }
135
- createNewSessions(sources) {
136
- for (const source of sources) {
137
- if (source.role !== 'snapshot' && source.hotMode && !this.sessions.has(source._id)) {
138
- const session = new Session(this.camera, source);
139
- this.sessions.set(source._id, session);
140
- this.setupEventListener(source, session);
141
- this.startSession(source, session);
142
- }
143
- }
144
- }
145
- stopSessions() {
146
- for (const session of this.sessions.values()) {
147
- session.stop();
148
- }
149
- }
150
- canStartSession(source) {
151
- const cameraSource = this.camera.sources.find((s) => s._id === source._id);
152
- return (!this.killed &&
153
- this.camera.connected &&
154
- cameraSource !== undefined &&
155
- cameraSource.hotMode &&
156
- cameraSource.role !== 'snapshot' &&
157
- this.sessions.has(cameraSource._id));
158
- }
159
- }
160
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/camera/session.ts"],"names":[],"mappings":"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"}