@nethesis/phone-island 1.1.3 → 1.1.5-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/dist/App.js.map +1 -1
  2. package/dist/components/AlertView/index.js.map +1 -1
  3. package/dist/components/AudioBars.js.map +1 -1
  4. package/dist/components/AudioPlayerView/PlayerFooterActions.js +1 -1
  5. package/dist/components/AudioPlayerView/PlayerFooterActions.js.map +1 -1
  6. package/dist/components/AudioPlayerView/Progress.js.map +1 -1
  7. package/dist/components/AudioPlayerView/index.js +1 -1
  8. package/dist/components/AudioPlayerView/index.js.map +1 -1
  9. package/dist/components/CallView/Actions.js +1 -1
  10. package/dist/components/CallView/Actions.js.map +1 -1
  11. package/dist/components/CallView/BackCall.js +1 -1
  12. package/dist/components/CallView/BackCall.js.map +1 -1
  13. package/dist/components/CallView/DeviceIcon.js +1 -1
  14. package/dist/components/CallView/DeviceIcon.js.map +1 -1
  15. package/dist/components/CallView/DisplayName.js +1 -1
  16. package/dist/components/CallView/DisplayName.js.map +1 -1
  17. package/dist/components/CallView/DisplayNameUtils.js.map +1 -1
  18. package/dist/components/CallView/Number.js +1 -1
  19. package/dist/components/CallView/Number.js.map +1 -1
  20. package/dist/components/CallView/NumberPopover.js +1 -1
  21. package/dist/components/CallView/NumberPopover.js.map +1 -1
  22. package/dist/components/CallView/index.js +1 -1
  23. package/dist/components/CallView/index.js.map +1 -1
  24. package/dist/components/ConferenceView/ConferenceUsersList.js +1 -1
  25. package/dist/components/ConferenceView/ConferenceUsersList.js.map +1 -1
  26. package/dist/components/ConferenceView/index.js +1 -1
  27. package/dist/components/ConferenceView/index.js.map +1 -1
  28. package/dist/components/ContactView/ContactListView.js +1 -1
  29. package/dist/components/ContactView/ContactListView.js.map +1 -1
  30. package/dist/components/ContactView/SelectContactNumberView.js +1 -1
  31. package/dist/components/ContactView/SelectContactNumberView.js.map +1 -1
  32. package/dist/components/ContactView/TransferActions.js +1 -1
  33. package/dist/components/ContactView/TransferActions.js.map +1 -1
  34. package/dist/components/Hangup.js +1 -1
  35. package/dist/components/Hangup.js.map +1 -1
  36. package/dist/components/KeypadView/index.js +1 -1
  37. package/dist/components/KeypadView/index.js.map +1 -1
  38. package/dist/components/OperatorBusyView/index.js +1 -1
  39. package/dist/components/OperatorBusyView/index.js.map +1 -1
  40. package/dist/components/PhysicalRecorderView/index.js +1 -1
  41. package/dist/components/PhysicalRecorderView/index.js.map +1 -1
  42. package/dist/components/RecorderView/Actions.js +1 -1
  43. package/dist/components/RecorderView/Actions.js.map +1 -1
  44. package/dist/components/RecorderView/BarsGroup.js.map +1 -1
  45. package/dist/components/RecorderView/index.js +1 -1
  46. package/dist/components/RecorderView/index.js.map +1 -1
  47. package/dist/components/SettingsView/AudioView.js +1 -1
  48. package/dist/components/SettingsView/AudioView.js.map +1 -1
  49. package/dist/components/SettingsView/MicrophoneView.js +1 -1
  50. package/dist/components/SettingsView/MicrophoneView.js.map +1 -1
  51. package/dist/components/SettingsView/SettingsHeader.js +1 -1
  52. package/dist/components/SettingsView/SettingsHeader.js.map +1 -1
  53. package/dist/components/SettingsView/ThemeView.js +1 -1
  54. package/dist/components/SettingsView/ThemeView.js.map +1 -1
  55. package/dist/components/SettingsView/index.js +1 -1
  56. package/dist/components/SettingsView/index.js.map +1 -1
  57. package/dist/components/SideView/SideView.js +1 -1
  58. package/dist/components/SideView/SideView.js.map +1 -1
  59. package/dist/components/SideView/hooks/useSideViewLogic.js +1 -1
  60. package/dist/components/SideView/hooks/useSideViewLogic.js.map +1 -1
  61. package/dist/components/Socket.js +1 -1
  62. package/dist/components/Socket.js.map +1 -1
  63. package/dist/components/SwitchDeviceView/index.js +1 -1
  64. package/dist/components/SwitchDeviceView/index.js.map +1 -1
  65. package/dist/components/SwitchInputView/DropdownContent.js +1 -1
  66. package/dist/components/SwitchInputView/DropdownContent.js.map +1 -1
  67. package/dist/components/SwitchInputView/Index.js +1 -1
  68. package/dist/components/TextScroll.js +1 -1
  69. package/dist/components/TextScroll.js.map +1 -1
  70. package/dist/components/TranscriptionView/TranscriptionView.js +1 -1
  71. package/dist/components/TranscriptionView/TranscriptionView.js.map +1 -1
  72. package/dist/components/VideoStreamingEmptyState/index.js +1 -1
  73. package/dist/components/VideoStreamingEmptyState/index.js.map +1 -1
  74. package/dist/components/VideoStreamingSkeleton/index.js +1 -1
  75. package/dist/components/VideoStreamingSkeleton/index.js.map +1 -1
  76. package/dist/components/VideoView/index.js +1 -1
  77. package/dist/components/VideoView/index.js.map +1 -1
  78. package/dist/components/WebRTC.js +1 -1
  79. package/dist/components/WebRTC.js.map +1 -1
  80. package/dist/events/SocketEvents.js.map +1 -1
  81. package/dist/lib/i18n.js +1 -1
  82. package/dist/lib/i18n.js.map +1 -1
  83. package/dist/lib/phone/call.js +1 -1
  84. package/dist/lib/phone/call.js.map +1 -1
  85. package/dist/lib/phone/counterpartDevice.js +1 -1
  86. package/dist/lib/phone/counterpartDevice.js.map +1 -1
  87. package/dist/lib/phone/screenShare.js +2 -0
  88. package/dist/lib/phone/screenShare.js.map +1 -0
  89. package/dist/lib/phone/video.js.map +1 -1
  90. package/dist/lib/player/audio.js.map +1 -1
  91. package/dist/lib/user/default_device.js.map +1 -1
  92. package/dist/lib/user/extensions.js.map +1 -1
  93. package/dist/models/currentCall.js.map +1 -1
  94. package/dist/models/island.js.map +1 -1
  95. package/dist/models/player.js +1 -1
  96. package/dist/models/player.js.map +1 -1
  97. package/dist/node_modules/classnames/index.js +1 -1
  98. package/dist/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs.js +1 -1
  99. package/dist/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs.js.map +1 -1
  100. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js +1 -1
  101. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js.map +1 -1
  102. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js +1 -1
  103. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js.map +1 -1
  104. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js +1 -1
  105. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js.map +1 -1
  106. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs.js.map +1 -1
  107. package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs.js.map +1 -1
  108. package/dist/node_modules/framer-motion/dist/es/context/LazyContext.mjs.js.map +1 -1
  109. package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs.js.map +1 -1
  110. package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs.js.map +1 -1
  111. package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.mjs.js +1 -1
  112. package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.mjs.js.map +1 -1
  113. package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs.js.map +1 -1
  114. package/dist/node_modules/framer-motion/dist/es/gestures/hover.mjs.js +1 -1
  115. package/dist/node_modules/framer-motion/dist/es/gestures/hover.mjs.js.map +1 -1
  116. package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.mjs.js +1 -1
  117. package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.mjs.js.map +1 -1
  118. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js +1 -1
  119. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js.map +1 -1
  120. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs.js +1 -1
  121. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs.js.map +1 -1
  122. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs.js +1 -1
  123. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs.js.map +1 -1
  124. package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.mjs.js +1 -1
  125. package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.mjs.js.map +1 -1
  126. package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs.js +1 -1
  127. package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs.js.map +1 -1
  128. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js +1 -1
  129. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js.map +1 -1
  130. package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.mjs.js.map +1 -1
  131. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs.js +1 -1
  132. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs.js.map +1 -1
  133. package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs.js +1 -1
  134. package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs.js.map +1 -1
  135. package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.mjs.js +1 -1
  136. package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.mjs.js.map +1 -1
  137. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js +1 -1
  138. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js.map +1 -1
  139. package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs.js +1 -1
  140. package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs.js.map +1 -1
  141. package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.mjs.js +1 -1
  142. package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.mjs.js.map +1 -1
  143. package/dist/node_modules/i18next/dist/esm/i18next.js +1 -1
  144. package/dist/node_modules/i18next/dist/esm/i18next.js.map +1 -1
  145. package/dist/node_modules/js-base64/base64.mjs.js +1 -1
  146. package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
  147. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js +1 -1
  148. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js.map +1 -1
  149. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js +1 -1
  150. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js.map +1 -1
  151. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js +1 -1
  152. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js.map +1 -1
  153. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs.js +1 -1
  154. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs.js.map +1 -1
  155. package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs.js +1 -1
  156. package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs.js.map +1 -1
  157. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js +1 -1
  158. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js.map +1 -1
  159. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js +1 -1
  160. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js.map +1 -1
  161. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js +1 -1
  162. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js.map +1 -1
  163. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js +1 -1
  164. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js.map +1 -1
  165. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs.js +1 -1
  166. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs.js.map +1 -1
  167. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js +1 -1
  168. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js.map +1 -1
  169. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs.js +1 -1
  170. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs.js.map +1 -1
  171. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js +1 -1
  172. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js.map +1 -1
  173. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js +1 -1
  174. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js.map +1 -1
  175. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js +1 -1
  176. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js.map +1 -1
  177. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js +1 -1
  178. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js.map +1 -1
  179. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js +1 -1
  180. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js.map +1 -1
  181. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js +1 -1
  182. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js.map +1 -1
  183. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js +1 -1
  184. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js.map +1 -1
  185. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs.js +1 -1
  186. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs.js.map +1 -1
  187. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js +1 -1
  188. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js.map +1 -1
  189. package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs.js +1 -1
  190. package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs.js.map +1 -1
  191. package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs.js +1 -1
  192. package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs.js.map +1 -1
  193. package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs.js +1 -1
  194. package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs.js.map +1 -1
  195. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js +1 -1
  196. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js.map +1 -1
  197. package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs.js +1 -1
  198. package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs.js.map +1 -1
  199. package/dist/node_modules/motion-dom/dist/es/animation/utils/notify-inspector.mjs.js +2 -0
  200. package/dist/node_modules/motion-dom/dist/es/animation/utils/notify-inspector.mjs.js.map +1 -0
  201. package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-start-time.mjs.js +2 -0
  202. package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-start-time.mjs.js.map +1 -0
  203. package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs.js +1 -1
  204. package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs.js.map +1 -1
  205. package/dist/node_modules/motion-dom/dist/es/animation/waapi/transforms/TransformAnimation.mjs.js +2 -0
  206. package/dist/node_modules/motion-dom/dist/es/animation/waapi/transforms/TransformAnimation.mjs.js.map +1 -0
  207. package/dist/node_modules/motion-dom/dist/es/animation/waapi/transforms/groups.mjs.js +2 -0
  208. package/dist/node_modules/motion-dom/dist/es/animation/waapi/transforms/groups.mjs.js.map +1 -0
  209. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs.js +1 -1
  210. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs.js.map +1 -1
  211. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/needs-mixer.mjs.js +2 -0
  212. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/needs-mixer.mjs.js.map +1 -0
  213. package/dist/node_modules/motion-dom/dist/es/events/add-pointer-event.mjs.js +2 -0
  214. package/dist/node_modules/motion-dom/dist/es/events/add-pointer-event.mjs.js.map +1 -0
  215. package/dist/node_modules/motion-dom/dist/es/events/event-info.mjs.js +2 -0
  216. package/dist/node_modules/motion-dom/dist/es/events/event-info.mjs.js.map +1 -0
  217. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js +1 -1
  218. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js.map +1 -1
  219. package/dist/node_modules/motion-dom/dist/es/frameloop/frame-data.mjs.js +2 -0
  220. package/dist/node_modules/motion-dom/dist/es/frameloop/frame-data.mjs.js.map +1 -0
  221. package/dist/node_modules/motion-dom/dist/es/frameloop/frame.mjs.js +1 -1
  222. package/dist/node_modules/motion-dom/dist/es/frameloop/frame.mjs.js.map +1 -1
  223. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js +1 -1
  224. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js.map +1 -1
  225. package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs.js +1 -1
  226. package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs.js.map +1 -1
  227. package/dist/node_modules/motion-dom/dist/es/gestures/drag/VisualElementDragControls.mjs.js +2 -0
  228. package/dist/node_modules/motion-dom/dist/es/gestures/drag/VisualElementDragControls.mjs.js.map +1 -0
  229. package/dist/node_modules/motion-dom/dist/es/gestures/drag/utils/constraints.mjs.js +2 -0
  230. package/dist/node_modules/motion-dom/dist/es/gestures/drag/utils/constraints.mjs.js.map +1 -0
  231. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js +1 -1
  232. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js.map +1 -1
  233. package/dist/node_modules/motion-dom/dist/es/gestures/pan/PanSession.mjs.js +2 -0
  234. package/dist/node_modules/motion-dom/dist/es/gestures/pan/PanSession.mjs.js.map +1 -0
  235. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js +1 -1
  236. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js.map +1 -1
  237. package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs.js +1 -1
  238. package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs.js.map +1 -1
  239. package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs.js +1 -1
  240. package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs.js.map +1 -1
  241. package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs.js +1 -1
  242. package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs.js.map +1 -1
  243. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js +1 -1
  244. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js.map +1 -1
  245. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js +1 -1
  246. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js.map +1 -1
  247. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js +1 -1
  248. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js.map +1 -1
  249. package/dist/node_modules/motion-dom/dist/es/projection/geometry/round.mjs.js +2 -0
  250. package/dist/node_modules/motion-dom/dist/es/projection/geometry/round.mjs.js.map +1 -0
  251. package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs.js +1 -1
  252. package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs.js.map +1 -1
  253. package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs.js +1 -1
  254. package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs.js.map +1 -1
  255. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js +1 -1
  256. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js.map +1 -1
  257. package/dist/node_modules/motion-dom/dist/es/projection/node/root.mjs.js +2 -0
  258. package/dist/node_modules/motion-dom/dist/es/projection/node/root.mjs.js.map +1 -0
  259. package/dist/node_modules/motion-dom/dist/es/projection/styles/default-scale-correctors.mjs.js +2 -0
  260. package/dist/node_modules/motion-dom/dist/es/projection/styles/default-scale-correctors.mjs.js.map +1 -0
  261. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs.js +1 -1
  262. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs.js.map +1 -1
  263. package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.mjs.js +1 -1
  264. package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.mjs.js.map +1 -1
  265. package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.mjs.js.map +1 -1
  266. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js +1 -1
  267. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js.map +1 -1
  268. package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.mjs.js +1 -1
  269. package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.mjs.js.map +1 -1
  270. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js +1 -1
  271. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js.map +1 -1
  272. package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js.map +1 -1
  273. package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs.js +1 -1
  274. package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs.js.map +1 -1
  275. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js +1 -1
  276. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js.map +1 -1
  277. package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs.js +1 -1
  278. package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs.js.map +1 -1
  279. package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs.js +1 -1
  280. package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs.js.map +1 -1
  281. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js +1 -1
  282. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js.map +1 -1
  283. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs.js +1 -1
  284. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs.js.map +1 -1
  285. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js +1 -1
  286. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js.map +1 -1
  287. package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs.js +1 -1
  288. package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs.js.map +1 -1
  289. package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs.js +1 -1
  290. package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs.js.map +1 -1
  291. package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs.js +1 -1
  292. package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs.js.map +1 -1
  293. package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs.js +1 -1
  294. package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs.js.map +1 -1
  295. package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs.js +1 -1
  296. package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs.js.map +1 -1
  297. package/dist/node_modules/motion-dom/dist/es/resize/index.mjs.js +1 -1
  298. package/dist/node_modules/motion-dom/dist/es/resize/index.mjs.js.map +1 -1
  299. package/dist/node_modules/motion-dom/dist/es/scope/active.mjs.js +2 -0
  300. package/dist/node_modules/motion-dom/dist/es/scope/active.mjs.js.map +1 -0
  301. package/dist/node_modules/motion-dom/dist/es/stats/buffer.mjs.js +2 -0
  302. package/dist/node_modules/motion-dom/dist/es/stats/buffer.mjs.js.map +1 -0
  303. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js +1 -1
  304. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js.map +1 -1
  305. package/dist/node_modules/motion-dom/dist/es/utils/distance.mjs.js.map +1 -0
  306. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js +1 -1
  307. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js.map +1 -1
  308. package/dist/node_modules/motion-dom/dist/es/utils/is-ref-object.mjs.js.map +1 -0
  309. package/dist/node_modules/motion-dom/dist/es/utils/mix/color.mjs.js +1 -1
  310. package/dist/node_modules/motion-dom/dist/es/utils/mix/color.mjs.js.map +1 -1
  311. package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.mjs.js +1 -1
  312. package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.mjs.js.map +1 -1
  313. package/dist/node_modules/motion-dom/dist/es/utils/mix/index.mjs.js +1 -1
  314. package/dist/node_modules/motion-dom/dist/es/utils/mix/index.mjs.js.map +1 -1
  315. package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs.js +1 -1
  316. package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs.js.map +1 -1
  317. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js +1 -1
  318. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js.map +1 -1
  319. package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.mjs.js +1 -1
  320. package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.mjs.js.map +1 -1
  321. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js +1 -1
  322. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js.map +1 -1
  323. package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs.js +1 -1
  324. package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs.js.map +1 -1
  325. package/dist/node_modules/motion-dom/dist/es/value/utils/as-number.mjs.js +2 -0
  326. package/dist/node_modules/motion-dom/dist/es/value/utils/as-number.mjs.js.map +1 -0
  327. package/dist/node_modules/motion-utils/dist/es/easing/circ.mjs.js.map +1 -1
  328. package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs.js +1 -1
  329. package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs.js.map +1 -1
  330. package/dist/node_modules/motion-utils/dist/es/easing/utils/map.mjs.js +1 -1
  331. package/dist/node_modules/motion-utils/dist/es/easing/utils/map.mjs.js.map +1 -1
  332. package/dist/node_modules/motion-utils/dist/es/errors.mjs.js +1 -1
  333. package/dist/node_modules/motion-utils/dist/es/errors.mjs.js.map +1 -1
  334. package/dist/node_modules/motion-utils/dist/es/subscription-manager.mjs.js +1 -1
  335. package/dist/node_modules/motion-utils/dist/es/subscription-manager.mjs.js.map +1 -1
  336. package/dist/node_modules/react-i18next/dist/es/context.js +1 -1
  337. package/dist/node_modules/react-i18next/dist/es/context.js.map +1 -1
  338. package/dist/node_modules/react-i18next/dist/es/defaults.js +1 -1
  339. package/dist/node_modules/react-i18next/dist/es/defaults.js.map +1 -1
  340. package/dist/node_modules/react-i18next/dist/es/i18nInstance.js +1 -1
  341. package/dist/node_modules/react-i18next/dist/es/i18nInstance.js.map +1 -1
  342. package/dist/node_modules/react-i18next/dist/es/initReactI18next.js +1 -1
  343. package/dist/node_modules/react-i18next/dist/es/initReactI18next.js.map +1 -1
  344. package/dist/node_modules/react-i18next/dist/es/unescape.js +1 -1
  345. package/dist/node_modules/react-i18next/dist/es/unescape.js.map +1 -1
  346. package/dist/node_modules/react-i18next/dist/es/useTranslation.js +1 -1
  347. package/dist/node_modules/react-i18next/dist/es/useTranslation.js.map +1 -1
  348. package/dist/node_modules/react-i18next/dist/es/utils.js +1 -1
  349. package/dist/node_modules/react-i18next/dist/es/utils.js.map +1 -1
  350. package/dist/node_modules/react-redux/node_modules/react-is/index.js +1 -1
  351. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -1
  352. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +1 -1
  353. package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
  354. package/dist/package.json.js +1 -1
  355. package/dist/services/astproxy.js +1 -1
  356. package/dist/services/astproxy.js.map +1 -1
  357. package/dist/services/phonebook.js +1 -1
  358. package/dist/services/phonebook.js.map +1 -1
  359. package/dist/utils/customHooks/useLocalStorage.js.map +1 -1
  360. package/dist/utils/deviceUtils.js.map +1 -1
  361. package/package.json +6 -6
  362. package/dist/_virtual/arrayLikeToArray.js +0 -2
  363. package/dist/_virtual/arrayLikeToArray.js.map +0 -1
  364. package/dist/_virtual/arrayWithHoles.js +0 -2
  365. package/dist/_virtual/arrayWithHoles.js.map +0 -1
  366. package/dist/_virtual/classCallCheck.js +0 -2
  367. package/dist/_virtual/classCallCheck.js.map +0 -1
  368. package/dist/_virtual/createClass.js +0 -2
  369. package/dist/_virtual/createClass.js.map +0 -1
  370. package/dist/_virtual/defineProperty.js +0 -2
  371. package/dist/_virtual/defineProperty.js.map +0 -1
  372. package/dist/_virtual/iterableToArrayLimit.js +0 -2
  373. package/dist/_virtual/iterableToArrayLimit.js.map +0 -1
  374. package/dist/_virtual/nonIterableRest.js +0 -2
  375. package/dist/_virtual/nonIterableRest.js.map +0 -1
  376. package/dist/_virtual/objectWithoutProperties.js +0 -2
  377. package/dist/_virtual/objectWithoutProperties.js.map +0 -1
  378. package/dist/_virtual/objectWithoutPropertiesLoose.js +0 -2
  379. package/dist/_virtual/objectWithoutPropertiesLoose.js.map +0 -1
  380. package/dist/_virtual/slicedToArray.js +0 -2
  381. package/dist/_virtual/slicedToArray.js.map +0 -1
  382. package/dist/_virtual/toPrimitive.js +0 -2
  383. package/dist/_virtual/toPrimitive.js.map +0 -1
  384. package/dist/_virtual/toPropertyKey.js +0 -2
  385. package/dist/_virtual/toPropertyKey.js.map +0 -1
  386. package/dist/_virtual/typeof.js +0 -2
  387. package/dist/_virtual/typeof.js.map +0 -1
  388. package/dist/_virtual/unsupportedIterableToArray.js +0 -2
  389. package/dist/_virtual/unsupportedIterableToArray.js.map +0 -1
  390. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +0 -2
  391. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +0 -1
  392. package/dist/node_modules/@babel/runtime/helpers/arrayWithHoles.js +0 -2
  393. package/dist/node_modules/@babel/runtime/helpers/arrayWithHoles.js.map +0 -1
  394. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +0 -2
  395. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +0 -1
  396. package/dist/node_modules/@babel/runtime/helpers/createClass.js +0 -2
  397. package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +0 -1
  398. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +0 -2
  399. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +0 -1
  400. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +0 -2
  401. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +0 -1
  402. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +0 -2
  403. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js.map +0 -1
  404. package/dist/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +0 -2
  405. package/dist/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js.map +0 -1
  406. package/dist/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +0 -2
  407. package/dist/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js.map +0 -1
  408. package/dist/node_modules/@babel/runtime/helpers/esm/inherits.js +0 -2
  409. package/dist/node_modules/@babel/runtime/helpers/esm/inherits.js.map +0 -1
  410. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +0 -2
  411. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +0 -1
  412. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +0 -2
  413. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js.map +0 -1
  414. package/dist/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +0 -2
  415. package/dist/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js.map +0 -1
  416. package/dist/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +0 -2
  417. package/dist/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +0 -1
  418. package/dist/node_modules/@babel/runtime/helpers/esm/toArray.js +0 -2
  419. package/dist/node_modules/@babel/runtime/helpers/esm/toArray.js.map +0 -1
  420. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +0 -2
  421. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +0 -1
  422. package/dist/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +0 -2
  423. package/dist/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js.map +0 -1
  424. package/dist/node_modules/@babel/runtime/helpers/nonIterableRest.js +0 -2
  425. package/dist/node_modules/@babel/runtime/helpers/nonIterableRest.js.map +0 -1
  426. package/dist/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +0 -2
  427. package/dist/node_modules/@babel/runtime/helpers/objectWithoutProperties.js.map +0 -1
  428. package/dist/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +0 -2
  429. package/dist/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js.map +0 -1
  430. package/dist/node_modules/@babel/runtime/helpers/slicedToArray.js +0 -2
  431. package/dist/node_modules/@babel/runtime/helpers/slicedToArray.js.map +0 -1
  432. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +0 -2
  433. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +0 -1
  434. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +0 -2
  435. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +0 -1
  436. package/dist/node_modules/@babel/runtime/helpers/typeof.js +0 -2
  437. package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +0 -1
  438. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -2
  439. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +0 -1
  440. package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.mjs.js +0 -2
  441. package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.mjs.js.map +0 -1
  442. package/dist/node_modules/framer-motion/dist/es/events/event-info.mjs.js +0 -2
  443. package/dist/node_modules/framer-motion/dist/es/events/event-info.mjs.js.map +0 -1
  444. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js +0 -2
  445. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js.map +0 -1
  446. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js +0 -2
  447. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js.map +0 -1
  448. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js +0 -2
  449. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js.map +0 -1
  450. package/dist/node_modules/framer-motion/dist/es/utils/distance.mjs.js.map +0 -1
  451. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js +0 -2
  452. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js.map +0 -1
  453. package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.mjs.js.map +0 -1
  454. package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.js +0 -2
  455. package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.js.map +0 -1
  456. package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs.js +0 -2
  457. package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs.js.map +0 -1
  458. package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.mjs.js +0 -2
  459. package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.mjs.js.map +0 -1
  460. package/dist/node_modules/void-elements/index.js +0 -2
  461. package/dist/node_modules/void-elements/index.js.map +0 -1
  462. /package/dist/node_modules/{framer-motion → motion-dom}/dist/es/utils/distance.mjs.js +0 -0
  463. /package/dist/node_modules/{framer-motion → motion-dom}/dist/es/utils/is-ref-object.mjs.js +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("react");require("../node_modules/react-redux/es/index.js");var n=require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),r=require("../lib/webrtc/janus.js"),o=require("../lib/webrtc/messages.js"),a=require("../store/index.js"),i=require("../lib/devices/devices.js"),c=require("../lib/phone/call.js"),l=require("../lib/phone/video.js"),s=require("../events/SocketEvents.js"),u=require("../lib/webrtc/connection.js"),d=require("../static/outgoing_ringtone.js"),v=require("../utils/customHooks/useEventListener.js"),g=require("../utils/genericFunctions/eventDispatch.js"),p=require("../utils/genericFunctions/localStorage.js"),f=require("../lib/user/default_device.js"),m=require("../node_modules/react-redux/es/hooks/useDispatch.js");function S(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var w=S(t);exports.WebRTC=function(S){var b,h,D=S.hostName,I=S.sipExten,C=S.sipSecret,R=S.children,A=S.sipHost,T=S.sipPort,y=S.reload,E=S.uaType,k=S.reloadedCallback,U=m.useDispatch(),O=t.useRef(null),j=t.useRef(!1),G=t.useRef(Date.now()),J=t.useRef(!1),N=t.useRef(0),P=t.useRef(!1),_=t.useRef(null),L=t.useRef(!1),V=t.useRef(!1),M=t.useRef(null),W=t.useRef(null),q=t.useRef(null),H=t.useRef(0),x=t.useRef(null),Y=t.useRef(null),z=5e3,F=t.useRef(r.default),B=function(){var e,t=a.store.getState().webrtc.sipcall;return!(!a.store.getState().currentCall.accepted||!(null===(e=null==t?void 0:t.webrtcStuff)||void 0===e?void 0:e.pc))},K=function(){Y.current&&(clearInterval(Y.current),Y.current=null)},Q=function(){if(!Y.current){var e=Date.now(),t=!1,n=function(){var n,r=a.store.getState().webrtc.janusInstance;!(null==r?void 0:r.reconnect)||(null===(n=r.isConnected)||void 0===n?void 0:n.call(r))||!B()||Date.now()-e>6e4?K():t||(t=!0,r.reconnect({success:function(){var e;t=!1,console.info("[MEDIA-RECOVERY] Janus session reclaimed during active call",{sessionId:null===(e=r.getSessionId)||void 0===e?void 0:e.call(r),timestamp:(new Date).toISOString()}),P.current=!1,K(),Z(0)},error:function(e){t=!1,console.warn("[MEDIA-RECOVERY] Janus session reclaim failed, retrying",{error:e,timestamp:(new Date).toISOString()})}}))};Y.current=setInterval(n,3e3),n()}},X=function(){q.current&&(clearTimeout(q.current),q.current=null),H.current=0},Z=function(e){q.current||(q.current=setTimeout($,e))},$=function(){var e,t,n;q.current=null;var r=a.store.getState().webrtc,o=r.sipcall,i=r.janusInstance,c=null===(t=null===(e=null==o?void 0:o.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState;if(B()&&"connected"!==c&&"completed"!==c&&"closed"!==c)if(null===(n=null==i?void 0:i.isConnected)||void 0===n?void 0:n.call(i)){var l=x.current;l&&Date.now()-l<1e4?Z(z):H.current>=5?console.warn("[MEDIA-RECOVERY] ICE restart attempts exhausted",{iceState:c,timestamp:(new Date).toISOString()}):(H.current++,console.info("[MEDIA-RECOVERY] Media path down during active call, restarting ICE",{attempt:H.current,iceState:c,timestamp:(new Date).toISOString()}),o.createOffer({iceRestart:!0,success:function(e){x.current=Date.now(),o.send({message:{request:"update"},jsep:e})},error:function(e){console.error("[MEDIA-RECOVERY] ICE restart offer failed",{error:e})}}),Z(z))}else Q();else H.current=0},ee={},te=t.useCallback(function(e,t){var n,r,c,s;if(e)if("answer"!==e.type){if("offer"!==e.type)return console.warn("[SIP UPDATE] Unsupported JSEP type",{sourceEvent:t,type:e.type}),void o.handleRemote(e);var u=a.store.getState().webrtc.sipcall,d=a.store.getState().currentCall.isLocalVideoEnabled;if(u){var v=(null!==(s=null===(c=null===(r=null===(n=null==u?void 0:u.webrtcStuff)||void 0===n?void 0:n.pc)||void 0===r?void 0:r.getTransceivers)||void 0===c?void 0:c.call(r))&&void 0!==s?s:[]).some(function(e){var t,n;return"audio"===(null===(n=null===(t=e.sender)||void 0===t?void 0:t.track)||void 0===n?void 0:n.kind)}),g=[],p="string"==typeof e.sdp&&e.sdp.includes("m=audio "),f=l.sdpHasActiveVideo(e.sdp);if(p&&!v){var m=i.getCurrentAudioInputDeviceId();g.push(m?{type:"audio",capture:{deviceId:{exact:m}},recv:!0}:{type:"audio",capture:!0,recv:!0})}if(f)if(d){var S=i.getCurrentVideoInputDeviceId();g.push(S?{type:"video",capture:{deviceId:{exact:S}},recv:!0}:{type:"video",capture:!0,recv:!0})}else g.push({type:"video",recv:!0});u.createAnswer({jsep:e,tracks:g,success:function(e){u.send({message:{request:"update"},jsep:e})},error:function(e){console.error("[SIP UPDATE] WebRTC error...",{sourceEvent:t,error:e})}})}}else o.handleRemote(e)},[]),ne=t.useCallback(function(){var t,r,i,u,v,m;if(V.current)console.log("[JANUS-GUARD] initWebRTC already in progress, skipping",{timestamp:(new Date).toISOString()});else{V.current=!0,M.current&&clearTimeout(M.current),M.current=setTimeout(function(){V.current&&(console.warn("[JANUS-GUARD] Initialization timeout (30s) - resetting isInitializing flag",{timestamp:(new Date).toISOString()}),V.current=!1,P.current=!0,U.alerts.setAlert("webrtc_down"),g.eventDispatch("phone-island-alert-set",{type:"webrtc_down"})),M.current=null},3e4);var S=a.store.getState().webrtc,w=S.janusInstance,b=S.registered,h=S.isDetached,R=!0;if(w){var y=null===(t=w.getSessionId)||void 0===t?void 0:t.call(w),k=null===(r=w.isConnected)||void 0===r?void 0:r.call(w),O=N.current,G=Math.round(O/6e4),J=O>18e5,L=a.store.getState().webrtc,q=L.sipcall,H=!!L.jsepGlobal,Y="connected"===(null===(u=null===(i=null==q?void 0:q.webrtcStuff)||void 0===i?void 0:i.pc)||void 0===u?void 0:u.iceConnectionState)||"completed"===(null===(m=null===(v=null==q?void 0:q.webrtcStuff)||void 0===v?void 0:v.pc)||void 0===m?void 0:m.iceConnectionState);if(!k||!b||h||J&&!(H||Y)){var z=k?h?"phone island detached":b?J?"long inactivity (".concat(G," min) without active call"):"unknown":"not registered":"not connected";console.warn("[JANUS-GUARD] Session exists but is invalid, cleaning up and reinitializing",{reason:z,sessionId:y,isConnected:k,registered:b,isDetached:h,inactivityMinutes:G,hasIncomingCall:H,hasActiveCall:Y,timestamp:(new Date).toISOString()});try{w.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0})}catch(e){console.error("[JANUS-GUARD] Error destroying session",e)}a.store.dispatch.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null})}else console.log("[JANUS-GUARD] Valid session already exists, skipping init",{sessionId:y,isConnected:k,registered:b,isDetached:h,inactivityMinutes:G,hasIncomingCall:H,hasActiveCall:Y,timestamp:(new Date).toISOString()}),R=!1}if(!R)return V.current=!1,void(M.current&&(clearTimeout(M.current),M.current=null));console.log("[JANUS-GUARD] Creating new session",{timestamp:(new Date).toISOString()}),F.current.init({debug:"all",dependencies:F.current.useDefaultDependencies({adapter:n.default}),callback:function(){var t,n=new F.current({server:"https://".concat(D,"/janus"),success:function(){n.attach&&n.attach({plugin:"janus.plugin.sip",opaqueId:"sebastian_"+(new Date).getTime(),success:function(e){e&&(U.webrtc.updateWebRTC({sipcall:e}),o.register({sipExten:I,sipSecret:C,sipHost:A,sipPort:T}),e&&F.current.log&&F.current.log("SIP plugin attached! ("+e.getPlugin()+", id = )"))},error:function(e){F.current.error&&(F.current.error(" -- Error attaching plugin..."),F.current.error(e)),V.current=!1,M.current&&(clearTimeout(M.current),M.current=null)},consentDialog:function(e){F.current.log&&F.current.log("janus consentDialog (on: ".concat(e,")"))},webrtcState:function(e){if(F.current.log&&F.current.log("Janus says our WebRTC PeerConnection is "+(e?"up":"down")+" now"),e){var t=a.store.getState().island.view,n=a.store.getState().currentCall,r=n.accepted,o=n.outgoing,i=n.incoming;(r||o||i)&&!t&&(console.warn('[WEBRTC] WebRTC up but view is null with active call - forcing view to "call"'),a.store.dispatch.island.setIslandView("call"))}},iceState:function(e){if(a.store.getState().webrtc.sipcall&&F.current.log&&F.current.log('ICE state of PeerConnection of handle has changed to "'.concat(e,'"')),"disconnected"!==e&&"failed"!==e||!B()?"connected"!==e&&"completed"!==e||X():Z("failed"===e?0:2e3),"connected"===e||"completed"===e){var t=a.store.getState().island.view,n=a.store.getState().currentCall,r=n.accepted,o=n.outgoing,i=n.incoming;(r||o||i)&&!t&&(console.warn('[WEBRTC] ICE connected but view is null with active call - forcing view to "call"'),a.store.dispatch.island.setIslandView("call"))}},mediaState:function(e,t){F.current.log&&F.current.log("Janus "+(t?"started":"stopped")+" receiving our "+e)},slowLink:function(e,t){e?F.current.warn&&F.current.warn("SLOW link: several missing packets from janus (".concat(t,")")):F.current.warn&&F.current.warn("SLOW link: janus is not receiving all your packets (".concat(t,")"))},onmessage:function(e,t){var n=a.store.getState().webrtc.sipcall;F.current.debug&&(F.current.debug(" ::: Got a message :::"),F.current.debug(JSON.stringify(e)));var r=e.error;if(null!=r&&null!=r)return x.current?(console.warn("[MEDIA-RECOVERY] ICE restart update refused",{error:r}),void(x.current=null)):void(a.store.getState().webrtc.registered?(n&&n.hangup(),a.store.dispatch.player.stopAudioPlayer()):F.current.log&&F.current.log("User is not registered"));var i=e.result;if(null!=i&&void 0!==i.event&&null!==i.event){var u=i.event,v=a.store.getState().recorder.recording,p=a.store.getState().island.view;switch(u){case"registration_failed":F.current.error&&F.current.error("Registration failed: "+i.code+" "+i.reason),V.current=!1,M.current&&(clearTimeout(M.current),M.current=null),a.store.dispatch.webrtc.updateWebRTC({registered:!1}),U.alerts.setAlert("webrtc_down"),g.eventDispatch("phone-island-alert-set",{type:"webrtc_down"});break;case"unregistered":F.current.log&&F.current.log("Successfully un-registered as "+i.username+"!"),a.store.dispatch.webrtc.updateWebRTC({registered:!1}),g.eventDispatch("phone-island-webrtc-unregistered",{});break;case"registered":F.current.log&&F.current.log("Successfully registered as "+i.username+"!"),console.log("[REGISTER] Registration successful",{username:i.username,wasAlreadyRegistered:a.store.getState().webrtc.registered,timestamp:(new Date).toISOString()}),g.eventDispatch("phone-island-webrtc-registered",{}),a.store.getState().webrtc.registered||a.store.dispatch.webrtc.updateWebRTC({registered:!0,isDetached:!1}),U.alerts.removeAlert("webrtc_down"),g.eventDispatch("phone-island-alert-removed",{type:"webrtc_down"}),P.current=!1,V.current=!1,M.current&&(clearTimeout(M.current),M.current=null),W.current&&(clearTimeout(W.current),W.current=null,console.info("[JANUS-GUARD] Cleared network error grace timeout - connection restored")),U.webrtc.updateLastActivity((new Date).getTime());break;case"registering":F.current.log&&F.current.log("janus registering");break;case"calling":U.currentCall.checkOutgoingUpdate({outgoingWebRTC:!0}),U.webrtc.updateLastActivity((new Date).getTime());break;case"ringing":a.store.getState().player.audioPlayerPlaying||U.player.updateStartAudioPlayer({src:d.default,loop:!0}),U.webrtc.updateLastActivity((new Date).getTime()),"call"!==p&&U.island.setIslandView("call");break;case"progress":F.current.log&&F.current.log("There's early media from "+i.username+", wairing for the call!"),t&&o.handleRemote(t),U.webrtc.updateLastActivity((new Date).getTime());break;case"incomingcall":var m=a.store.getState().currentUser.default_device,S=a.store.getState().currentUser,w=S.endpoints,b=S.username,h=a.store.getState().users.extensions,D=function(){if(!h||!b)return!1;var e=Object.values(h).filter(function(e){return(null==e?void 0:e.username)===b});return null==e?void 0:e.some(function(e){var t=null==w?void 0:w.extension.find(function(t){return t.id===(null==e?void 0:e.exten)});return"nethlink"===(null==t?void 0:t.type)&&"offline"!==(null==e?void 0:e.status)})};t&&(console.log("[JSEP] Saving jsepGlobal for incoming call",{from:i.username,timestamp:(new Date).toISOString()}),U.webrtc.updateWebRTC({jsepGlobal:t}),_.current=Date.now()),("mobile"===E&&D()||"desktop"===E&&("webrtc"===(null==m?void 0:m.type)||void 0===(null==m?void 0:m.type)&&!D()||!D()&&"physical"===(null==m?void 0:m.type)))&&(v?U.recorder.setIncoming(!0):(U.currentCall.checkIncomingUpdatePlay({incoming:!0,incomingWebRTC:!0}),F.current.log&&(U.currentCall.updateIncoming(!0),F.current.log("Incoming call from "+i.username+"!"))),U.webrtc.updateLastActivity((new Date).getTime()));break;case"accepted":if(x.current){x.current=null,console.info("[MEDIA-RECOVERY] ICE restart answered",{timestamp:(new Date).toISOString()}),t&&o.handleRemote(t);break}var I=Math.floor(Date.now()/1e3);if(F.current.log){var C=i.username||i.displayname||a.store.getState().currentCall.number||"Remote party";F.current.log(C+" accepted the call!")}t&&o.handleRemote(t),console.log("[JSEP] Clearing jsepGlobal after call accepted",{timestamp:(new Date).toISOString()}),U.webrtc.updateWebRTC({jsepGlobal:null}),_.current=null,U.currentCall.checkAcceptedUpdate({acceptedWebRTC:!0}),U.currentCall.updateCurrentCall({incoming:!1,incomingWebRTC:!1,startTime:null==I?void 0:I.toString()}),a.store.getState().currentCall.isLocalVideoEnabled&&(l.sdpHasActiveVideo(null==t?void 0:t.sdp)?(U.island.setIslandView("video"),l.notifyPeerVideoStart(),s.dispatchVideoCallStarted({initiator:"local",callUser:a.store.getState().currentUser.username,destUser:a.store.getState().currentCall.username}),g.eventDispatch("phone-island-video-enabled",{})):l.releaseLocalVideo()),a.store.dispatch.player.stopAudioPlayer(),U.webrtc.updateLastActivity((new Date).getTime());break;case"updatingcall":F.current.log&&F.current.log("Got SIP re-INVITE, preparing update answer"),t&&l.sdpDeclinesVideo(t.sdp)&&a.store.getState().currentCall.isLocalVideoEnabled&&l.releaseLocalVideo(),t&&te(t,"updatingcall"),U.webrtc.updateLastActivity((new Date).getTime());break;case"hangup":X(),K(),x.current=null,console.log("[JSEP] Clearing jsepGlobal on hangup",{timestamp:(new Date).toISOString()}),U.webrtc.updateWebRTC({jsepGlobal:null}),_.current=null,v&&U.recorder.setRecording(!1),f.isPhysical()||"mobile"===E||(c.hangupCurrentCall(),n.hangup(),a.store.dispatch.player.stopAudioPlayer(),a.store.dispatch.currentCall.reset(),F.current.log&&F.current.log("Call hung up ("+i.code+" "+i.reason+")!"),U.webrtc.updateLastActivity((new Date).getTime())),a.store.dispatch.player.stopAudioPlayer();var R=a.store.getState().screenShare,A=R.active,T=R.plugin,y=R.localScreenStream,k=R.remoteScreenStream;A&&(F.current.stopAllTracks(y),F.current.stopAllTracks(k),U.screenShare.update({active:!1}),T.detach()),P.current&&(console.info("[JANUS-GUARD] Call ended with stale connection - forcing reload to reset Janus session",{timestamp:(new Date).toISOString()}),setTimeout(function(){U.island.setForceReload(!0)},500));break;case"gateway_down":console.warn("THE GATEWAY IS DOWN");break;case"info":"application/media_control+xml"===i.type&&i.content.includes("<picture_fast_update")&&n.send({message:{request:"keyframe",user:!0,peer:!0}});break;default:F.current.debug&&F.current.debug("Event not handled:",u)}}},onlocaltrack:function(e,t){F.current.debug&&F.current.debug("Local track "+(t?"added":"removed")+":",e);var n=e.id.replace(/[{}]/g,"");if(!t){var r=ee[n];if(r)try{var o=r.getTracks();for(var i in o){var c=o[i];c&&c.stop()}}catch(e){F.current.error&&F.current.error("Error removing track:",e)}return e.kind,void delete ee[n]}var l=ee[n];if(!l)if("audio"===e.kind)l=new MediaStream([e]),a.store.dispatch.webrtc.updateLocalAudioStream(l);else{l=new MediaStream([e]),a.store.dispatch.webrtc.updateLocalVideoStream(l),ee[n]=l,F.current.debug&&F.current.debug("Created local stream:",l);var s=a.store.getState().player.localVideo;F.current.attachMediaStream&&s&&s.current&&F.current.attachMediaStream(s.current,l)}},onremotetrack:function(t,n,r){var o=this;if(F.current.debug&&F.current.debug("Remote track (mid="+n+") "+(r?"added":"removed")+":",t),a.store.dispatch.player.stopAudioPlayer(),!r)return t.kind,void U.currentCall.updateCurrentCall({showRemoteVideoPlaceHolder:!0});if("audio"===t.kind){var i=new MediaStream([t]);F.current.debug&&F.current.debug("Created remote audio stream: "+i);var c=a.store.getState().player.remoteAudio;if(c&&c.current&&F.current.attachMediaStream){F.current.attachMediaStream(c.current,i);var l=p.getJSONItem("phone-island-audio-output-device");if(null==l?void 0:l.deviceId){e.__awaiter(o,void 0,void 0,function(){var t,n,r,o,a;return e.__generator(this,function(e){switch(e.label){case 0:if(!(t=l.deviceId)||"default"===t)return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,navigator.mediaDevices.enumerateDevices()];case 2:return n=e.sent(),n.filter(function(e){return"audiooutput"===e.kind}).some(function(e){return e.deviceId===t})||(console.warn("Saved audio device ".concat(t," no longer available, using default device")),t="default",p.setJSONItem("phone-island-audio-output-device",{deviceId:"default"})),[3,4];case 3:return r=e.sent(),console.warn("Error checking device availability, using default:",r),t="default",[3,4];case 4:if(!c.current)return console.warn("Remote audio element no longer available"),[2];e.label=5;case 5:return e.trys.push([5,7,,12]),[4,c.current.setSinkId(t)];case 6:return e.sent(),console.info("Audio output device applied successfully to new stream:",t),[3,12];case 7:if(o=e.sent(),console.warn("Failed to apply audio output device to new stream:",o),"default"===t||!c.current)return[3,11];e.label=8;case 8:return e.trys.push([8,10,,11]),[4,c.current.setSinkId("default")];case 9:return e.sent(),p.setJSONItem("phone-island-audio-output-device",{deviceId:"default"}),console.info("Fallback to default device successful"),[3,11];case 10:return a=e.sent(),console.error("Even default device failed:",a),[3,11];case 11:return[3,12];case 12:return[2]}})})}}a.store.dispatch.webrtc.updateRemoteAudioStream(i)}else{i=new MediaStream([t]);a.store.dispatch.webrtc.updateRemoteVideoStream(i),F.current.debug&&F.current.debug("Created remote video stream:"+i);var s=a.store.getState().player.largeRemoteVideo,u=a.store.getState().player.smallRemoteVideo;F.current.attachMediaStream&&s&&s.current&&F.current.attachMediaStream(s.current,i),F.current.attachMediaStream&&u&&u.current&&(F.current.attachMediaStream(u.current,i),U.currentCall.updateCurrentCall({showRemoteVideoPlaceHolder:!1}))}},oncleanup:function(){F.current.log&&F.current.log(" ::: janus Got a cleanup notification :::")}})},error:function(e){var t,n;F.current.log&&F.current.log("error",e),console.warn("[JANUS-GUARD] Network error detected, marking connection as stale",{error:e,timestamp:(new Date).toISOString()}),P.current=!0,V.current=!1,M.current&&(clearTimeout(M.current),M.current=null);var r=a.store.getState().webrtc.sipcall,o=a.store.getState().currentCall,i=o.accepted,c=o.outgoing,l=null===(n=null===(t=null==r?void 0:r.webrtcStuff)||void 0===t?void 0:t.pc)||void 0===n?void 0:n.iceConnectionState;i||c||"connected"===l||"completed"===l?(Q(),console.info("[JANUS-GUARD] Network error during active call - giving ICE grace period to recover",{iceState:l,accepted:i,outgoing:c,timestamp:(new Date).toISOString()}),W.current&&clearTimeout(W.current),W.current=setTimeout(function(){var e,t,n=a.store.getState().webrtc.sipcall,r=null===(t=null===(e=null==n?void 0:n.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,o=a.store.getState().currentCall,i=o.accepted,c=o.outgoing,l=i||c;l&&("disconnected"===r||"failed"===r||!r)?(console.warn("[JANUS-GUARD] ICE failed to recover after grace period - resetting call state and activating alert",{checkIceState:r||"undefined/null",timestamp:(new Date).toISOString()}),a.store.dispatch.currentCall.reset(),U.alerts.setAlert("webrtc_down")):l?console.info("[JANUS-GUARD] ICE recovered during grace period - call preserved, Janus HTTP still stale",{checkIceState:r,connectionStale:P.current,timestamp:(new Date).toISOString()}):(console.info("[JANUS-GUARD] Call ended during grace period - activating alert for reconnection",{timestamp:(new Date).toISOString()}),U.alerts.setAlert("webrtc_down")),W.current=null},15e3)):U.alerts.setAlert("webrtc_down")},destroyed:function(){console.log("[JANUS-GUARD] Session destroyed, clearing janusInstance",{timestamp:(new Date).toISOString()}),V.current=!1,M.current&&(clearTimeout(M.current),M.current=null),U.webrtc.updateWebRTC({destroyed:!0,janusInstance:null}),j.current?console.log("[JANUS-GUARD] Skipping alert activation (voluntary reload in progress)"):(console.log("[JANUS-GUARD] Activating webrtc_down alert (not a voluntary reload)"),U.alerts.setAlert("webrtc_down"))}});console.log("[JANUS-GUARD] Saving janusInstance to Redux",{sessionId:null===(t=n.getSessionId)||void 0===t?void 0:t.call(n),timestamp:(new Date).toISOString()}),U.webrtc.updateWebRTC({janusInstance:n})}})}},[F.current]);t.useEffect(function(){void 0!==a.store.getState().currentUser.default_device&&i.checkMediaPermissions()},[null===(h=null===(b=null===a.store||void 0===a.store?void 0:a.store.getState())||void 0===b?void 0:b.currentUser)||void 0===h?void 0:h.default_device]);var re=t.useState(navigator.onLine),oe=re[0],ae=re[1],ie=t.useState(!1),ce=ie[0],le=ie[1],se=t.useRef(!1);return t.useEffect(function(){var e=function(){return ae(!0)},t=function(){return ae(!1)};return window.addEventListener("online",e),window.addEventListener("offline",t),function(){window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),t.useEffect(function(){oe?se.current&&(console.log("Internet connection restored."),le(!0),se.current=!1):(console.log("Internet connection lost."),se.current=!0,le(!1))},[oe]),t.useEffect(function(){var e;return ne(),e=a.store.getState().webrtc.CHECK_INTERVAL_TIME,O.current||(O.current=setInterval(function(){return u.webrtcCheck(function(){o.register({sipExten:I,sipSecret:C,sipHost:A,sipPort:T})})},e)),function(){o.unregister(),clearInterval(O.current),M.current&&(clearTimeout(M.current),M.current=null),W.current&&(clearTimeout(W.current),W.current=null),X(),K()}},[]),t.useEffect(function(){var e,t,n,r,i;if(y||ce){var c=a.store.getState().alerts.data,l=a.store.getState().island.forceReload,s=a.store.getState().webrtc,u=s.sipcall,d=s.janusInstance,v=s.jsepGlobal,g=a.store.getState().currentCall,p=g.accepted,f=g.outgoing,m=null===(t=null===(e=null==u?void 0:u.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,S=p||f||!!v||"connected"===m||"completed"===m,w=(null===(n=c.webrtc_down)||void 0===n?void 0:n.active)||!1;if((ce||l)&&S){var b=null===(r=null==d?void 0:d.isConnected)||void 0===r?void 0:r.call(d);return!b&&(null==d?void 0:d.reconnect)?(console.info("[JANUS-GUARD] Connection returned with active call but Janus HTTP is dead - attempting Janus reconnect",{iceState:m,sessionId:null===(i=null==d?void 0:d.getSessionId)||void 0===i?void 0:i.call(d),timestamp:(new Date).toISOString()}),d.reconnect({success:function(){var e;console.info("[JANUS-GUARD] Janus HTTP reconnected successfully during active call (connectionReturned)",{sessionId:null===(e=null==d?void 0:d.getSessionId)||void 0===e?void 0:e.call(d),timestamp:(new Date).toISOString()}),P.current=!1,Z(0),W.current&&(clearTimeout(W.current),W.current=null)},error:function(e){console.error("[JANUS-GUARD] Janus reconnect failed during active call (connectionReturned)",{error:e,timestamp:(new Date).toISOString()}),P.current=!0}})):(console.info("[JANUS-GUARD] Connection returned but active call in progress - Janus still connected, no reload needed",{iceState:m,janusConnected:b,timestamp:(new Date).toISOString()}),Z(0)),y&&k&&k(),void le(!1)}if(w||l||ce){if(j.current||V.current)return console.log("[JANUS-GUARD] Reload or init already in progress, skipping",{isReloading:j.current,isInitializing:V.current}),void(k&&k());j.current=!0,M.current&&(clearTimeout(M.current),M.current=null),console.info(l?"Force reload requested, performing full WebRTC reconnection":ce?"Internet connection restored, performing full WebRTC reconnection":"WebRTC down detected (alert active), performing full reload"),l&&a.store.dispatch.island.setForceReload(!1),console.log("[JANUS-GUARD] Manual reload, clearing janusInstance and registered state",{timestamp:(new Date).toISOString()}),U.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null}),_.current=null,o.unregister(),u&&u.detach(),d&&d.destroy&&d.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0}),setTimeout(function(){ne(),ce&&le(!1),k&&k(),setTimeout(function(){j.current=!1,P.current=!1,L.current=!1,N.current=0},1e3)},100)}else console.info("WebRTC already connected (no alert active), skipping heavy reload"),k&&k()}},[y,ce]),t.useEffect(function(){var e,t=function(){var e;navigator&&(null===navigator||void 0===navigator?void 0:navigator.mediaDevices)&&(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.enumerateDevices)?null===navigator||void 0===navigator||navigator.mediaDevices.enumerateDevices().then(function(e){U.mediaDevices.updateMediaDevices(e)}).catch(function(e){console.error("Error fetching devices:",e)}):(console.warn("MediaDevices API not supported in this browser or context"),U.mediaDevices.updateMediaDevices([]))};if(t(),navigator&&(null===navigator||void 0===navigator?void 0:navigator.mediaDevices))return null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e||e.addEventListener("devicechange",t),function(){var e;null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e||e.removeEventListener("devicechange",t)}},[]),t.useEffect(function(){var e=function(){console.warn("[STANDBY-GUARD] Page frozen (standby or browser froze tab)",{timestamp:(new Date).toISOString()}),L.current=!0},t=function(){console.log("[STANDBY-GUARD] Page resumed from freeze",{timestamp:(new Date).toISOString()})};return document.addEventListener("freeze",e),document.addEventListener("resume",t),function(){document.removeEventListener("freeze",e),document.removeEventListener("resume",t)}},[]),t.useEffect(function(){var e=function(){var e,t,n,r,i=Date.now();if(document.hidden)J.current=!0,G.current=i,console.log("[STANDBY-GUARD] Tab going to background",{timestamp:(new Date).toISOString()});else if(J.current){var c=i-G.current;N.current=c,console.log("[STANDBY-GUARD] Tab returning to foreground",{timeHiddenMs:c,timeHiddenMinutes:Math.round(c/6e4),wasFrozen:L.current,timestamp:(new Date).toISOString()});var l=a.store.getState().webrtc,s=l.registered,u=l.jsepGlobal,d=l.sipcall,v=a.store.getState().currentCall.outgoing,g=!!u,p="connected"===(null===(t=null===(e=null==d?void 0:d.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState)||"completed"===(null===(r=null===(n=null==d?void 0:d.webrtcStuff)||void 0===n?void 0:n.pc)||void 0===r?void 0:r.iceConnectionState),f=g||p||v,m=c>18e4&&!f,S=c>18e5&&!f,w=L.current||P.current||m||S;if(w){var b=L.current?"frozen":P.current?"stale connection":S?"throttled >30min (session too old)":"throttled >3min";if(f){var h=p?"active call":v?"outgoing call":"incoming call";console.warn("[STANDBY-GUARD] Reload needed (".concat(b,") but ").concat(h," in progress. ")+"Skipping reload to preserve call.",{wasFrozen:L.current,connectionStale:P.current,wasThrottledShort:m,wasThrottledVeryLong:S,hasIncomingCall:g,hasOutgoingCall:v,hasActiveCall:p,timestamp:(new Date).toISOString()})}else console.warn("[STANDBY-GUARD] Reload needed (".concat(b,"), forcing reload"),{wasFrozen:L.current,connectionStale:P.current,wasThrottledShort:m,wasThrottledVeryLong:S,timestamp:(new Date).toISOString()})}else if(f){h=p?"active call":v?"outgoing call":"incoming call";console.log("[STANDBY-GUARD] Tab change without issues, ".concat(h," preserved"),{timeHiddenMinutes:Math.round(c/6e4),hasIncomingCall:g,hasOutgoingCall:v,hasActiveCall:p,timestamp:(new Date).toISOString()})}var D=s&&!j.current&&!V.current&&w&&!g&&!v;if(D){console.warn("[STANDBY-GUARD] ⚠️ Reloading WebRTC",{timestamp:(new Date).toISOString()}),j.current=!0,M.current&&(clearTimeout(M.current),M.current=null);var I=a.store.getState().webrtc,C=I.janusInstance,R=I.sipcall;o.unregister(),R&&R.detach(),C&&C.destroy&&C.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0}),U.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null}),_.current=null,setTimeout(function(){ne(),setTimeout(function(){j.current=!1,P.current=!1,L.current=!1,N.current=0},1e3)},100)}J.current=!1,D||(L.current=!1,N.current=0)}};return document.addEventListener("visibilitychange",e),function(){document.removeEventListener("visibilitychange",e)}},[ne,U]),v.useEventListener("phone-island-attach",function(e){console.log("[EVENT] phone-island-attach received, calling initWebRTC",{timestamp:(new Date).toISOString()}),ne(),g.eventDispatch("phone-island-attached",{})}),v.useEventListener("phone-island-socket-reconnected",function(){var e,t,n,r,o=a.store.getState().webrtc,i=o.sipcall,c=o.janusInstance,l=o.jsepGlobal,s=a.store.getState().currentCall,u=s.accepted,d=s.outgoing,v=null===(t=null===(e=null==i?void 0:i.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,g=!!l,p=u||d||g||"connected"===v||"completed"===v,f=null===(n=null==c?void 0:c.isConnected)||void 0===n?void 0:n.call(c);return console.log("[EVENT] phone-island-socket-reconnected received",{hasActiveCall:p,hasIncomingCall:g,iceState:v,accepted:u,outgoing:d,janusConnected:f,timestamp:(new Date).toISOString()}),p&&!f&&(null==c?void 0:c.reconnect)?(console.info("[EVENT] Socket reconnected with active call but Janus HTTP is dead - attempting Janus reconnect",{iceState:v,sessionId:null===(r=null==c?void 0:c.getSessionId)||void 0===r?void 0:r.call(c),timestamp:(new Date).toISOString()}),void c.reconnect({success:function(){var e;console.info("[JANUS-GUARD] Janus HTTP reconnected successfully during active call",{sessionId:null===(e=null==c?void 0:c.getSessionId)||void 0===e?void 0:e.call(c),timestamp:(new Date).toISOString()}),P.current=!1,Z(0),W.current&&(clearTimeout(W.current),W.current=null)},error:function(e){console.error("[JANUS-GUARD] Janus reconnect failed during active call",{error:e,timestamp:(new Date).toISOString()}),P.current=!0}})):p&&f?(console.info("[EVENT] Socket reconnected with active call, Janus HTTP still connected - no action needed",{iceState:v,timestamp:(new Date).toISOString()}),W.current&&(clearTimeout(W.current),W.current=null),void Z(0)):void le(!0)}),v.useEventListener("phone-island-call-transfer",function(t){var n=null==t?void 0:t.to;U.island.toggleIsOpen(!0),function(t){e.__awaiter(this,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return[4,c.attendedTransfer(t)];case 1:return e.sent()&&(U.currentCall.updateCurrentCall({transferring:!0,paused:!1}),U.player.playRemoteAudio()),[2]}})})}(n),g.eventDispatch("phone-island-call-transfer-opened",{})}),w.default.createElement(w.default.Fragment,null,R)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("react");require("../node_modules/react-redux/es/index.js");var r=require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),n=require("../lib/webrtc/janus.js"),o=require("../lib/webrtc/messages.js"),a=require("../store/index.js"),i=require("../lib/devices/devices.js"),c=require("../lib/phone/call.js"),l=require("../lib/phone/video.js"),s=require("../events/SocketEvents.js"),u=require("../lib/webrtc/connection.js"),d=require("../static/outgoing_ringtone.js"),g=require("../utils/customHooks/useEventListener.js"),v=require("../utils/genericFunctions/eventDispatch.js"),p=require("../utils/genericFunctions/localStorage.js"),f=require("../lib/user/default_device.js"),m=require("../lib/phone/screenShare.js"),S=require("../node_modules/react-redux/es/hooks/useDispatch.js");function w(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var b=w(t);exports.WebRTC=function(w){var h,D,I=w.hostName,C=w.sipExten,R=w.sipSecret,A=w.children,T=w.sipHost,y=w.sipPort,E=w.reload,k=w.uaType,U=w.reloadedCallback,j=S.useDispatch(),O=t.useRef(null),G=t.useRef(!1),J=t.useRef(Date.now()),N=t.useRef(!1),P=t.useRef(0),_=t.useRef(!1),L=t.useRef(null),V=t.useRef(!1),M=t.useRef(!1),W=t.useRef(null),q=t.useRef(null),H=t.useRef(null),x=t.useRef(0),Y=t.useRef(null),z=t.useRef(null),F=5e3,B=t.useRef(n.default),K=function(){var e,t=a.store.getState().webrtc.sipcall;return!(!a.store.getState().currentCall.accepted||!(null===(e=null==t?void 0:t.webrtcStuff)||void 0===e?void 0:e.pc))},Q=function(){z.current&&(clearInterval(z.current),z.current=null)},X=function(){if(!z.current){var e=Date.now(),t=!1,r=function(){var r,n=a.store.getState().webrtc.janusInstance;!(null==n?void 0:n.reconnect)||(null===(r=n.isConnected)||void 0===r?void 0:r.call(n))||!K()||Date.now()-e>6e4?Q():t||(t=!0,n.reconnect({success:function(){var e;t=!1,console.info("[MEDIA-RECOVERY] Janus session reclaimed during active call",{sessionId:null===(e=n.getSessionId)||void 0===e?void 0:e.call(n),timestamp:(new Date).toISOString()}),_.current=!1,Q(),$(0)},error:function(e){t=!1,console.warn("[MEDIA-RECOVERY] Janus session reclaim failed, retrying",{error:e,timestamp:(new Date).toISOString()})}}))};z.current=setInterval(r,3e3),r()}},Z=function(){H.current&&(clearTimeout(H.current),H.current=null),x.current=0},$=function(e){H.current||(H.current=setTimeout(ee,e))},ee=function(){var e,t,r;H.current=null;var n=a.store.getState().webrtc,o=n.sipcall,i=n.janusInstance,c=null===(t=null===(e=null==o?void 0:o.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState;if(K()&&"connected"!==c&&"completed"!==c&&"closed"!==c)if(null===(r=null==i?void 0:i.isConnected)||void 0===r?void 0:r.call(i)){var l=Y.current;l&&Date.now()-l<1e4?$(F):x.current>=5?console.warn("[MEDIA-RECOVERY] ICE restart attempts exhausted",{iceState:c,timestamp:(new Date).toISOString()}):(x.current++,console.info("[MEDIA-RECOVERY] Media path down during active call, restarting ICE",{attempt:x.current,iceState:c,timestamp:(new Date).toISOString()}),o.createOffer({iceRestart:!0,success:function(e){Y.current=Date.now(),o.send({message:{request:"update"},jsep:e})},error:function(e){console.error("[MEDIA-RECOVERY] ICE restart offer failed",{error:e})}}),$(F))}else X();else x.current=0},te={},re=t.useCallback(function(e,t){var r,n,c,s;if(e)if("answer"!==e.type){if("offer"!==e.type)return console.warn("[SIP UPDATE] Unsupported JSEP type",{sourceEvent:t,type:e.type}),void o.handleRemote(e);var u=a.store.getState().webrtc.sipcall,d=a.store.getState().currentCall.isLocalVideoEnabled;if(u){var g=(null!==(s=null===(c=null===(n=null===(r=null==u?void 0:u.webrtcStuff)||void 0===r?void 0:r.pc)||void 0===n?void 0:n.getTransceivers)||void 0===c?void 0:c.call(n))&&void 0!==s?s:[]).some(function(e){var t,r;return"audio"===(null===(r=null===(t=e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}),v=[],p="string"==typeof e.sdp&&e.sdp.includes("m=audio "),f=l.sdpHasActiveVideo(e.sdp);if(p&&!g){var m=i.getCurrentAudioInputDeviceId();v.push(m?{type:"audio",capture:{deviceId:{exact:m}},recv:!0}:{type:"audio",capture:!0,recv:!0})}if(f)if(d){var S=i.getCurrentVideoInputDeviceId();v.push(S?{type:"video",capture:{deviceId:{exact:S}},recv:!0}:{type:"video",capture:!0,recv:!0})}else v.push({type:"video",recv:!0});u.createAnswer({jsep:e,tracks:v,success:function(e){u.send({message:{request:"update"},jsep:e})},error:function(e){console.error("[SIP UPDATE] WebRTC error...",{sourceEvent:t,error:e})}})}}else o.handleRemote(e)},[]),ne=t.useCallback(function(){var t,n,i,u,g,S;if(M.current)console.log("[JANUS-GUARD] initWebRTC already in progress, skipping",{timestamp:(new Date).toISOString()});else{M.current=!0,W.current&&clearTimeout(W.current),W.current=setTimeout(function(){M.current&&(console.warn("[JANUS-GUARD] Initialization timeout (30s) - resetting isInitializing flag",{timestamp:(new Date).toISOString()}),M.current=!1,_.current=!0,j.alerts.setAlert("webrtc_down"),v.eventDispatch("phone-island-alert-set",{type:"webrtc_down"})),W.current=null},3e4);var w=a.store.getState().webrtc,b=w.janusInstance,h=w.registered,D=w.isDetached,A=!0;if(b){var E=null===(t=b.getSessionId)||void 0===t?void 0:t.call(b),U=null===(n=b.isConnected)||void 0===n?void 0:n.call(b),O=P.current,J=Math.round(O/6e4),N=O>18e5,V=a.store.getState().webrtc,H=V.sipcall,x=!!V.jsepGlobal,z="connected"===(null===(u=null===(i=null==H?void 0:H.webrtcStuff)||void 0===i?void 0:i.pc)||void 0===u?void 0:u.iceConnectionState)||"completed"===(null===(S=null===(g=null==H?void 0:H.webrtcStuff)||void 0===g?void 0:g.pc)||void 0===S?void 0:S.iceConnectionState);if(!U||!h||D||N&&!(x||z)){var F=U?D?"phone island detached":h?N?"long inactivity (".concat(J," min) without active call"):"unknown":"not registered":"not connected";console.warn("[JANUS-GUARD] Session exists but is invalid, cleaning up and reinitializing",{reason:F,sessionId:E,isConnected:U,registered:h,isDetached:D,inactivityMinutes:J,hasIncomingCall:x,hasActiveCall:z,timestamp:(new Date).toISOString()});try{b.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0})}catch(e){console.error("[JANUS-GUARD] Error destroying session",e)}a.store.dispatch.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null})}else console.log("[JANUS-GUARD] Valid session already exists, skipping init",{sessionId:E,isConnected:U,registered:h,isDetached:D,inactivityMinutes:J,hasIncomingCall:x,hasActiveCall:z,timestamp:(new Date).toISOString()}),A=!1}if(!A)return M.current=!1,void(W.current&&(clearTimeout(W.current),W.current=null));console.log("[JANUS-GUARD] Creating new session",{timestamp:(new Date).toISOString()}),B.current.init({debug:"all",dependencies:B.current.useDefaultDependencies({adapter:r.default}),callback:function(){var t,r=new B.current({server:"https://".concat(I,"/janus"),success:function(){r.attach&&r.attach({plugin:"janus.plugin.sip",opaqueId:"sebastian_"+(new Date).getTime(),success:function(e){e&&(j.webrtc.updateWebRTC({sipcall:e}),o.register({sipExten:C,sipSecret:R,sipHost:T,sipPort:y}),e&&B.current.log&&B.current.log("SIP plugin attached! ("+e.getPlugin()+", id = )"))},error:function(e){B.current.error&&(B.current.error(" -- Error attaching plugin..."),B.current.error(e)),M.current=!1,W.current&&(clearTimeout(W.current),W.current=null)},consentDialog:function(e){B.current.log&&B.current.log("janus consentDialog (on: ".concat(e,")"))},webrtcState:function(e){if(B.current.log&&B.current.log("Janus says our WebRTC PeerConnection is "+(e?"up":"down")+" now"),e){var t=a.store.getState().island.view,r=a.store.getState().currentCall,n=r.accepted,o=r.outgoing,i=r.incoming;(n||o||i)&&!t&&(console.warn('[WEBRTC] WebRTC up but view is null with active call - forcing view to "call"'),a.store.dispatch.island.setIslandView("call"))}},iceState:function(e){if(a.store.getState().webrtc.sipcall&&B.current.log&&B.current.log('ICE state of PeerConnection of handle has changed to "'.concat(e,'"')),"disconnected"!==e&&"failed"!==e||!K()?"connected"!==e&&"completed"!==e||Z():$("failed"===e?0:2e3),"connected"===e||"completed"===e){var t=a.store.getState().island.view,r=a.store.getState().currentCall,n=r.accepted,o=r.outgoing,i=r.incoming;(n||o||i)&&!t&&(console.warn('[WEBRTC] ICE connected but view is null with active call - forcing view to "call"'),a.store.dispatch.island.setIslandView("call"))}},mediaState:function(e,t){B.current.log&&B.current.log("Janus "+(t?"started":"stopped")+" receiving our "+e)},slowLink:function(e,t){e?B.current.warn&&B.current.warn("SLOW link: several missing packets from janus (".concat(t,")")):B.current.warn&&B.current.warn("SLOW link: janus is not receiving all your packets (".concat(t,")"))},onmessage:function(e,t){var r=a.store.getState().webrtc.sipcall;B.current.debug&&(B.current.debug(" ::: Got a message :::"),B.current.debug(JSON.stringify(e)));var n=e.error;if(null!=n&&null!=n)return Y.current?(console.warn("[MEDIA-RECOVERY] ICE restart update refused",{error:n}),void(Y.current=null)):void(a.store.getState().webrtc.registered?(r&&r.hangup(),a.store.dispatch.player.stopAudioPlayer()):B.current.log&&B.current.log("User is not registered"));var i=e.result;if(null!=i&&void 0!==i.event&&null!==i.event){var u=i.event,g=a.store.getState().recorder.recording,p=a.store.getState().island.view;switch(u){case"registration_failed":B.current.error&&B.current.error("Registration failed: "+i.code+" "+i.reason),M.current=!1,W.current&&(clearTimeout(W.current),W.current=null),a.store.dispatch.webrtc.updateWebRTC({registered:!1}),j.alerts.setAlert("webrtc_down"),v.eventDispatch("phone-island-alert-set",{type:"webrtc_down"});break;case"unregistered":B.current.log&&B.current.log("Successfully un-registered as "+i.username+"!"),a.store.dispatch.webrtc.updateWebRTC({registered:!1}),v.eventDispatch("phone-island-webrtc-unregistered",{});break;case"registered":B.current.log&&B.current.log("Successfully registered as "+i.username+"!"),console.log("[REGISTER] Registration successful",{username:i.username,wasAlreadyRegistered:a.store.getState().webrtc.registered,timestamp:(new Date).toISOString()}),v.eventDispatch("phone-island-webrtc-registered",{}),a.store.getState().webrtc.registered||a.store.dispatch.webrtc.updateWebRTC({registered:!0,isDetached:!1}),j.alerts.removeAlert("webrtc_down"),v.eventDispatch("phone-island-alert-removed",{type:"webrtc_down"}),_.current=!1,M.current=!1,W.current&&(clearTimeout(W.current),W.current=null),q.current&&(clearTimeout(q.current),q.current=null,console.info("[JANUS-GUARD] Cleared network error grace timeout - connection restored")),j.webrtc.updateLastActivity((new Date).getTime());break;case"registering":B.current.log&&B.current.log("janus registering");break;case"calling":j.currentCall.checkOutgoingUpdate({outgoingWebRTC:!0}),j.webrtc.updateLastActivity((new Date).getTime());break;case"ringing":a.store.getState().player.audioPlayerPlaying||j.player.updateStartAudioPlayer({src:d.default,loop:!0}),j.webrtc.updateLastActivity((new Date).getTime()),"call"!==p&&j.island.setIslandView("call");break;case"progress":B.current.log&&B.current.log("There's early media from "+i.username+", wairing for the call!"),t&&o.handleRemote(t),j.webrtc.updateLastActivity((new Date).getTime());break;case"incomingcall":var S=a.store.getState().currentUser.default_device,w=a.store.getState().currentUser,b=w.endpoints,h=w.username,D=a.store.getState().users.extensions,I=function(){if(!D||!h)return!1;var e=Object.values(D).filter(function(e){return(null==e?void 0:e.username)===h});return null==e?void 0:e.some(function(e){var t=null==b?void 0:b.extension.find(function(t){return t.id===(null==e?void 0:e.exten)});return"nethlink"===(null==t?void 0:t.type)&&"offline"!==(null==e?void 0:e.status)})};t&&(console.log("[JSEP] Saving jsepGlobal for incoming call",{from:i.username,timestamp:(new Date).toISOString()}),j.webrtc.updateWebRTC({jsepGlobal:t}),L.current=Date.now()),("mobile"===k&&I()||"desktop"===k&&("webrtc"===(null==S?void 0:S.type)||void 0===(null==S?void 0:S.type)&&!I()||!I()&&"physical"===(null==S?void 0:S.type)))&&(g?j.recorder.setIncoming(!0):(j.currentCall.checkIncomingUpdatePlay({incoming:!0,incomingWebRTC:!0}),B.current.log&&(j.currentCall.updateIncoming(!0),B.current.log("Incoming call from "+i.username+"!"))),j.webrtc.updateLastActivity((new Date).getTime()));break;case"accepted":if(Y.current){Y.current=null,console.info("[MEDIA-RECOVERY] ICE restart answered",{timestamp:(new Date).toISOString()}),t&&o.handleRemote(t);break}var C=Math.floor(Date.now()/1e3);if(B.current.log){var R=i.username||i.displayname||a.store.getState().currentCall.number||"Remote party";B.current.log(R+" accepted the call!")}t&&o.handleRemote(t),console.log("[JSEP] Clearing jsepGlobal after call accepted",{timestamp:(new Date).toISOString()}),j.webrtc.updateWebRTC({jsepGlobal:null}),L.current=null,j.currentCall.checkAcceptedUpdate({acceptedWebRTC:!0}),j.currentCall.updateCurrentCall({incoming:!1,incomingWebRTC:!1,startTime:null==C?void 0:C.toString()}),a.store.getState().currentCall.isLocalVideoEnabled&&(l.sdpHasActiveVideo(null==t?void 0:t.sdp)?(j.island.setIslandView("video"),l.notifyPeerVideoStart(),s.dispatchVideoCallStarted({initiator:"local",callUser:a.store.getState().currentUser.username,destUser:a.store.getState().currentCall.username}),v.eventDispatch("phone-island-video-enabled",{})):l.releaseLocalVideo()),a.store.dispatch.player.stopAudioPlayer(),j.webrtc.updateLastActivity((new Date).getTime());break;case"updatingcall":B.current.log&&B.current.log("Got SIP re-INVITE, preparing update answer"),t&&l.sdpDeclinesVideo(t.sdp)&&a.store.getState().currentCall.isLocalVideoEnabled&&l.releaseLocalVideo(),t&&re(t,"updatingcall"),j.webrtc.updateLastActivity((new Date).getTime());break;case"hangup":Z(),Q(),Y.current=null,console.log("[JSEP] Clearing jsepGlobal on hangup",{timestamp:(new Date).toISOString()}),j.webrtc.updateWebRTC({jsepGlobal:null}),L.current=null,g&&j.recorder.setRecording(!1),f.isPhysical()||"mobile"===k||(c.hangupCurrentCall(),r.hangup(),a.store.dispatch.player.stopAudioPlayer(),a.store.dispatch.currentCall.reset(),B.current.log&&B.current.log("Call hung up ("+i.code+" "+i.reason+")!"),j.webrtc.updateLastActivity((new Date).getTime())),a.store.dispatch.player.stopAudioPlayer();var A=a.store.getState().screenShare,T=A.active,y=A.localScreenStream,E=A.remoteScreenStream,U=A.pendingScreenStream,O=A.role;T&&(B.current.stopAllTracks(y),B.current.stopAllTracks(E),B.current.stopAllTracks(U),j.screenShare.update({active:!1,pendingScreenStream:null}),m.releaseScreenShareHandles("publisher"===O)),_.current&&(console.info("[JANUS-GUARD] Call ended with stale connection - forcing reload to reset Janus session",{timestamp:(new Date).toISOString()}),setTimeout(function(){j.island.setForceReload(!0)},500));break;case"gateway_down":console.warn("THE GATEWAY IS DOWN");break;case"info":"application/media_control+xml"===i.type&&i.content.includes("<picture_fast_update")&&r.send({message:{request:"keyframe",user:!0,peer:!0}});break;default:B.current.debug&&B.current.debug("Event not handled:",u)}}},onlocaltrack:function(e,t){B.current.debug&&B.current.debug("Local track "+(t?"added":"removed")+":",e);var r=e.id.replace(/[{}]/g,"");if(!t){var n=te[r];if(n)try{var o=n.getTracks();for(var i in o){var c=o[i];c&&c.stop()}}catch(e){B.current.error&&B.current.error("Error removing track:",e)}return e.kind,void delete te[r]}var l=te[r];if(!l)if("audio"===e.kind)l=new MediaStream([e]),a.store.dispatch.webrtc.updateLocalAudioStream(l);else{l=new MediaStream([e]),a.store.dispatch.webrtc.updateLocalVideoStream(l),te[r]=l,B.current.debug&&B.current.debug("Created local stream:",l);var s=a.store.getState().player.localVideo;B.current.attachMediaStream&&s&&s.current&&B.current.attachMediaStream(s.current,l)}},onremotetrack:function(t,r,n){var o=this;if(B.current.debug&&B.current.debug("Remote track (mid="+r+") "+(n?"added":"removed")+":",t),a.store.dispatch.player.stopAudioPlayer(),!n)return t.kind,void j.currentCall.updateCurrentCall({showRemoteVideoPlaceHolder:!0});if("audio"===t.kind){var i=new MediaStream([t]);B.current.debug&&B.current.debug("Created remote audio stream: "+i);var c=a.store.getState().player.remoteAudio;if(c&&c.current&&B.current.attachMediaStream){B.current.attachMediaStream(c.current,i);var l=p.getJSONItem("phone-island-audio-output-device");if(null==l?void 0:l.deviceId){e.__awaiter(o,void 0,void 0,function(){var t,r,n,o,a;return e.__generator(this,function(e){switch(e.label){case 0:if(!(t=l.deviceId)||"default"===t)return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,navigator.mediaDevices.enumerateDevices()];case 2:return r=e.sent(),r.filter(function(e){return"audiooutput"===e.kind}).some(function(e){return e.deviceId===t})||(console.warn("Saved audio device ".concat(t," no longer available, using default device")),t="default",p.setJSONItem("phone-island-audio-output-device",{deviceId:"default"})),[3,4];case 3:return n=e.sent(),console.warn("Error checking device availability, using default:",n),t="default",[3,4];case 4:if(!c.current)return console.warn("Remote audio element no longer available"),[2];e.label=5;case 5:return e.trys.push([5,7,,12]),[4,c.current.setSinkId(t)];case 6:return e.sent(),console.info("Audio output device applied successfully to new stream:",t),[3,12];case 7:if(o=e.sent(),console.warn("Failed to apply audio output device to new stream:",o),"default"===t||!c.current)return[3,11];e.label=8;case 8:return e.trys.push([8,10,,11]),[4,c.current.setSinkId("default")];case 9:return e.sent(),p.setJSONItem("phone-island-audio-output-device",{deviceId:"default"}),console.info("Fallback to default device successful"),[3,11];case 10:return a=e.sent(),console.error("Even default device failed:",a),[3,11];case 11:return[3,12];case 12:return[2]}})})}}a.store.dispatch.webrtc.updateRemoteAudioStream(i)}else{i=new MediaStream([t]);a.store.dispatch.webrtc.updateRemoteVideoStream(i),B.current.debug&&B.current.debug("Created remote video stream:"+i);var s=a.store.getState().player.largeRemoteVideo,u=a.store.getState().player.smallRemoteVideo;B.current.attachMediaStream&&s&&s.current&&B.current.attachMediaStream(s.current,i),B.current.attachMediaStream&&u&&u.current&&(B.current.attachMediaStream(u.current,i),j.currentCall.updateCurrentCall({showRemoteVideoPlaceHolder:!1}))}},oncleanup:function(){B.current.log&&B.current.log(" ::: janus Got a cleanup notification :::")}})},error:function(e){var t,r;B.current.log&&B.current.log("error",e),console.warn("[JANUS-GUARD] Network error detected, marking connection as stale",{error:e,timestamp:(new Date).toISOString()}),_.current=!0,M.current=!1,W.current&&(clearTimeout(W.current),W.current=null);var n=a.store.getState().webrtc.sipcall,o=a.store.getState().currentCall,i=o.accepted,c=o.outgoing,l=null===(r=null===(t=null==n?void 0:n.webrtcStuff)||void 0===t?void 0:t.pc)||void 0===r?void 0:r.iceConnectionState;i||c||"connected"===l||"completed"===l?(X(),console.info("[JANUS-GUARD] Network error during active call - giving ICE grace period to recover",{iceState:l,accepted:i,outgoing:c,timestamp:(new Date).toISOString()}),q.current&&clearTimeout(q.current),q.current=setTimeout(function(){var e,t,r=a.store.getState().webrtc.sipcall,n=null===(t=null===(e=null==r?void 0:r.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,o=a.store.getState().currentCall,i=o.accepted,c=o.outgoing,l=i||c;l&&("disconnected"===n||"failed"===n||!n)?(console.warn("[JANUS-GUARD] ICE failed to recover after grace period - resetting call state and activating alert",{checkIceState:n||"undefined/null",timestamp:(new Date).toISOString()}),a.store.dispatch.currentCall.reset(),j.alerts.setAlert("webrtc_down")):l?console.info("[JANUS-GUARD] ICE recovered during grace period - call preserved, Janus HTTP still stale",{checkIceState:n,connectionStale:_.current,timestamp:(new Date).toISOString()}):(console.info("[JANUS-GUARD] Call ended during grace period - activating alert for reconnection",{timestamp:(new Date).toISOString()}),j.alerts.setAlert("webrtc_down")),q.current=null},15e3)):j.alerts.setAlert("webrtc_down")},destroyed:function(){console.log("[JANUS-GUARD] Session destroyed, clearing janusInstance",{timestamp:(new Date).toISOString()}),M.current=!1,W.current&&(clearTimeout(W.current),W.current=null),j.webrtc.updateWebRTC({destroyed:!0,janusInstance:null}),G.current?console.log("[JANUS-GUARD] Skipping alert activation (voluntary reload in progress)"):(console.log("[JANUS-GUARD] Activating webrtc_down alert (not a voluntary reload)"),j.alerts.setAlert("webrtc_down"))}});console.log("[JANUS-GUARD] Saving janusInstance to Redux",{sessionId:null===(t=r.getSessionId)||void 0===t?void 0:t.call(r),timestamp:(new Date).toISOString()}),j.webrtc.updateWebRTC({janusInstance:r})}})}},[B.current]);t.useEffect(function(){void 0!==a.store.getState().currentUser.default_device&&i.checkMediaPermissions()},[null===(D=null===(h=null===a.store||void 0===a.store?void 0:a.store.getState())||void 0===h?void 0:h.currentUser)||void 0===D?void 0:D.default_device]);var oe=t.useState(navigator.onLine),ae=oe[0],ie=oe[1],ce=t.useState(!1),le=ce[0],se=ce[1],ue=t.useRef(!1);return t.useEffect(function(){var e=function(){return ie(!0)},t=function(){return ie(!1)};return window.addEventListener("online",e),window.addEventListener("offline",t),function(){window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),t.useEffect(function(){ae?ue.current&&(console.log("Internet connection restored."),se(!0),ue.current=!1):(console.log("Internet connection lost."),ue.current=!0,se(!1))},[ae]),t.useEffect(function(){var e;return ne(),e=a.store.getState().webrtc.CHECK_INTERVAL_TIME,O.current||(O.current=setInterval(function(){return u.webrtcCheck(function(){o.register({sipExten:C,sipSecret:R,sipHost:T,sipPort:y})})},e)),function(){o.unregister(),clearInterval(O.current),W.current&&(clearTimeout(W.current),W.current=null),q.current&&(clearTimeout(q.current),q.current=null),Z(),Q()}},[]),t.useEffect(function(){var e,t,r,n,i;if(E||le){var c=a.store.getState().alerts.data,l=a.store.getState().island.forceReload,s=a.store.getState().webrtc,u=s.sipcall,d=s.janusInstance,g=s.jsepGlobal,v=a.store.getState().currentCall,p=v.accepted,f=v.outgoing,m=null===(t=null===(e=null==u?void 0:u.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,S=p||f||!!g||"connected"===m||"completed"===m,w=(null===(r=c.webrtc_down)||void 0===r?void 0:r.active)||!1;if((le||l)&&S){var b=null===(n=null==d?void 0:d.isConnected)||void 0===n?void 0:n.call(d);return!b&&(null==d?void 0:d.reconnect)?(console.info("[JANUS-GUARD] Connection returned with active call but Janus HTTP is dead - attempting Janus reconnect",{iceState:m,sessionId:null===(i=null==d?void 0:d.getSessionId)||void 0===i?void 0:i.call(d),timestamp:(new Date).toISOString()}),d.reconnect({success:function(){var e;console.info("[JANUS-GUARD] Janus HTTP reconnected successfully during active call (connectionReturned)",{sessionId:null===(e=null==d?void 0:d.getSessionId)||void 0===e?void 0:e.call(d),timestamp:(new Date).toISOString()}),_.current=!1,$(0),q.current&&(clearTimeout(q.current),q.current=null)},error:function(e){console.error("[JANUS-GUARD] Janus reconnect failed during active call (connectionReturned)",{error:e,timestamp:(new Date).toISOString()}),_.current=!0}})):(console.info("[JANUS-GUARD] Connection returned but active call in progress - Janus still connected, no reload needed",{iceState:m,janusConnected:b,timestamp:(new Date).toISOString()}),$(0)),E&&U&&U(),void se(!1)}if(w||l||le){if(G.current||M.current)return console.log("[JANUS-GUARD] Reload or init already in progress, skipping",{isReloading:G.current,isInitializing:M.current}),void(U&&U());G.current=!0,W.current&&(clearTimeout(W.current),W.current=null),console.info(l?"Force reload requested, performing full WebRTC reconnection":le?"Internet connection restored, performing full WebRTC reconnection":"WebRTC down detected (alert active), performing full reload"),l&&a.store.dispatch.island.setForceReload(!1),console.log("[JANUS-GUARD] Manual reload, clearing janusInstance and registered state",{timestamp:(new Date).toISOString()}),j.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null}),L.current=null,o.unregister(),u&&u.detach(),d&&d.destroy&&d.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0}),setTimeout(function(){ne(),le&&se(!1),U&&U(),setTimeout(function(){G.current=!1,_.current=!1,V.current=!1,P.current=0},1e3)},100)}else console.info("WebRTC already connected (no alert active), skipping heavy reload"),U&&U()}},[E,le]),t.useEffect(function(){var e,t=function(){var e;navigator&&(null===navigator||void 0===navigator?void 0:navigator.mediaDevices)&&(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.enumerateDevices)?null===navigator||void 0===navigator||navigator.mediaDevices.enumerateDevices().then(function(e){j.mediaDevices.updateMediaDevices(e)}).catch(function(e){console.error("Error fetching devices:",e)}):(console.warn("MediaDevices API not supported in this browser or context"),j.mediaDevices.updateMediaDevices([]))};if(t(),navigator&&(null===navigator||void 0===navigator?void 0:navigator.mediaDevices))return null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e||e.addEventListener("devicechange",t),function(){var e;null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e||e.removeEventListener("devicechange",t)}},[]),t.useEffect(function(){var e=function(){console.warn("[STANDBY-GUARD] Page frozen (standby or browser froze tab)",{timestamp:(new Date).toISOString()}),V.current=!0},t=function(){console.log("[STANDBY-GUARD] Page resumed from freeze",{timestamp:(new Date).toISOString()})};return document.addEventListener("freeze",e),document.addEventListener("resume",t),function(){document.removeEventListener("freeze",e),document.removeEventListener("resume",t)}},[]),t.useEffect(function(){var e=function(){var e,t,r,n,i=Date.now();if(document.hidden)N.current=!0,J.current=i,console.log("[STANDBY-GUARD] Tab going to background",{timestamp:(new Date).toISOString()});else if(N.current){var c=i-J.current;P.current=c,console.log("[STANDBY-GUARD] Tab returning to foreground",{timeHiddenMs:c,timeHiddenMinutes:Math.round(c/6e4),wasFrozen:V.current,timestamp:(new Date).toISOString()});var l=a.store.getState().webrtc,s=l.registered,u=l.jsepGlobal,d=l.sipcall,g=a.store.getState().currentCall.outgoing,v=!!u,p="connected"===(null===(t=null===(e=null==d?void 0:d.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState)||"completed"===(null===(n=null===(r=null==d?void 0:d.webrtcStuff)||void 0===r?void 0:r.pc)||void 0===n?void 0:n.iceConnectionState),f=v||p||g,m=c>18e4&&!f,S=c>18e5&&!f,w=V.current||_.current||m||S;if(w){var b=V.current?"frozen":_.current?"stale connection":S?"throttled >30min (session too old)":"throttled >3min";if(f){var h=p?"active call":g?"outgoing call":"incoming call";console.warn("[STANDBY-GUARD] Reload needed (".concat(b,") but ").concat(h," in progress. ")+"Skipping reload to preserve call.",{wasFrozen:V.current,connectionStale:_.current,wasThrottledShort:m,wasThrottledVeryLong:S,hasIncomingCall:v,hasOutgoingCall:g,hasActiveCall:p,timestamp:(new Date).toISOString()})}else console.warn("[STANDBY-GUARD] Reload needed (".concat(b,"), forcing reload"),{wasFrozen:V.current,connectionStale:_.current,wasThrottledShort:m,wasThrottledVeryLong:S,timestamp:(new Date).toISOString()})}else if(f){h=p?"active call":g?"outgoing call":"incoming call";console.log("[STANDBY-GUARD] Tab change without issues, ".concat(h," preserved"),{timeHiddenMinutes:Math.round(c/6e4),hasIncomingCall:v,hasOutgoingCall:g,hasActiveCall:p,timestamp:(new Date).toISOString()})}var D=s&&!G.current&&!M.current&&w&&!v&&!g;if(D){console.warn("[STANDBY-GUARD] ⚠️ Reloading WebRTC",{timestamp:(new Date).toISOString()}),G.current=!0,W.current&&(clearTimeout(W.current),W.current=null);var I=a.store.getState().webrtc,C=I.janusInstance,R=I.sipcall;o.unregister(),R&&R.detach(),C&&C.destroy&&C.destroy({unload:!0,notifyDestroyed:!1,cleanupHandles:!0}),j.webrtc.updateWebRTC({janusInstance:null,sipcall:null,registered:!1,isDetached:!1,jsepGlobal:null}),L.current=null,setTimeout(function(){ne(),setTimeout(function(){G.current=!1,_.current=!1,V.current=!1,P.current=0},1e3)},100)}N.current=!1,D||(V.current=!1,P.current=0)}};return document.addEventListener("visibilitychange",e),function(){document.removeEventListener("visibilitychange",e)}},[ne,j]),g.useEventListener("phone-island-attach",function(e){console.log("[EVENT] phone-island-attach received, calling initWebRTC",{timestamp:(new Date).toISOString()}),ne(),v.eventDispatch("phone-island-attached",{})}),g.useEventListener("phone-island-socket-reconnected",function(){var e,t,r,n,o=a.store.getState().webrtc,i=o.sipcall,c=o.janusInstance,l=o.jsepGlobal,s=a.store.getState().currentCall,u=s.accepted,d=s.outgoing,g=null===(t=null===(e=null==i?void 0:i.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===t?void 0:t.iceConnectionState,v=!!l,p=u||d||v||"connected"===g||"completed"===g,f=null===(r=null==c?void 0:c.isConnected)||void 0===r?void 0:r.call(c);return console.log("[EVENT] phone-island-socket-reconnected received",{hasActiveCall:p,hasIncomingCall:v,iceState:g,accepted:u,outgoing:d,janusConnected:f,timestamp:(new Date).toISOString()}),p&&!f&&(null==c?void 0:c.reconnect)?(console.info("[EVENT] Socket reconnected with active call but Janus HTTP is dead - attempting Janus reconnect",{iceState:g,sessionId:null===(n=null==c?void 0:c.getSessionId)||void 0===n?void 0:n.call(c),timestamp:(new Date).toISOString()}),void c.reconnect({success:function(){var e;console.info("[JANUS-GUARD] Janus HTTP reconnected successfully during active call",{sessionId:null===(e=null==c?void 0:c.getSessionId)||void 0===e?void 0:e.call(c),timestamp:(new Date).toISOString()}),_.current=!1,$(0),q.current&&(clearTimeout(q.current),q.current=null)},error:function(e){console.error("[JANUS-GUARD] Janus reconnect failed during active call",{error:e,timestamp:(new Date).toISOString()}),_.current=!0}})):p&&f?(console.info("[EVENT] Socket reconnected with active call, Janus HTTP still connected - no action needed",{iceState:g,timestamp:(new Date).toISOString()}),q.current&&(clearTimeout(q.current),q.current=null),void $(0)):void se(!0)}),g.useEventListener("phone-island-call-transfer",function(t){var r=null==t?void 0:t.to;j.island.toggleIsOpen(!0),function(t){e.__awaiter(this,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return[4,c.attendedTransfer(t)];case 1:return e.sent()&&(j.currentCall.updateCurrentCall({transferring:!0,paused:!1}),j.player.playRemoteAudio()),[2]}})})}(r),v.eventDispatch("phone-island-call-transfer-opened",{})}),b.default.createElement(b.default.Fragment,null,A)};
2
2
  //# sourceMappingURL=WebRTC.js.map