@nethesis/phone-island 1.0.15 → 1.0.16

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 (397) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/App.js.map +1 -1
  3. package/dist/_virtual/index8.js +1 -1
  4. package/dist/_virtual/index9.js +1 -1
  5. package/dist/components/AlertView/index.js +1 -1
  6. package/dist/components/AlertView/index.js.map +1 -1
  7. package/dist/components/AudioPlayerView/Avatar.js +1 -1
  8. package/dist/components/AudioPlayerView/Avatar.js.map +1 -1
  9. package/dist/components/AudioPlayerView/PlayerFooterActions.js +1 -1
  10. package/dist/components/AudioPlayerView/PlayerFooterActions.js.map +1 -1
  11. package/dist/components/AudioPlayerView/Progress.js +1 -1
  12. package/dist/components/AudioPlayerView/Progress.js.map +1 -1
  13. package/dist/components/AudioPlayerView/index.js +1 -1
  14. package/dist/components/AudioPlayerView/index.js.map +1 -1
  15. package/dist/components/AvatarGroup.js +1 -1
  16. package/dist/components/AvatarGroup.js.map +1 -1
  17. package/dist/components/CallView/Actions.js +1 -1
  18. package/dist/components/CallView/Actions.js.map +1 -1
  19. package/dist/components/CallView/BackCall.js +1 -1
  20. package/dist/components/CallView/BackCall.js.map +1 -1
  21. package/dist/components/CallView/index.js +1 -1
  22. package/dist/components/CallView/index.js.map +1 -1
  23. package/dist/components/ConferenceView/ConferenceUsersList.js +1 -1
  24. package/dist/components/ConferenceView/ConferenceUsersList.js.map +1 -1
  25. package/dist/components/ConferenceView/index.js +1 -1
  26. package/dist/components/ConferenceView/index.js.map +1 -1
  27. package/dist/components/ContactView/ContactListView.js +1 -1
  28. package/dist/components/ContactView/ContactListView.js.map +1 -1
  29. package/dist/components/ContactView/ListAvatar.js +1 -1
  30. package/dist/components/ContactView/ListAvatar.js.map +1 -1
  31. package/dist/components/ContactView/SelectContactNumberView.js +1 -1
  32. package/dist/components/ContactView/SelectContactNumberView.js.map +1 -1
  33. package/dist/components/ContactView/TransferActions.js +1 -1
  34. package/dist/components/ContactView/TransferActions.js.map +1 -1
  35. package/dist/components/Dropdown.js +1 -1
  36. package/dist/components/Dropdown.js.map +1 -1
  37. package/dist/components/GenericAvatar.js +1 -1
  38. package/dist/components/GenericAvatar.js.map +1 -1
  39. package/dist/components/Hangup.js +1 -1
  40. package/dist/components/Hangup.js.map +1 -1
  41. package/dist/components/IslandMotion.js +1 -1
  42. package/dist/components/IslandMotion.js.map +1 -1
  43. package/dist/components/KeypadView/Actions.js +1 -1
  44. package/dist/components/KeypadView/Actions.js.map +1 -1
  45. package/dist/components/KeypadView/index.js +1 -1
  46. package/dist/components/KeypadView/index.js.map +1 -1
  47. package/dist/components/OperatorBusyView/index.js +1 -1
  48. package/dist/components/OperatorBusyView/index.js.map +1 -1
  49. package/dist/components/PhysicalRecorderView/index.js +1 -1
  50. package/dist/components/PhysicalRecorderView/index.js.map +1 -1
  51. package/dist/components/RecorderView/Actions.js +1 -1
  52. package/dist/components/RecorderView/Actions.js.map +1 -1
  53. package/dist/components/RecorderView/index.js +1 -1
  54. package/dist/components/RecorderView/index.js.map +1 -1
  55. package/dist/components/SettingsView/AudioView.js +1 -1
  56. package/dist/components/SettingsView/AudioView.js.map +1 -1
  57. package/dist/components/SettingsView/MicrophoneView.js +1 -1
  58. package/dist/components/SettingsView/MicrophoneView.js.map +1 -1
  59. package/dist/components/SettingsView/SettingsHeader.js +1 -1
  60. package/dist/components/SettingsView/SettingsHeader.js.map +1 -1
  61. package/dist/components/SettingsView/ThemeView.js +1 -1
  62. package/dist/components/SettingsView/ThemeView.js.map +1 -1
  63. package/dist/components/SettingsView/VideoInputView.js +1 -1
  64. package/dist/components/SettingsView/VideoInputView.js.map +1 -1
  65. package/dist/components/SettingsView/index.js +1 -1
  66. package/dist/components/SettingsView/index.js.map +1 -1
  67. package/dist/components/SideView/SideView.js.map +1 -1
  68. package/dist/components/SideView/components/SideViewButton.js +1 -1
  69. package/dist/components/SideView/components/SideViewButton.js.map +1 -1
  70. package/dist/components/Socket.js +1 -1
  71. package/dist/components/Socket.js.map +1 -1
  72. package/dist/components/StreamingAnswerView/index.js +1 -1
  73. package/dist/components/StreamingAnswerView/index.js.map +1 -1
  74. package/dist/components/SwitchDeviceView/index.js +1 -1
  75. package/dist/components/SwitchDeviceView/index.js.map +1 -1
  76. package/dist/components/SwitchInputView/DropdownContent.js +1 -1
  77. package/dist/components/SwitchInputView/DropdownContent.js.map +1 -1
  78. package/dist/components/SwitchInputView/Index.js +1 -1
  79. package/dist/components/TranscriptionView/TranscriptionView.js +1 -1
  80. package/dist/components/TranscriptionView/TranscriptionView.js.map +1 -1
  81. package/dist/components/TransferButton.js +1 -1
  82. package/dist/components/TransferButton.js.map +1 -1
  83. package/dist/components/VideoStreamingEmptyState/index.js +1 -1
  84. package/dist/components/VideoStreamingEmptyState/index.js.map +1 -1
  85. package/dist/components/VideoStreamingSkeleton/index.js +1 -1
  86. package/dist/components/VideoStreamingSkeleton/index.js.map +1 -1
  87. package/dist/components/VideoView/index.js +1 -1
  88. package/dist/components/VideoView/index.js.map +1 -1
  89. package/dist/components/WebRTC.js +1 -1
  90. package/dist/components/WebRTC.js.map +1 -1
  91. package/dist/events/CallEvents.js +1 -1
  92. package/dist/events/CallEvents.js.map +1 -1
  93. package/dist/events/RecorderEvents.js +1 -1
  94. package/dist/events/RecorderEvents.js.map +1 -1
  95. package/dist/index.css +1 -1
  96. package/dist/lib/devices/devices.js +1 -1
  97. package/dist/lib/devices/devices.js.map +1 -1
  98. package/dist/lib/phone/call.js +1 -1
  99. package/dist/lib/phone/call.js.map +1 -1
  100. package/dist/lib/phone/video.js +2 -0
  101. package/dist/lib/phone/video.js.map +1 -0
  102. package/dist/lib/webrtc/messages.js +1 -1
  103. package/dist/lib/webrtc/messages.js.map +1 -1
  104. package/dist/models/motions.js.map +1 -1
  105. package/dist/models/webrtc.js.map +1 -1
  106. package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.mjs.js +3 -3
  107. package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.mjs.js.map +1 -1
  108. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js +1 -1
  109. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js.map +1 -1
  110. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js +2 -0
  111. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js.map +1 -0
  112. package/dist/node_modules/@headlessui/react/dist/components/label/label.js +1 -1
  113. package/dist/node_modules/@headlessui/react/dist/components/label/label.js.map +1 -1
  114. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js +1 -1
  115. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js.map +1 -1
  116. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js +1 -1
  117. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js.map +1 -1
  118. package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js +1 -1
  119. package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js.map +1 -1
  120. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js +1 -1
  121. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js.map +1 -1
  122. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js +1 -1
  123. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +1 -1
  124. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js +1 -1
  125. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js.map +1 -1
  126. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js +1 -1
  127. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js.map +1 -1
  128. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js +1 -1
  129. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js.map +1 -1
  130. package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js +1 -1
  131. package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js.map +1 -1
  132. package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js +1 -1
  133. package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js.map +1 -1
  134. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +1 -1
  135. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +1 -1
  136. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +1 -1
  137. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +1 -1
  138. package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js +1 -1
  139. package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js.map +1 -1
  140. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +1 -1
  141. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +1 -1
  142. package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js +1 -1
  143. package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js.map +1 -1
  144. package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js +1 -1
  145. package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js.map +1 -1
  146. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +1 -1
  147. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +1 -1
  148. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +1 -1
  149. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +1 -1
  150. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +1 -1
  151. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +1 -1
  152. package/dist/node_modules/@headlessui/react/dist/internal/floating.js +1 -1
  153. package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +1 -1
  154. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js +1 -1
  155. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js.map +1 -1
  156. package/dist/node_modules/@headlessui/react/dist/machine.js +1 -1
  157. package/dist/node_modules/@headlessui/react/dist/machine.js.map +1 -1
  158. package/dist/node_modules/@headlessui/react/dist/react-glue.js +1 -1
  159. package/dist/node_modules/@headlessui/react/dist/react-glue.js.map +1 -1
  160. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +1 -1
  161. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +1 -1
  162. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +1 -1
  163. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +1 -1
  164. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +1 -1
  165. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +1 -1
  166. package/dist/node_modules/@headlessui/react/dist/utils/match.js +1 -1
  167. package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +1 -1
  168. package/dist/node_modules/@headlessui/react/dist/utils/render.js +1 -1
  169. package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +1 -1
  170. package/dist/node_modules/@headlessui/react/dist/utils/store.js +1 -1
  171. package/dist/node_modules/@headlessui/react/dist/utils/store.js.map +1 -1
  172. package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js +1 -1
  173. package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js.map +1 -1
  174. package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js +1 -1
  175. package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js.map +1 -1
  176. package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.mjs.js +1 -1
  177. package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.mjs.js.map +1 -1
  178. package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js +1 -1
  179. package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js.map +1 -1
  180. package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js +1 -1
  181. package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js.map +1 -1
  182. package/dist/node_modules/engine.io-client/build/esm/socket.js +1 -1
  183. package/dist/node_modules/engine.io-client/build/esm/socket.js.map +1 -1
  184. package/dist/node_modules/engine.io-client/build/esm/transport.js +1 -1
  185. package/dist/node_modules/engine.io-client/build/esm/transport.js.map +1 -1
  186. package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +1 -1
  187. package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js.map +1 -1
  188. package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js +1 -1
  189. package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js.map +1 -1
  190. package/dist/node_modules/engine.io-client/build/esm/util.js +1 -1
  191. package/dist/node_modules/engine.io-client/build/esm/util.js.map +1 -1
  192. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +1 -1
  193. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js.map +1 -1
  194. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js +1 -1
  195. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js.map +1 -1
  196. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js +1 -1
  197. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js.map +1 -1
  198. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js +1 -1
  199. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js.map +1 -1
  200. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js +1 -1
  201. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js.map +1 -1
  202. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js +1 -1
  203. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js.map +1 -1
  204. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js +1 -1
  205. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js.map +1 -1
  206. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js +1 -1
  207. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js.map +1 -1
  208. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js +1 -1
  209. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js.map +1 -1
  210. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js +1 -1
  211. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js.map +1 -1
  212. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs.js +1 -1
  213. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs.js.map +1 -1
  214. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js +1 -1
  215. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js.map +1 -1
  216. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs.js +1 -1
  217. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs.js.map +1 -1
  218. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js +1 -1
  219. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js.map +1 -1
  220. package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js +1 -1
  221. package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js.map +1 -1
  222. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js +1 -1
  223. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js.map +1 -1
  224. package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js +1 -1
  225. package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js.map +1 -1
  226. package/dist/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +1 -1
  227. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js +1 -1
  228. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js +1 -1
  229. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
  230. package/dist/node_modules/js-base64/base64.mjs.js +1 -1
  231. package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
  232. package/dist/node_modules/moment/moment.js +2 -2
  233. package/dist/node_modules/moment/moment.js.map +1 -1
  234. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js +1 -1
  235. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js.map +1 -1
  236. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js +1 -1
  237. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js.map +1 -1
  238. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js +1 -1
  239. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js.map +1 -1
  240. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js +1 -1
  241. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js.map +1 -1
  242. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js +1 -1
  243. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js.map +1 -1
  244. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js +1 -1
  245. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js.map +1 -1
  246. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js +1 -1
  247. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js.map +1 -1
  248. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js +1 -1
  249. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js.map +1 -1
  250. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js +1 -1
  251. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js.map +1 -1
  252. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js +1 -1
  253. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js.map +1 -1
  254. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js +1 -1
  255. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js.map +1 -1
  256. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js +1 -1
  257. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js.map +1 -1
  258. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js +1 -1
  259. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js.map +1 -1
  260. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js +1 -1
  261. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js.map +1 -1
  262. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js +1 -1
  263. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js.map +1 -1
  264. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js +1 -1
  265. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js.map +1 -1
  266. package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js +1 -1
  267. package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js.map +1 -1
  268. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js +1 -1
  269. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js.map +1 -1
  270. package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs.js +1 -1
  271. package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs.js.map +1 -1
  272. package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs.js +1 -1
  273. package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs.js.map +1 -1
  274. package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs.js +1 -1
  275. package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs.js.map +1 -1
  276. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs.js +1 -1
  277. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs.js.map +1 -1
  278. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs.js +1 -1
  279. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs.js.map +1 -1
  280. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js +1 -1
  281. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js.map +1 -1
  282. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js +1 -1
  283. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js.map +1 -1
  284. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js +1 -1
  285. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js.map +1 -1
  286. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js +1 -1
  287. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js.map +1 -1
  288. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js +1 -1
  289. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js.map +1 -1
  290. package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs.js +1 -1
  291. package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs.js.map +1 -1
  292. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js +1 -1
  293. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js.map +1 -1
  294. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js +1 -1
  295. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js.map +1 -1
  296. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js +1 -1
  297. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js.map +1 -1
  298. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js +1 -1
  299. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js.map +1 -1
  300. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs.js +1 -1
  301. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs.js.map +1 -1
  302. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js +1 -1
  303. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js.map +1 -1
  304. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js +1 -1
  305. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js.map +1 -1
  306. package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js +1 -1
  307. package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js.map +1 -1
  308. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js +1 -1
  309. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js.map +1 -1
  310. package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.mjs.js +1 -1
  311. package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.mjs.js.map +1 -1
  312. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js +1 -1
  313. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js.map +1 -1
  314. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs.js +1 -1
  315. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs.js.map +1 -1
  316. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js +1 -1
  317. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js.map +1 -1
  318. package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs.js +1 -1
  319. package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs.js.map +1 -1
  320. package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js +1 -1
  321. package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js.map +1 -1
  322. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js +1 -1
  323. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js.map +1 -1
  324. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js +1 -1
  325. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js.map +1 -1
  326. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js +1 -1
  327. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js.map +1 -1
  328. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs.js +1 -1
  329. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs.js.map +1 -1
  330. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs.js +1 -1
  331. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs.js.map +1 -1
  332. package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs.js +1 -1
  333. package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs.js.map +1 -1
  334. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js +1 -1
  335. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js.map +1 -1
  336. package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js +1 -1
  337. package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js.map +1 -1
  338. package/dist/node_modules/react-redux/es/components/Provider.js +1 -1
  339. package/dist/node_modules/react-redux/es/components/Provider.js.map +1 -1
  340. package/dist/node_modules/react-redux/es/hooks/useDispatch.js +1 -1
  341. package/dist/node_modules/react-redux/es/hooks/useDispatch.js.map +1 -1
  342. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js +1 -1
  343. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js.map +1 -1
  344. package/dist/node_modules/react-redux/es/hooks/useSelector.js +1 -1
  345. package/dist/node_modules/react-redux/es/hooks/useSelector.js.map +1 -1
  346. package/dist/node_modules/react-redux/es/hooks/useStore.js +1 -1
  347. package/dist/node_modules/react-redux/es/hooks/useStore.js.map +1 -1
  348. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js +1 -1
  349. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js.map +1 -1
  350. package/dist/node_modules/redux/es/redux.js +1 -1
  351. package/dist/node_modules/redux/es/redux.js.map +1 -1
  352. package/dist/node_modules/socket.io-client/build/esm/index.js.map +1 -1
  353. package/dist/node_modules/socket.io-client/build/esm/socket.js +1 -1
  354. package/dist/node_modules/socket.io-client/build/esm/socket.js.map +1 -1
  355. package/dist/node_modules/socket.io-client/build/esm/url.js +1 -1
  356. package/dist/node_modules/socket.io-client/build/esm/url.js.map +1 -1
  357. package/dist/node_modules/webm-duration-fix/lib/ebml/index.js +1 -1
  358. package/dist/node_modules/webm-duration-fix/lib/ebml/index.js.map +1 -1
  359. package/dist/node_modules/webm-duration-fix/lib/index.js +1 -1
  360. package/dist/node_modules/webm-duration-fix/lib/index.js.map +1 -1
  361. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js +1 -1
  362. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js.map +1 -1
  363. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js +1 -1
  364. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js.map +1 -1
  365. package/dist/package.json.js +1 -1
  366. package/dist/services/astproxy.js.map +1 -1
  367. package/package.json +13 -28
  368. package/dist/_virtual/index10.js +0 -2
  369. package/dist/_virtual/index10.js.map +0 -1
  370. package/dist/_virtual/index11.js +0 -2
  371. package/dist/_virtual/index11.js.map +0 -1
  372. package/dist/_virtual/react-is.development4.js +0 -2
  373. package/dist/_virtual/react-is.development4.js.map +0 -1
  374. package/dist/_virtual/react-is.production.min4.js +0 -2
  375. package/dist/_virtual/react-is.production.min4.js.map +0 -1
  376. package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js +0 -2
  377. package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js.map +0 -1
  378. package/dist/node_modules/object-assign/index.js +0 -8
  379. package/dist/node_modules/object-assign/index.js.map +0 -1
  380. package/dist/node_modules/prop-types/checkPropTypes.js +0 -2
  381. package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
  382. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -2
  383. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
  384. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -2
  385. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
  386. package/dist/node_modules/prop-types/index.js +0 -2
  387. package/dist/node_modules/prop-types/index.js.map +0 -1
  388. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -2
  389. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
  390. package/dist/node_modules/prop-types/lib/has.js +0 -2
  391. package/dist/node_modules/prop-types/lib/has.js.map +0 -1
  392. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +0 -10
  393. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  394. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +0 -10
  395. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  396. package/dist/node_modules/prop-types/node_modules/react-is/index.js +0 -2
  397. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AudioView.js","sources":["../../../src/components/SettingsView/AudioView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faVolumeHigh } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\nimport { getCurrentAudioOutputDeviceId } from '../../lib/devices/devices'\n\nconst AudioView = () => {\n const remoteAudioElement: any = useSelector((state: RootState) => state.player.remoteAudio)\n\n const { t } = useTranslation()\n const audioOutputDevices = store.select.mediaDevices.audioOutputDevices(store.getState())\n const [selectedAudioOutput, setSelectedAudioOutput] = useState<string | null>(\n getCurrentAudioOutputDeviceId() || null,\n )\n const handleClickAudioOutput = (audioOutputDevice: string) => {\n setSelectedAudioOutput(audioOutputDevice)\n\n remoteAudioElement?.current\n .setSinkId(audioOutputDevice)\n .then(function () {\n console.info('Audio output device switch success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: audioOutputDevice })\n\n // dispatch event\n eventDispatch('phone-island-call-audio-output-switched', {})\n })\n .catch(function (err) {\n console.error('Audio output device switch error:', err)\n })\n }\n useEventListener('phone-island-call-audio-output-switch', (data: DeviceInputOutputTypes) => {\n handleClickAudioOutput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Speakers')} tooltipPrefix='audio' />\n {/* Audio List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {audioOutputDevices.map((audioDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickAudioOutput(audioDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(audioDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faVolumeHigh} className='pi-mr-2 pi-w-5 pi-h-5' />\n <span>{audioDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedAudioOutput === audioDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === audioDevice?.deviceId\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default AudioView\n"],"names":["remoteAudioElement","useSelector","state","player","remoteAudio","t","useTranslation","audioOutputDevices","store","select","mediaDevices","getState","_a","useState","getCurrentAudioOutputDeviceId","selectedAudioOutput","setSelectedAudioOutput","handleClickAudioOutput","audioOutputDevice","current","setSinkId","then","console","info","setJSONItem","deviceId","eventDispatch","catch","err","error","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","map","audioDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faVolumeHigh","label","faCheck","concat"],"mappings":"iyCAakB,WAChB,IAAMA,EAA0BC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,WAAb,GAE1DC,EAAMC,qBACRC,EAAqBC,EAAKA,MAACC,OAAOC,aAAaH,mBAAmBC,EAAKA,MAACG,YACxEC,EAAgDC,EAAQA,SAC5DC,mCAAmC,MAD9BC,EAAmBH,EAAA,GAAEI,OAGtBC,EAAyB,SAACC,GAC9BF,EAAuBE,GAEvBlB,SAAAA,EAAoBmB,QACjBC,UAAUF,GACVG,KAAK,WACJC,QAAQC,KAAK,uCAEbC,EAAAA,YAAY,mCAAoC,CAAEC,SAAUP,IAG5DQ,gBAAc,0CAA2C,CAAA,EAC3D,GACCC,MAAM,SAAUC,GACfN,QAAQO,MAAM,oCAAqCD,EACrD,EACJ,EACAE,mBAAiB,wCAAyC,SAACC,GACzDd,EAAuBc,EAAKN,SAC9B,GAEM,IAAAO,EAAoCnB,EAAAA,SAAwB,MAA3DoB,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOlC,EAAE,qBAAsBmC,cAAc,UAE7DL,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAmBkC,IAAI,SAACC,EAAaC,GAAU,OAC9CR,EAAAA,QACEC,cAAA,MAAA,CAAAQ,IAAKD,EACLN,UAAU,8PACVQ,QAAS,WAAM,OAAA5B,EAAuByB,aAAA,EAAAA,EAAajB,SAAS,EAC5DqB,aAAc,WAAM,OAAAZ,EAAiBQ,aAAW,EAAXA,EAAajB,SAA9B,EACpBsB,aAAc,WAAM,OAAAb,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAY,mBAAgBC,KAAMC,eAAcb,UAAU,0BAC/CF,EAAA,QAAAC,cAAA,OAAA,MAAOM,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDR,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZtB,KAAwB2B,eAAAA,EAAajB,WACpCU,EAAAA,QAAAC,cAACY,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbf,UAAW,GACTgB,OAAApB,KAAkBS,aAAW,EAAXA,EAAajB,UAC3B,yCACA,+CACU,qBAKzB,IAIT"}
1
+ {"version":3,"file":"AudioView.js","sources":["../../../src/components/SettingsView/AudioView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faVolumeHigh } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\nimport { getCurrentAudioOutputDeviceId } from '../../lib/devices/devices'\n\nconst AudioView = () => {\n const remoteAudioElement: any = useSelector((state: RootState) => state.player.remoteAudio)\n\n const { t } = useTranslation()\n const audioOutputDevices = store.select.mediaDevices.audioOutputDevices(store.getState())\n const [selectedAudioOutput, setSelectedAudioOutput] = useState<string | null>(\n getCurrentAudioOutputDeviceId() || null,\n )\n const handleClickAudioOutput = (audioOutputDevice: string) => {\n setSelectedAudioOutput(audioOutputDevice)\n\n remoteAudioElement?.current\n .setSinkId(audioOutputDevice)\n .then(function () {\n console.info('Audio output device switch success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: audioOutputDevice })\n\n // dispatch event\n eventDispatch('phone-island-call-audio-output-switched', {})\n })\n .catch(function (err) {\n console.error('Audio output device switch error:', err)\n })\n }\n useEventListener('phone-island-call-audio-output-switch', (data: DeviceInputOutputTypes) => {\n handleClickAudioOutput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Speakers')} tooltipPrefix='audio' />\n {/* Audio List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {audioOutputDevices.map((audioDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickAudioOutput(audioDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(audioDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faVolumeHigh} className='pi-mr-2 pi-w-5 pi-h-5' />\n <span>{audioDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedAudioOutput === audioDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === audioDevice?.deviceId\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default AudioView\n"],"names":["remoteAudioElement","useSelector","state","player","remoteAudio","t","useTranslation","audioOutputDevices","store","select","mediaDevices","getState","_a","useState","getCurrentAudioOutputDeviceId","selectedAudioOutput","setSelectedAudioOutput","handleClickAudioOutput","audioOutputDevice","current","setSinkId","then","console","info","setJSONItem","deviceId","eventDispatch","catch","err","error","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","map","audioDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faVolumeHigh","label","faCheck","concat"],"mappings":"myCAakB,WAChB,IAAMA,EAA0BC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,WAAb,GAE1DC,EAAMC,qBACRC,EAAqBC,EAAKA,MAACC,OAAOC,aAAaH,mBAAmBC,EAAKA,MAACG,YACxEC,EAAgDC,EAAQA,SAC5DC,mCAAmC,MAD9BC,EAAmBH,EAAA,GAAEI,OAGtBC,EAAyB,SAACC,GAC9BF,EAAuBE,GAEvBlB,SAAAA,EAAoBmB,QACjBC,UAAUF,GACVG,KAAK,WACJC,QAAQC,KAAK,uCAEbC,EAAAA,YAAY,mCAAoC,CAAEC,SAAUP,IAG5DQ,gBAAc,0CAA2C,CAAA,EAC3D,GACCC,MAAM,SAAUC,GACfN,QAAQO,MAAM,oCAAqCD,EACrD,EACJ,EACAE,mBAAiB,wCAAyC,SAACC,GACzDd,EAAuBc,EAAKN,SAC9B,GAEM,IAAAO,EAAoCnB,EAAAA,SAAwB,MAA3DoB,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOlC,EAAE,qBAAsBmC,cAAc,UAE7DL,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAmBkC,IAAI,SAACC,EAAaC,GAAU,OAC9CR,EAAAA,QACEC,cAAA,MAAA,CAAAQ,IAAKD,EACLN,UAAU,8PACVQ,QAAS,WAAM,OAAA5B,EAAuByB,aAAA,EAAAA,EAAajB,SAAS,EAC5DqB,aAAc,WAAM,OAAAZ,EAAiBQ,aAAW,EAAXA,EAAajB,SAA9B,EACpBsB,aAAc,WAAM,OAAAb,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAY,mBAAgBC,KAAMC,eAAcb,UAAU,0BAC/CF,EAAA,QAAAC,cAAA,OAAA,MAAOM,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDR,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZtB,KAAwB2B,eAAAA,EAAajB,WACpCU,EAAAA,QAAAC,cAACY,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbf,UAAW,GACTgB,OAAApB,KAAkBS,aAAW,EAAXA,EAAajB,UAC3B,yCACA,+CACU,qBAKzB,IAIT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../store/index.js"),r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),s=require("../../utils/customHooks/useEventListener.js"),a=require("../../utils/genericFunctions/eventDispatch.js"),n=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js");var o=require("./SettingsHeader.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var l=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("../../lib/devices/devices.js"),c=require("../../node_modules/react-redux/es/hooks/useSelector.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=d(e);exports.default=function(){var d=c.useSelector(function(e){return e.webrtc}).sipcall,m=l.useTranslation().t,f=e.useState(u.getCurrentAudioInputDeviceId()||null),v=f[0],b=f[1],h=t.store.select.mediaDevices.audioInputDevices(t.store.getState()),g=function(e){b(e),d.webrtcStuff.myStream?null==d||d.replaceTracks({tracks:[{type:"audio",mid:"0",capture:{deviceId:{exact:e}}}],success:function(){console.info("Audio input device switch success!"),n.setJSONItem("phone-island-audio-input-device",{deviceId:e}),a.eventDispatch("phone-island-call-audio-input-switched",{})},error:function(e){console.error("Audio input device switch error:",e)}}):(n.setJSONItem("phone-island-audio-input-device",{deviceId:e}),a.eventDispatch("phone-island-call-audio-input-switched",{}))};s.useEventListener("phone-island-call-audio-input-switch",function(e){g(e.deviceId)});var x=e.useState(null),y=x[0],j=x[1];return p.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},p.default.createElement(o.SettingsHeader,{title:m("Settings.Microphones"),tooltipPrefix:"microphone"}),p.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25"},h.map(function(e,t){return p.default.createElement("div",{key:t,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer",onClick:function(){return g(null==e?void 0:e.deviceId)},onMouseEnter:function(){return j(null==e?void 0:e.deviceId)},onMouseLeave:function(){return j(null)}},p.default.createElement("div",{className:"pi-flex pi-items-center"},p.default.createElement(r.FontAwesomeIcon,{icon:i.faMicrophone,className:"pi-mr-2 pi-w-5 pi-h-5"}),p.default.createElement("span",null,(null==e?void 0:e.label)||"Input device ".concat(t+1))),p.default.createElement("div",{className:"pi-flex pi-items-center"},v===(null==e?void 0:e.deviceId)&&p.default.createElement(r.FontAwesomeIcon,{icon:i.faCheck,className:"".concat(y===(null==e?void 0:e.deviceId)?"pi-text-gray-700 dark:pi-text-gray-200":"pi-text-emerald-700 dark:pi-text-emerald-500"," pi-w-5 pi-h-5")})))})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../store/index.js"),i=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),s=require("../../utils/customHooks/useEventListener.js"),a=require("../../utils/genericFunctions/eventDispatch.js"),n=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js");var o=require("./SettingsHeader.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var l=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("../../lib/devices/devices.js"),c=require("../../node_modules/react-redux/es/hooks/useSelector.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=d(e);exports.default=function(){var d=c.useSelector(function(e){return e.webrtc}).sipcall,m=l.useTranslation().t,f=e.useState(u.getCurrentAudioInputDeviceId()||null),v=f[0],b=f[1],h=t.store.select.mediaDevices.audioInputDevices(t.store.getState()),g=function(e){b(e),d.webrtcStuff.myStream?null==d||d.replaceTracks({tracks:[{type:"audio",mid:"0",capture:{deviceId:{exact:e}}}],success:function(){console.info("Audio input device switch success!"),n.setJSONItem("phone-island-audio-input-device",{deviceId:e}),a.eventDispatch("phone-island-call-audio-input-switched",{})},error:function(e){console.error("Audio input device switch error:",e)}}):(n.setJSONItem("phone-island-audio-input-device",{deviceId:e}),a.eventDispatch("phone-island-call-audio-input-switched",{}))};s.useEventListener("phone-island-call-audio-input-switch",function(e){g(e.deviceId)});var x=e.useState(null),y=x[0],j=x[1];return p.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},p.default.createElement(o.SettingsHeader,{title:m("Settings.Microphones"),tooltipPrefix:"microphone"}),p.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25"},h.map(function(e,t){return p.default.createElement("div",{key:t,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer",onClick:function(){return g(null==e?void 0:e.deviceId)},onMouseEnter:function(){return j(null==e?void 0:e.deviceId)},onMouseLeave:function(){return j(null)}},p.default.createElement("div",{className:"pi-flex pi-items-center"},p.default.createElement(i.FontAwesomeIcon,{icon:r.faMicrophone,className:"pi-mr-2 pi-w-5 pi-h-5"}),p.default.createElement("span",null,(null==e?void 0:e.label)||"Input device ".concat(t+1))),p.default.createElement("div",{className:"pi-flex pi-items-center"},v===(null==e?void 0:e.deviceId)&&p.default.createElement(i.FontAwesomeIcon,{icon:r.faCheck,className:"".concat(y===(null==e?void 0:e.deviceId)?"pi-text-gray-700 dark:pi-text-gray-200":"pi-text-emerald-700 dark:pi-text-emerald-500"," pi-w-5 pi-h-5")})))})))};
2
2
  //# sourceMappingURL=MicrophoneView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MicrophoneView.js","sources":["../../../src/components/SettingsView/MicrophoneView.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faMicrophone } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\nimport { getCurrentAudioInputDeviceId } from '../../lib/devices/devices'\n\nconst MicrophoneView = () => {\n const { sipcall }: any = useSelector((state: RootState) => state.webrtc)\n const { t } = useTranslation()\n\n const [selectedAudioInput, setSelectedAudioInput] = useState<string | null>(\n getCurrentAudioInputDeviceId() || null,\n )\n const audioInputDevices = store.select.mediaDevices.audioInputDevices(store.getState())\n\n const handleClickAudioInput = (audioInputDevice: string) => {\n setSelectedAudioInput(audioInputDevice)\n\n if (sipcall.webrtcStuff.myStream) {\n sipcall?.replaceTracks({\n tracks: [\n {\n type: 'audio',\n mid: '0',\n capture: { deviceId: { exact: audioInputDevice } },\n },\n ],\n success: function () {\n console.info('Audio input device switch success!')\n setJSONItem('phone-island-audio-input-device', { deviceId: audioInputDevice })\n eventDispatch('phone-island-call-audio-input-switched', {})\n },\n error: function (err) {\n console.error('Audio input device switch error:', err)\n },\n })\n } else {\n setJSONItem('phone-island-audio-input-device', { deviceId: audioInputDevice })\n eventDispatch('phone-island-call-audio-input-switched', {})\n }\n }\n\n useEventListener('phone-island-call-audio-input-switch', (data: DeviceInputOutputTypes) => {\n handleClickAudioInput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Microphones')} tooltipPrefix='microphone' />\n\n {/* Microphone List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {audioInputDevices.map((audioDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickAudioInput(audioDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(audioDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faMicrophone} className='pi-mr-2 pi-w-5 pi-h-5' />\n <span>{audioDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedAudioInput === audioDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === audioDevice?.deviceId\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default MicrophoneView\n"],"names":["sipcall","useSelector","state","webrtc","t","useTranslation","_a","useState","getCurrentAudioInputDeviceId","selectedAudioInput","setSelectedAudioInput","audioInputDevices","store","select","mediaDevices","getState","handleClickAudioInput","audioInputDevice","webrtcStuff","myStream","replaceTracks","tracks","type","mid","capture","deviceId","exact","success","console","info","setJSONItem","eventDispatch","error","err","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","map","audioDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faMicrophone","label","faCheck","concat"],"mappings":"iyCAauB,WACb,IAAAA,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,iBACzDC,EAAMC,qBAERC,EAA8CC,EAAQA,SAC1DC,kCAAkC,MAD7BC,EAAkBH,EAAA,GAAEI,OAGrBC,EAAoBC,EAAKA,MAACC,OAAOC,aAAaH,kBAAkBC,EAAKA,MAACG,YAEtEC,EAAwB,SAACC,GAC7BP,EAAsBO,GAElBjB,EAAQkB,YAAYC,SACtBnB,SAAAA,EAASoB,cAAc,CACrBC,OAAQ,CACN,CACEC,KAAM,QACNC,IAAK,IACLC,QAAS,CAAEC,SAAU,CAAEC,MAAOT,MAGlCU,QAAS,WACPC,QAAQC,KAAK,sCACbC,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,EACzD,EACDC,MAAO,SAAUC,GACfL,QAAQI,MAAM,mCAAoCC,EACnD,KAGHH,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,GAE5D,EAEAG,mBAAiB,uCAAwC,SAACC,GACxDnB,EAAsBmB,EAAKV,SAC7B,GAEM,IAAAW,EAAoC7B,EAAAA,SAAwB,MAA3D8B,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOvC,EAAE,wBAAyBwC,cAAc,eAGhEL,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAkBkC,IAAI,SAACC,EAAaC,GAAU,OAC7CR,EAAAA,QACEC,cAAA,MAAA,CAAAQ,IAAKD,EACLN,UAAU,8PACVQ,QAAS,WAAM,OAAAjC,EAAsB8B,aAAA,EAAAA,EAAarB,SAAS,EAC3DyB,aAAc,WAAM,OAAAZ,EAAiBQ,aAAW,EAAXA,EAAarB,SAA9B,EACpB0B,aAAc,WAAM,OAAAb,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAY,mBAAgBC,KAAMC,eAAcb,UAAU,0BAC/CF,EAAA,QAAAC,cAAA,OAAA,MAAOM,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDR,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZhC,KAAuBqC,eAAAA,EAAarB,WACnCc,EAAAA,QAAAC,cAACY,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbf,UAAW,GACTgB,OAAApB,KAAkBS,aAAW,EAAXA,EAAarB,UAC3B,yCACA,+CACU,qBAKzB,IAIT"}
1
+ {"version":3,"file":"MicrophoneView.js","sources":["../../../src/components/SettingsView/MicrophoneView.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faMicrophone } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\nimport { getCurrentAudioInputDeviceId } from '../../lib/devices/devices'\n\nconst MicrophoneView = () => {\n const { sipcall }: any = useSelector((state: RootState) => state.webrtc)\n const { t } = useTranslation()\n\n const [selectedAudioInput, setSelectedAudioInput] = useState<string | null>(\n getCurrentAudioInputDeviceId() || null,\n )\n const audioInputDevices = store.select.mediaDevices.audioInputDevices(store.getState())\n\n const handleClickAudioInput = (audioInputDevice: string) => {\n setSelectedAudioInput(audioInputDevice)\n\n if (sipcall.webrtcStuff.myStream) {\n sipcall?.replaceTracks({\n tracks: [\n {\n type: 'audio',\n mid: '0',\n capture: { deviceId: { exact: audioInputDevice } },\n },\n ],\n success: function () {\n console.info('Audio input device switch success!')\n setJSONItem('phone-island-audio-input-device', { deviceId: audioInputDevice })\n eventDispatch('phone-island-call-audio-input-switched', {})\n },\n error: function (err) {\n console.error('Audio input device switch error:', err)\n },\n })\n } else {\n setJSONItem('phone-island-audio-input-device', { deviceId: audioInputDevice })\n eventDispatch('phone-island-call-audio-input-switched', {})\n }\n }\n\n useEventListener('phone-island-call-audio-input-switch', (data: DeviceInputOutputTypes) => {\n handleClickAudioInput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Microphones')} tooltipPrefix='microphone' />\n\n {/* Microphone List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {audioInputDevices.map((audioDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickAudioInput(audioDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(audioDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faMicrophone} className='pi-mr-2 pi-w-5 pi-h-5' />\n <span>{audioDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedAudioInput === audioDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === audioDevice?.deviceId\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default MicrophoneView\n"],"names":["sipcall","useSelector","state","webrtc","t","useTranslation","_a","useState","getCurrentAudioInputDeviceId","selectedAudioInput","setSelectedAudioInput","audioInputDevices","store","select","mediaDevices","getState","handleClickAudioInput","audioInputDevice","webrtcStuff","myStream","replaceTracks","tracks","type","mid","capture","deviceId","exact","success","console","info","setJSONItem","eventDispatch","error","err","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","map","audioDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faMicrophone","label","faCheck","concat"],"mappings":"myCAauB,WACb,IAAAA,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,iBACzDC,EAAMC,qBAERC,EAA8CC,EAAQA,SAC1DC,kCAAkC,MAD7BC,EAAkBH,EAAA,GAAEI,OAGrBC,EAAoBC,EAAKA,MAACC,OAAOC,aAAaH,kBAAkBC,EAAKA,MAACG,YAEtEC,EAAwB,SAACC,GAC7BP,EAAsBO,GAElBjB,EAAQkB,YAAYC,SACtBnB,SAAAA,EAASoB,cAAc,CACrBC,OAAQ,CACN,CACEC,KAAM,QACNC,IAAK,IACLC,QAAS,CAAEC,SAAU,CAAEC,MAAOT,MAGlCU,QAAS,WACPC,QAAQC,KAAK,sCACbC,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,EACzD,EACDC,MAAO,SAAUC,GACfL,QAAQI,MAAM,mCAAoCC,EACnD,KAGHH,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,GAE5D,EAEAG,mBAAiB,uCAAwC,SAACC,GACxDnB,EAAsBmB,EAAKV,SAC7B,GAEM,IAAAW,EAAoC7B,EAAAA,SAAwB,MAA3D8B,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOvC,EAAE,wBAAyBwC,cAAc,eAGhEL,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAkBkC,IAAI,SAACC,EAAaC,GAAU,OAC7CR,EAAAA,QACEC,cAAA,MAAA,CAAAQ,IAAKD,EACLN,UAAU,8PACVQ,QAAS,WAAM,OAAAjC,EAAsB8B,aAAA,EAAAA,EAAarB,SAAS,EAC3DyB,aAAc,WAAM,OAAAZ,EAAiBQ,aAAW,EAAXA,EAAarB,SAA9B,EACpB0B,aAAc,WAAM,OAAAb,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAY,mBAAgBC,KAAMC,eAAcb,UAAU,0BAC/CF,EAAA,QAAAC,cAAA,OAAA,MAAOM,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDR,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZhC,KAAuBqC,eAAAA,EAAarB,WACnCc,EAAAA,QAAAC,cAACY,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbf,UAAW,GACTgB,OAAApB,KAAkBS,aAAW,EAAXA,EAAarB,UAC3B,yCACA,+CACU,qBAKzB,IAIT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),o=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),r=require("../Button.js"),i=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var s=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var a=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),n=require("../../node_modules/react-redux/es/hooks/useSelector.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=l(e);exports.SettingsHeader=function(e){var l=e.title,u=e.tooltipPrefix,c=a.useDispatch(),m=s.useTranslation().t,p=n.useSelector(function(e){return e.island}).previousView;return d.default.createElement(d.default.Fragment,null,d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-2 pi-text-gray-900 dark:pi-text-gray-50"},d.default.createElement(r.Button,{onClick:function(){return c.island.setSettingsView("main")},variant:"transparentSettings","data-tooltip-id":"tooltip-back-".concat(u,"-settings"),"data-tooltip-content":m("Common.Back")||""},d.default.createElement(t.FontAwesomeIcon,{icon:o.faAngleLeft,className:"pi-w-5 pi-h-5"})),d.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},l)),d.default.createElement(r.Button,{onClick:function(){return c.island.setSettingsView("main"),void c.island.setIslandView("".concat(p||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-".concat(u,"-settings"),"data-tooltip-content":m("Common.Close")||""},d.default.createElement(t.FontAwesomeIcon,{icon:o.faXmark,className:"pi-w-5 pi-h-5"}))),d.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),d.default.createElement(i.CustomThemedTooltip,{id:"tooltip-back-".concat(u,"-settings"),place:"bottom"}),d.default.createElement(i.CustomThemedTooltip,{id:"tooltip-close-".concat(u,"-settings"),place:"bottom"}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),o=require("../Button.js"),r=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var s=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var a=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),n=require("../../node_modules/react-redux/es/hooks/useSelector.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=l(e);exports.SettingsHeader=function(e){var l=e.title,u=e.tooltipPrefix,c=a.useDispatch(),m=s.useTranslation().t,p=n.useSelector(function(e){return e.island}).previousView;return d.default.createElement(d.default.Fragment,null,d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-2 pi-text-gray-900 dark:pi-text-gray-50"},d.default.createElement(o.Button,{onClick:function(){return c.island.setSettingsView("main")},variant:"transparentSettings","data-tooltip-id":"tooltip-back-".concat(u,"-settings"),"data-tooltip-content":m("Common.Back")||""},d.default.createElement(t.FontAwesomeIcon,{icon:i.faAngleLeft,className:"pi-w-5 pi-h-5"})),d.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},l)),d.default.createElement(o.Button,{onClick:function(){return c.island.setSettingsView("main"),void c.island.setIslandView("".concat(p||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-".concat(u,"-settings"),"data-tooltip-content":m("Common.Close")||""},d.default.createElement(t.FontAwesomeIcon,{icon:i.faXmark,className:"pi-w-5 pi-h-5"}))),d.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),d.default.createElement(r.CustomThemedTooltip,{id:"tooltip-back-".concat(u,"-settings"),place:"bottom"}),d.default.createElement(r.CustomThemedTooltip,{id:"tooltip-close-".concat(u,"-settings"),place:"bottom"}))};
2
2
  //# sourceMappingURL=SettingsHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsHeader.js","sources":["../../../src/components/SettingsView/SettingsHeader.tsx"],"sourcesContent":["import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleLeft, faXmark } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { Dispatch, RootState } from '../../store'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\n\ninterface SettingsHeaderProps {\n title: string\n tooltipPrefix: string\n}\n\nexport const SettingsHeader: React.FC<SettingsHeaderProps> = ({ title, tooltipPrefix }) => {\n const dispatch = useDispatch<Dispatch>()\n const { t } = useTranslation()\n const { previousView } = useSelector((state: RootState) => state.island)\n\n const closeSettings = () => {\n // Reset settings view to main\n dispatch.island.setSettingsView('main')\n // Go to previous view (e.g. 'call' or 'video')\n dispatch.island.setIslandView(`${previousView || 'call'}`)\n }\n\n return (\n <>\n <div className='pi-flex pi-items-center pi-justify-between'>\n <div className='pi-flex pi-items-center pi-gap-2 pi-text-gray-900 dark:pi-text-gray-50'>\n <Button\n onClick={() => dispatch.island.setSettingsView('main')}\n variant='transparentSettings'\n data-tooltip-id={`tooltip-back-${tooltipPrefix}-settings`}\n data-tooltip-content={t('Common.Back') || ''}\n >\n <FontAwesomeIcon icon={faAngleLeft} className='pi-w-5 pi-h-5' />\n </Button>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{title}</h1>\n </div>\n <Button\n onClick={() => closeSettings()}\n variant='transparentSettings'\n data-tooltip-id={`tooltip-close-${tooltipPrefix}-settings`}\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n <CustomThemedTooltip id={`tooltip-back-${tooltipPrefix}-settings`} place='bottom' />\n <CustomThemedTooltip id={`tooltip-close-${tooltipPrefix}-settings`} place='bottom' />\n </>\n )\n}\n"],"names":["_a","title","tooltipPrefix","dispatch","useDispatch","t","useTranslation","previousView","useSelector","state","island","React","createElement","Fragment","className","Button","onClick","setSettingsView","variant","concat","FontAwesomeIcon","icon","faAngleLeft","setIslandView","faXmark","CustomThemedTooltip","id","place"],"mappings":"6lCAc6D,SAACA,OAAEC,EAAKD,EAAAC,MAAEC,EAAaF,EAAAE,cAC5EC,EAAWC,EAAAA,cACTC,EAAMC,qBACNC,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,sBASjE,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,8CACbH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,0EACbH,EAAAA,QAAAC,cAACG,SAAM,CACLC,QAAS,WAAM,OAAAb,EAASO,OAAOO,gBAAgB,OAAO,EACtDC,QAAQ,sBAAqB,kBACZ,gBAAgBC,OAAAjB,EAAwB,aAAA,uBACnCG,EAAE,gBAAkB,IAE1CM,UAACC,cAAAQ,EAAAA,gBAAgB,CAAAC,KAAMC,EAAAA,YAAaR,UAAU,mBAEhDH,EAAA,QAAAC,cAAA,KAAA,CAAIE,UAAU,0CAA0Cb,IAE1DU,UAACC,cAAAG,EAAMA,OACL,CAAAC,QAAS,WAAM,OApBrBb,EAASO,OAAOO,gBAAgB,aAEhCd,EAASO,OAAOa,cAAc,GAAGJ,OAAAZ,GAAgB,QAkBb,EAC9BW,QAAQ,sBAAqB,kBACZ,iBAAiBC,OAAAjB,EAAwB,aAAA,uBACpCG,EAAE,iBAAmB,IAE3CM,UAACC,cAAAQ,EAAAA,gBAAgB,CAAAC,KAAMG,EAAAA,QAASV,UAAU,oBAI9CH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,mEACfH,EAAAA,QAACC,cAAAa,sBAAoB,CAAAC,GAAI,gBAAAP,OAAgBjB,EAAa,aAAayB,MAAM,WACzEhB,EAAAA,QAAAC,cAACa,EAAAA,oBAAmB,CAACC,GAAI,wBAAiBxB,EAAa,aAAayB,MAAM,WAGhF"}
1
+ {"version":3,"file":"SettingsHeader.js","sources":["../../../src/components/SettingsView/SettingsHeader.tsx"],"sourcesContent":["import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleLeft, faXmark } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { Dispatch, RootState } from '../../store'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\n\ninterface SettingsHeaderProps {\n title: string\n tooltipPrefix: string\n}\n\nexport const SettingsHeader: React.FC<SettingsHeaderProps> = ({ title, tooltipPrefix }) => {\n const dispatch = useDispatch<Dispatch>()\n const { t } = useTranslation()\n const { previousView } = useSelector((state: RootState) => state.island)\n\n const closeSettings = () => {\n // Reset settings view to main\n dispatch.island.setSettingsView('main')\n // Go to previous view (e.g. 'call' or 'video')\n dispatch.island.setIslandView(`${previousView || 'call'}`)\n }\n\n return (\n <>\n <div className='pi-flex pi-items-center pi-justify-between'>\n <div className='pi-flex pi-items-center pi-gap-2 pi-text-gray-900 dark:pi-text-gray-50'>\n <Button\n onClick={() => dispatch.island.setSettingsView('main')}\n variant='transparentSettings'\n data-tooltip-id={`tooltip-back-${tooltipPrefix}-settings`}\n data-tooltip-content={t('Common.Back') || ''}\n >\n <FontAwesomeIcon icon={faAngleLeft} className='pi-w-5 pi-h-5' />\n </Button>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{title}</h1>\n </div>\n <Button\n onClick={() => closeSettings()}\n variant='transparentSettings'\n data-tooltip-id={`tooltip-close-${tooltipPrefix}-settings`}\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n <CustomThemedTooltip id={`tooltip-back-${tooltipPrefix}-settings`} place='bottom' />\n <CustomThemedTooltip id={`tooltip-close-${tooltipPrefix}-settings`} place='bottom' />\n </>\n )\n}\n"],"names":["_a","title","tooltipPrefix","dispatch","useDispatch","t","useTranslation","previousView","useSelector","state","island","React","createElement","Fragment","className","Button","onClick","setSettingsView","variant","concat","FontAwesomeIcon","icon","faAngleLeft","setIslandView","faXmark","CustomThemedTooltip","id","place"],"mappings":"+lCAc6D,SAACA,OAAEC,EAAKD,EAAAC,MAAEC,EAAaF,EAAAE,cAC5EC,EAAWC,EAAAA,cACTC,EAAMC,qBACNC,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,sBASjE,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,8CACbH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,0EACbH,EAAAA,QAAAC,cAACG,SAAM,CACLC,QAAS,WAAM,OAAAb,EAASO,OAAOO,gBAAgB,OAAO,EACtDC,QAAQ,sBAAqB,kBACZ,gBAAgBC,OAAAjB,EAAwB,aAAA,uBACnCG,EAAE,gBAAkB,IAE1CM,UAACC,cAAAQ,EAAAA,gBAAgB,CAAAC,KAAMC,EAAAA,YAAaR,UAAU,mBAEhDH,EAAA,QAAAC,cAAA,KAAA,CAAIE,UAAU,0CAA0Cb,IAE1DU,UAACC,cAAAG,EAAMA,OACL,CAAAC,QAAS,WAAM,OApBrBb,EAASO,OAAOO,gBAAgB,aAEhCd,EAASO,OAAOa,cAAc,GAAGJ,OAAAZ,GAAgB,QAkBb,EAC9BW,QAAQ,sBAAqB,kBACZ,iBAAiBC,OAAAjB,EAAwB,aAAA,uBACpCG,EAAE,iBAAmB,IAE3CM,UAACC,cAAAQ,EAAAA,gBAAgB,CAAAC,KAAMG,EAAAA,QAASV,UAAU,oBAI9CH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,mEACfH,EAAAA,QAACC,cAAAa,sBAAoB,CAAAC,GAAI,gBAAAP,OAAgBjB,EAAa,aAAayB,MAAM,WACzEhB,EAAAA,QAAAC,cAACa,EAAAA,oBAAmB,CAACC,GAAI,wBAAiBxB,EAAa,aAAayB,MAAM,WAGhF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),i=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js");var s=require("./SettingsHeader.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var a=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var n=require("../../node_modules/react-redux/es/hooks/useSelector.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(e);exports.default=function(){var o=a.useTranslation().t,u=n.useSelector(function(e){return e.darkTheme}).theme,d=e.useState(null),p=d[0],c=d[1];return l.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},l.default.createElement(s.SettingsHeader,{title:o("Settings.Theme"),tooltipPrefix:"theme"}),l.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1"},[{id:"dark",icon:r.faMoon,label:"Settings.Dark"},{id:"light",icon:r.faSun,label:"Settings.Light"}].map(function(e){var s=e.id,a=e.icon,n=e.label;return l.default.createElement("div",{key:s,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md",onClick:function(){return e=s,void i.eventDispatch("phone-island-theme-change",{selectedTheme:e});var e},onMouseEnter:function(){return c(s)},onMouseLeave:function(){return c(null)},"data-stop-propagation":!0},l.default.createElement(t.FontAwesomeIcon,{icon:a,className:"pi-mr-2 pi-w-5 pi-h-5"}),l.default.createElement("div",{className:"pi-ml-1 pi-flex-grow"},o(n)),u===s&&l.default.createElement(t.FontAwesomeIcon,{size:"lg",icon:r.faCheck,className:"".concat(p===s?"pi-text-gray-700 dark:pi-text-gray-200":"pi-text-emerald-700 dark:pi-text-emerald-500"," pi-w-5 pi-h-5")}))})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),i=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js");var s=require("./SettingsHeader.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var a=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var n=require("../../node_modules/react-redux/es/hooks/useSelector.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(e);exports.default=function(){var o=a.useTranslation().t,u=n.useSelector(function(e){return e.darkTheme}).theme,d=e.useState(null),p=d[0],c=d[1];return l.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},l.default.createElement(s.SettingsHeader,{title:o("Settings.Theme"),tooltipPrefix:"theme"}),l.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1"},[{id:"dark",icon:r.faMoon,label:"Settings.Dark"},{id:"light",icon:r.faSun,label:"Settings.Light"}].map(function(e){var s=e.id,a=e.icon,n=e.label;return l.default.createElement("div",{key:s,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md",onClick:function(){return e=s,void i.eventDispatch("phone-island-theme-change",{selectedTheme:e});var e},onMouseEnter:function(){return c(s)},onMouseLeave:function(){return c(null)},"data-stop-propagation":!0},l.default.createElement(t.FontAwesomeIcon,{icon:a,className:"pi-mr-2 pi-w-5 pi-h-5"}),l.default.createElement("div",{className:"pi-ml-1 pi-flex-grow"},o(n)),u===s&&l.default.createElement(t.FontAwesomeIcon,{size:"lg",icon:r.faCheck,className:"".concat(p===s?"pi-text-gray-700 dark:pi-text-gray-200":"pi-text-emerald-700 dark:pi-text-emerald-500"," pi-w-5 pi-h-5")}))})))};
2
2
  //# sourceMappingURL=ThemeView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeView.js","sources":["../../../src/components/SettingsView/ThemeView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faMoon, faSun } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\n\nconst ThemeView = () => {\n const handleSelectTheme = (clickedTheme: string) => {\n eventDispatch('phone-island-theme-change', { selectedTheme: clickedTheme })\n }\n const { t } = useTranslation()\n\n const { theme } = useSelector((state: RootState) => state.darkTheme)\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Theme')} tooltipPrefix='theme' />\n {/* Theme List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1'>\n {[\n { id: 'dark', icon: faMoon, label: 'Settings.Dark' },\n { id: 'light', icon: faSun, label: 'Settings.Light' },\n ].map(({ id, icon, label }) => (\n <div\n key={id}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n onClick={() => handleSelectTheme(id)}\n onMouseEnter={() => setHoveredDevice(id)}\n onMouseLeave={() => setHoveredDevice(null)}\n data-stop-propagation={true}\n >\n <FontAwesomeIcon icon={icon} className='pi-mr-2 pi-w-5 pi-h-5' />\n <div className='pi-ml-1 pi-flex-grow'>{t(label)}</div>\n {theme === id && (\n <FontAwesomeIcon\n size='lg'\n icon={faCheck}\n className={`${\n hoveredDevice === id\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ThemeView\n"],"names":["t","useTranslation","theme","useSelector","state","darkTheme","_a","useState","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","id","icon","faMoon","label","faSun","map","key","onClick","clickedTheme","eventDispatch","selectedTheme","onMouseEnter","onMouseLeave","FontAwesomeIcon","size","faCheck","concat"],"mappings":"koCAYkB,WAChB,IAGQA,EAAMC,qBAENC,EAAUC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,kBACpDC,EAAoCC,EAAAA,SAAwB,MAA3DC,EAAaF,EAAA,GAAEG,EAAgBH,EAAA,GAEtC,OACEI,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOd,EAAE,kBAAmBe,cAAc,UAE1DL,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,4CACZ,CACC,CAAEI,GAAI,OAAQC,KAAMC,EAAAA,OAAQC,MAAO,iBACnC,CAAEH,GAAI,QAASC,KAAMG,EAAAA,MAAOD,MAAO,mBACnCE,IAAI,SAACf,GAAE,IAAAU,OAAIC,EAAIX,EAAAW,KAAEE,EAAKb,EAAAa,MAAO,OAC7BT,EACE,QAAAC,cAAA,MAAA,CAAAW,IAAKN,EACLJ,UAAU,4OACVW,QAAS,WAAM,OArBEC,EAqBgBR,OApBzCS,EAAAA,cAAc,4BAA6B,CAAEC,cAAeF,IADpC,IAACA,GAsBjBG,aAAc,WAAM,OAAAlB,EAAiBO,EAAG,EACxCY,aAAc,WAAM,OAAAnB,EAAiB,KAAjB,2BACG,GAEvBC,EAAC,QAAAC,cAAAkB,mBAAgBZ,KAAMA,EAAML,UAAU,0BACvCF,UAAKC,cAAA,MAAA,CAAAC,UAAU,wBAAwBZ,EAAEmB,IACxCjB,IAAUc,GACTN,EAAAA,sBAACmB,EAAAA,gBAAe,CACdC,KAAK,KACLb,KAAMc,EAAOA,QACbnB,UAAW,GACToB,OAAAxB,IAAkBQ,EACd,yCACA,+CAA8C,oBAK3D,IAIT"}
1
+ {"version":3,"file":"ThemeView.js","sources":["../../../src/components/SettingsView/ThemeView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faMoon, faSun } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { useTranslation } from 'react-i18next'\n\nconst ThemeView = () => {\n const handleSelectTheme = (clickedTheme: string) => {\n eventDispatch('phone-island-theme-change', { selectedTheme: clickedTheme })\n }\n const { t } = useTranslation()\n\n const { theme } = useSelector((state: RootState) => state.darkTheme)\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Theme')} tooltipPrefix='theme' />\n {/* Theme List */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1'>\n {[\n { id: 'dark', icon: faMoon, label: 'Settings.Dark' },\n { id: 'light', icon: faSun, label: 'Settings.Light' },\n ].map(({ id, icon, label }) => (\n <div\n key={id}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n onClick={() => handleSelectTheme(id)}\n onMouseEnter={() => setHoveredDevice(id)}\n onMouseLeave={() => setHoveredDevice(null)}\n data-stop-propagation={true}\n >\n <FontAwesomeIcon icon={icon} className='pi-mr-2 pi-w-5 pi-h-5' />\n <div className='pi-ml-1 pi-flex-grow'>{t(label)}</div>\n {theme === id && (\n <FontAwesomeIcon\n size='lg'\n icon={faCheck}\n className={`${\n hoveredDevice === id\n ? 'pi-text-gray-700 dark:pi-text-gray-200'\n : 'pi-text-emerald-700 dark:pi-text-emerald-500'\n } pi-w-5 pi-h-5`}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ThemeView\n"],"names":["t","useTranslation","theme","useSelector","state","darkTheme","_a","useState","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","tooltipPrefix","id","icon","faMoon","label","faSun","map","key","onClick","clickedTheme","eventDispatch","selectedTheme","onMouseEnter","onMouseLeave","FontAwesomeIcon","size","faCheck","concat"],"mappings":"ooCAYkB,WAChB,IAGQA,EAAMC,qBAENC,EAAUC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,kBACpDC,EAAoCC,EAAAA,SAAwB,MAA3DC,EAAaF,EAAA,GAAEG,EAAgBH,EAAA,GAEtC,OACEI,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOd,EAAE,kBAAmBe,cAAc,UAE1DL,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,4CACZ,CACC,CAAEI,GAAI,OAAQC,KAAMC,EAAAA,OAAQC,MAAO,iBACnC,CAAEH,GAAI,QAASC,KAAMG,EAAAA,MAAOD,MAAO,mBACnCE,IAAI,SAACf,GAAE,IAAAU,OAAIC,EAAIX,EAAAW,KAAEE,EAAKb,EAAAa,MAAO,OAC7BT,EACE,QAAAC,cAAA,MAAA,CAAAW,IAAKN,EACLJ,UAAU,4OACVW,QAAS,WAAM,OArBEC,EAqBgBR,OApBzCS,EAAAA,cAAc,4BAA6B,CAAEC,cAAeF,IADpC,IAACA,GAsBjBG,aAAc,WAAM,OAAAlB,EAAiBO,EAAG,EACxCY,aAAc,WAAM,OAAAnB,EAAiB,KAAjB,2BACG,GAEvBC,EAAC,QAAAC,cAAAkB,mBAAgBZ,KAAMA,EAAML,UAAU,0BACvCF,UAAKC,cAAA,MAAA,CAAAC,UAAU,wBAAwBZ,EAAEmB,IACxCjB,IAAUc,GACTN,EAAAA,sBAACmB,EAAAA,gBAAe,CACdC,KAAK,KACLb,KAAMc,EAAOA,QACbnB,UAAW,GACToB,OAAAxB,IAAkBQ,EACd,yCACA,+CAA8C,oBAK3D,IAIT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../store/index.js"),i=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),n=require("../../node_modules/i18next/dist/esm/i18next.js"),a=require("../../utils/customHooks/useEventListener.js"),s=require("../../utils/genericFunctions/eventDispatch.js"),l=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js");var o=require("./SettingsHeader.js"),c=require("../../lib/devices/devices.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=u(e);exports.default=function(){var u=d.useSelector(function(e){return e.webrtc}).sipcall,v=e.useState(c.getCurrentVideoInputDeviceId()||null),m=v[0],f=v[1],g=t.store.select.mediaDevices.videoInputDevices(t.store.getState()),b=function(e){f(e),u.webrtcStuff.myStream?null==u||u.replaceTracks({tracks:[{type:"video",mid:"1",capture:{deviceId:{exact:e}}}],success:function(){console.info("Video input device switch success"),l.setJSONItem("phone-island-video-input-device",{deviceId:e}),s.eventDispatch("phone-island-call-video-input-switched",{})},error:function(e){console.error("Video input device switch error:",e)}}):(l.setJSONItem("phone-island-video-input-device",{deviceId:e}),s.eventDispatch("phone-island-call-video-input-switched",{}))};a.useEventListener("phone-island-call-video-input-switch",function(e){b(e.deviceId)});var x=e.useState(null),y=x[0],h=x[1];return p.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},p.default.createElement(o.SettingsHeader,{title:n.t("Settings.Cameras"),tooltipPrefix:"video"}),p.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25"},g.map(function(e,t){return p.default.createElement("div",{key:t,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer",onClick:function(){return b(null==e?void 0:e.deviceId)},onMouseEnter:function(){return h(null==e?void 0:e.deviceId)},onMouseLeave:function(){return h(null)}},p.default.createElement("div",{className:"pi-flex pi-items-center"},p.default.createElement(i.FontAwesomeIcon,{icon:r.faVideo,className:" pi-mr-2"}),p.default.createElement("span",null,(null==e?void 0:e.label)||"Input device ".concat(t+1))),p.default.createElement("div",{className:"pi-flex pi-items-center"},m===(null==e?void 0:e.deviceId)&&p.default.createElement(i.FontAwesomeIcon,{icon:r.faCheck,className:"".concat(y===(null==e?void 0:e.deviceId)?"pi-text-gray-500 dark:pi-text-gray-200":"pi-text-green-600 dark:pi-text-green-400")})))})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../store/index.js"),i=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),n=require("../../node_modules/i18next/dist/esm/i18next.js"),a=require("../../utils/customHooks/useEventListener.js"),s=require("../../utils/genericFunctions/eventDispatch.js"),l=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js");var o=require("./SettingsHeader.js"),c=require("../../lib/devices/devices.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=u(e);exports.default=function(){var u=d.useSelector(function(e){return e.webrtc}).sipcall,v=e.useState(c.getCurrentVideoInputDeviceId()||null),m=v[0],f=v[1],g=t.store.select.mediaDevices.videoInputDevices(t.store.getState()),b=function(e){f(e),u.webrtcStuff.myStream?null==u||u.replaceTracks({tracks:[{type:"video",mid:"1",capture:{deviceId:{exact:e}}}],success:function(){console.info("Video input device switch success"),l.setJSONItem("phone-island-video-input-device",{deviceId:e}),s.eventDispatch("phone-island-call-video-input-switched",{})},error:function(e){console.error("Video input device switch error:",e)}}):(l.setJSONItem("phone-island-video-input-device",{deviceId:e}),s.eventDispatch("phone-island-call-video-input-switched",{}))};a.useEventListener("phone-island-call-video-input-switch",function(e){b(e.deviceId)});var x=e.useState(null),y=x[0],h=x[1];return p.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},p.default.createElement(o.SettingsHeader,{title:n.t("Settings.Cameras"),tooltipPrefix:"video"}),p.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25"},g.map(function(e,t){return p.default.createElement("div",{key:t,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer",onClick:function(){return b(null==e?void 0:e.deviceId)},onMouseEnter:function(){return h(null==e?void 0:e.deviceId)},onMouseLeave:function(){return h(null)}},p.default.createElement("div",{className:"pi-flex pi-items-center"},p.default.createElement(i.FontAwesomeIcon,{icon:r.faVideo,className:" pi-mr-2"}),p.default.createElement("span",null,(null==e?void 0:e.label)||"Input device ".concat(t+1))),p.default.createElement("div",{className:"pi-flex pi-items-center"},m===(null==e?void 0:e.deviceId)&&p.default.createElement(i.FontAwesomeIcon,{icon:r.faCheck,className:"".concat(y===(null==e?void 0:e.deviceId)?"pi-text-gray-500 dark:pi-text-gray-200":"pi-text-green-600 dark:pi-text-green-400")})))})))};
2
2
  //# sourceMappingURL=VideoInputView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoInputView.js","sources":["../../../src/components/SettingsView/VideoInputView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faVideo } from '@fortawesome/free-solid-svg-icons'\nimport { t } from 'i18next'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { getCurrentVideoInputDeviceId } from '../../lib/devices/devices'\n\nconst VideoInputView = () => {\n const { sipcall }: any = useSelector((state: RootState) => state.webrtc)\n\n const [selectedVideoInput, setSelectedVideoInput] = useState<string | null>(\n getCurrentVideoInputDeviceId() || null,\n )\n const videoInputDevices = store.select.mediaDevices.videoInputDevices(store.getState())\n\n const handleClickVideoInput = (videoInputDevice: string) => {\n setSelectedVideoInput(videoInputDevice)\n\n if (sipcall.webrtcStuff.myStream) {\n sipcall?.replaceTracks({\n tracks: [\n {\n type: 'video',\n mid: '1',\n capture: { deviceId: { exact: videoInputDevice } },\n },\n ],\n success: function () {\n console.info('Video input device switch success')\n setJSONItem('phone-island-video-input-device', { deviceId: videoInputDevice })\n eventDispatch('phone-island-call-video-input-switched', {})\n },\n error: function (err) {\n console.error('Video input device switch error:', err)\n },\n })\n } else {\n setJSONItem('phone-island-video-input-device', { deviceId: videoInputDevice })\n eventDispatch('phone-island-call-video-input-switched', {})\n }\n }\n\n useEventListener('phone-island-call-video-input-switch', (data: DeviceInputOutputTypes) => {\n handleClickVideoInput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Cameras')} tooltipPrefix='video' />\n\n {/* Video input list */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {videoInputDevices.map((videoDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickVideoInput(videoDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(videoDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faVideo} className=' pi-mr-2' />\n <span>{videoDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedVideoInput === videoDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === videoDevice?.deviceId\n ? 'pi-text-gray-500 dark:pi-text-gray-200'\n : 'pi-text-green-600 dark:pi-text-green-400'\n }`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default VideoInputView\n"],"names":["sipcall","useSelector","state","webrtc","_a","useState","getCurrentVideoInputDeviceId","selectedVideoInput","setSelectedVideoInput","videoInputDevices","store","select","mediaDevices","getState","handleClickVideoInput","videoInputDevice","webrtcStuff","myStream","replaceTracks","tracks","type","mid","capture","deviceId","exact","success","console","info","setJSONItem","eventDispatch","error","err","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","t","tooltipPrefix","map","videoDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faVideo","label","faCheck","concat"],"mappings":"k2BAauB,WACb,IAAAA,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,iBAE3DC,EAA8CC,EAAQA,SAC1DC,kCAAkC,MAD7BC,EAAkBH,EAAA,GAAEI,OAGrBC,EAAoBC,EAAKA,MAACC,OAAOC,aAAaH,kBAAkBC,EAAKA,MAACG,YAEtEC,EAAwB,SAACC,GAC7BP,EAAsBO,GAElBf,EAAQgB,YAAYC,SACtBjB,SAAAA,EAASkB,cAAc,CACrBC,OAAQ,CACN,CACEC,KAAM,QACNC,IAAK,IACLC,QAAS,CAAEC,SAAU,CAAEC,MAAOT,MAGlCU,QAAS,WACPC,QAAQC,KAAK,qCACbC,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,EACzD,EACDC,MAAO,SAAUC,GACfL,QAAQI,MAAM,mCAAoCC,EACnD,KAGHH,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,GAE5D,EAEAG,mBAAiB,uCAAwC,SAACC,GACxDnB,EAAsBmB,EAAKV,SAC7B,GAEM,IAAAW,EAAoC7B,EAAAA,SAAwB,MAA3D8B,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOC,EAACA,EAAC,oBAAqBC,cAAc,UAG5DN,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAkBmC,IAAI,SAACC,EAAaC,GAAU,OAC7CT,EAAAA,QACEC,cAAA,MAAA,CAAAS,IAAKD,EACLP,UAAU,8PACVS,QAAS,WAAM,OAAAlC,EAAsB+B,aAAA,EAAAA,EAAatB,SAAS,EAC3D0B,aAAc,WAAM,OAAAb,EAAiBS,aAAW,EAAXA,EAAatB,SAA9B,EACpB2B,aAAc,WAAM,OAAAd,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAa,mBAAgBC,KAAMC,UAASd,UAAU,aAC1CF,EAAA,QAAAC,cAAA,OAAA,MAAOO,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDT,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZhC,KAAuBsC,eAAAA,EAAatB,WACnCc,EAAAA,QAAAC,cAACa,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbhB,UAAW,GACTiB,OAAArB,KAAkBU,aAAW,EAAXA,EAAatB,UAC3B,yCACA,+CAMf,IAIT"}
1
+ {"version":3,"file":"VideoInputView.js","sources":["../../../src/components/SettingsView/VideoInputView.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState, store } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCheck, faVideo } from '@fortawesome/free-solid-svg-icons'\nimport { t } from 'i18next'\nimport { eventDispatch, setJSONItem, useEventListener } from '../../utils'\nimport { SettingsHeader } from './SettingsHeader'\nimport { getCurrentVideoInputDeviceId } from '../../lib/devices/devices'\n\nconst VideoInputView = () => {\n const { sipcall }: any = useSelector((state: RootState) => state.webrtc)\n\n const [selectedVideoInput, setSelectedVideoInput] = useState<string | null>(\n getCurrentVideoInputDeviceId() || null,\n )\n const videoInputDevices = store.select.mediaDevices.videoInputDevices(store.getState())\n\n const handleClickVideoInput = (videoInputDevice: string) => {\n setSelectedVideoInput(videoInputDevice)\n\n if (sipcall.webrtcStuff.myStream) {\n sipcall?.replaceTracks({\n tracks: [\n {\n type: 'video',\n mid: '1',\n capture: { deviceId: { exact: videoInputDevice } },\n },\n ],\n success: function () {\n console.info('Video input device switch success')\n setJSONItem('phone-island-video-input-device', { deviceId: videoInputDevice })\n eventDispatch('phone-island-call-video-input-switched', {})\n },\n error: function (err) {\n console.error('Video input device switch error:', err)\n },\n })\n } else {\n setJSONItem('phone-island-video-input-device', { deviceId: videoInputDevice })\n eventDispatch('phone-island-call-video-input-switched', {})\n }\n }\n\n useEventListener('phone-island-call-video-input-switch', (data: DeviceInputOutputTypes) => {\n handleClickVideoInput(data.deviceId)\n })\n\n const [hoveredDevice, setHoveredDevice] = useState<string | null>(null)\n\n return (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Title */}\n <SettingsHeader title={t('Settings.Cameras')} tooltipPrefix='video' />\n\n {/* Video input list */}\n <div className='pi-flex pi-flex-col pi-mt-2 pi-space-y-1 pi-max-h-48 pi-overflow-y-auto pi-scrollbar-thin pi-scrollbar-thumb-gray-400 pi-dark:scrollbar-thumb-gray-400 pi-scrollbar-thumb-rounded-full pi-scrollbar-thumb-opacity-50 dark:pi-scrollbar-track-gray-900 pi-scrollbar-track-gray-200 pi-dark:scrollbar-track-gray-900 pi-scrollbar-track-rounded-full pi-scrollbar-track-opacity-25'>\n {videoInputDevices.map((videoDevice, index) => (\n <div\n key={index}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md pi-cursor-pointer'\n onClick={() => handleClickVideoInput(videoDevice?.deviceId)}\n onMouseEnter={() => setHoveredDevice(videoDevice?.deviceId)}\n onMouseLeave={() => setHoveredDevice(null)}\n >\n <div className='pi-flex pi-items-center'>\n <FontAwesomeIcon icon={faVideo} className=' pi-mr-2' />\n <span>{videoDevice?.label || `Input device ${index + 1}`}</span>\n </div>\n <div className='pi-flex pi-items-center'>\n {selectedVideoInput === videoDevice?.deviceId && (\n <FontAwesomeIcon\n icon={faCheck}\n className={`${\n hoveredDevice === videoDevice?.deviceId\n ? 'pi-text-gray-500 dark:pi-text-gray-200'\n : 'pi-text-green-600 dark:pi-text-green-400'\n }`}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport default VideoInputView\n"],"names":["sipcall","useSelector","state","webrtc","_a","useState","getCurrentVideoInputDeviceId","selectedVideoInput","setSelectedVideoInput","videoInputDevices","store","select","mediaDevices","getState","handleClickVideoInput","videoInputDevice","webrtcStuff","myStream","replaceTracks","tracks","type","mid","capture","deviceId","exact","success","console","info","setJSONItem","eventDispatch","error","err","useEventListener","data","_b","hoveredDevice","setHoveredDevice","React","createElement","className","SettingsHeader","title","t","tooltipPrefix","map","videoDevice","index","key","onClick","onMouseEnter","onMouseLeave","FontAwesomeIcon","icon","faVideo","label","faCheck","concat"],"mappings":"o2BAauB,WACb,IAAAA,EAAiBC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,iBAE3DC,EAA8CC,EAAQA,SAC1DC,kCAAkC,MAD7BC,EAAkBH,EAAA,GAAEI,OAGrBC,EAAoBC,EAAKA,MAACC,OAAOC,aAAaH,kBAAkBC,EAAKA,MAACG,YAEtEC,EAAwB,SAACC,GAC7BP,EAAsBO,GAElBf,EAAQgB,YAAYC,SACtBjB,SAAAA,EAASkB,cAAc,CACrBC,OAAQ,CACN,CACEC,KAAM,QACNC,IAAK,IACLC,QAAS,CAAEC,SAAU,CAAEC,MAAOT,MAGlCU,QAAS,WACPC,QAAQC,KAAK,qCACbC,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,EACzD,EACDC,MAAO,SAAUC,GACfL,QAAQI,MAAM,mCAAoCC,EACnD,KAGHH,EAAAA,YAAY,kCAAmC,CAAEL,SAAUR,IAC3Dc,gBAAc,yCAA0C,CAAA,GAE5D,EAEAG,mBAAiB,uCAAwC,SAACC,GACxDnB,EAAsBmB,EAAKV,SAC7B,GAEM,IAAAW,EAAoC7B,EAAAA,SAAwB,MAA3D8B,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,OACEG,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,iCAEbF,UAAAC,cAACE,EAAcA,eAAA,CAACC,MAAOC,EAACA,EAAC,oBAAqBC,cAAc,UAG5DN,EAAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,oXACZ9B,EAAkBmC,IAAI,SAACC,EAAaC,GAAU,OAC7CT,EAAAA,QACEC,cAAA,MAAA,CAAAS,IAAKD,EACLP,UAAU,8PACVS,QAAS,WAAM,OAAAlC,EAAsB+B,aAAA,EAAAA,EAAatB,SAAS,EAC3D0B,aAAc,WAAM,OAAAb,EAAiBS,aAAW,EAAXA,EAAatB,SAA9B,EACpB2B,aAAc,WAAM,OAAAd,EAAiB,QAErCC,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAC,QAAAC,cAAAa,mBAAgBC,KAAMC,UAASd,UAAU,aAC1CF,EAAA,QAAAC,cAAA,OAAA,MAAOO,eAAAA,EAAaS,QAAS,uBAAgBR,EAAQ,KAEvDT,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,2BACZhC,KAAuBsC,eAAAA,EAAatB,WACnCc,EAAAA,QAAAC,cAACa,EAAAA,gBAAe,CACdC,KAAMG,EAAOA,QACbhB,UAAW,GACTiB,OAAArB,KAAkBU,aAAW,EAAXA,EAAatB,UAC3B,yCACA,+CAMf,IAIT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),r=require("../Button.js"),n=require("./MicrophoneView.js"),a=require("./AudioView.js"),l=require("./ThemeView.js"),s=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var o=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("./VideoInputView.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=p(e);exports.MicrophoneView=n.default,exports.AudioView=a.default,exports.ThemeView=l.default,exports.VideoInputView=u.default,exports.SettingsView=function(){var e=d.useSelector(function(e){return e.island}),p=e.settingsView,f=e.previousView,g=o.useTranslation().t,h=c.useDispatch(),w=function(e){var r=e.icon,n=e.label,a=e.onClick;return m.default.createElement("button",{onClick:a,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-3"},m.default.createElement(t.FontAwesomeIcon,{icon:r,className:"pi-w-5 pi-h-5"}),m.default.createElement("span",null,n)),m.default.createElement(t.FontAwesomeIcon,{icon:i.faAngleRight,className:"pi-w-5 pi-h-5"}))},x=m.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},m.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},g("Settings.Settings")),m.default.createElement(r.Button,{onClick:function(){return h.island.setIslandView("".concat(f||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":g("Common.Close")||""},m.default.createElement(t.FontAwesomeIcon,{icon:i.faXmark,className:"pi-w-5 pi-h-5"}))),m.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),m.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2"},m.default.createElement(w,{icon:i.faMicrophone,label:g("Settings.Microphones"),onClick:function(){return h.island.setSettingsView("microphone")}}),m.default.createElement(w,{icon:i.faVolumeHigh,label:g("Settings.Speakers"),onClick:function(){return h.island.setSettingsView("audioInput")}}),m.default.createElement(w,{icon:i.faVideo,label:g("Settings.Cameras"),onClick:function(){return h.island.setSettingsView("videoInput")}}),m.default.createElement(w,{icon:i.faPalette,label:g("Settings.Theme"),onClick:function(){return h.island.setSettingsView("theme")}})));return m.default.createElement(m.default.Fragment,null,function(){switch(p){case"main":default:return x;case"microphone":return m.default.createElement(n.default,null);case"audioInput":return m.default.createElement(a.default,null);case"videoInput":return m.default.createElement(u.default,null);case"theme":return m.default.createElement(l.default,null)}}(),m.default.createElement(s.CustomThemedTooltip,{id:"tooltip-close-settings",place:"bottom"}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),i=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),r=require("../Button.js"),n=require("./MicrophoneView.js"),a=require("./AudioView.js"),l=require("./ThemeView.js"),s=require("../CustomThemedTooltip.js");require("../../node_modules/@babel/runtime/helpers/defineProperty.js"),require("../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js"),require("../../node_modules/@babel/runtime/helpers/typeof.js"),require("../../node_modules/html-parse-stringify/dist/html-parse-stringify.js"),require("../../node_modules/react-i18next/dist/es/context.js");var o=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("./VideoInputView.js"),d=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=p(e);exports.MicrophoneView=n.default,exports.AudioView=a.default,exports.ThemeView=l.default,exports.VideoInputView=u.default,exports.SettingsView=function(){var e=d.useSelector(function(e){return e.island}),p=e.settingsView,f=e.previousView,g=o.useTranslation().t,h=c.useDispatch(),w=function(e){var r=e.icon,n=e.label,a=e.onClick;return m.default.createElement("button",{onClick:a,className:"pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-gap-3"},m.default.createElement(t.FontAwesomeIcon,{icon:r,className:"pi-w-5 pi-h-5"}),m.default.createElement("span",null,n)),m.default.createElement(t.FontAwesomeIcon,{icon:i.faAngleRight,className:"pi-w-5 pi-h-5"}))},x=m.default.createElement("div",{className:"pi-flex pi-flex-col pi-w-full"},m.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},m.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},g("Settings.Settings")),m.default.createElement(r.Button,{onClick:function(){return h.island.setIslandView("".concat(f||"call"))},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":g("Common.Close")||""},m.default.createElement(t.FontAwesomeIcon,{icon:i.faXmark,className:"pi-w-5 pi-h-5"}))),m.default.createElement("div",{className:"pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1"}),m.default.createElement("div",{className:"pi-flex pi-flex-col pi-mt-2"},m.default.createElement(w,{icon:i.faMicrophone,label:g("Settings.Microphones"),onClick:function(){return h.island.setSettingsView("microphone")}}),m.default.createElement(w,{icon:i.faVolumeHigh,label:g("Settings.Speakers"),onClick:function(){return h.island.setSettingsView("audioInput")}}),m.default.createElement(w,{icon:i.faVideo,label:g("Settings.Cameras"),onClick:function(){return h.island.setSettingsView("videoInput")}}),m.default.createElement(w,{icon:i.faPalette,label:g("Settings.Theme"),onClick:function(){return h.island.setSettingsView("theme")}})));return m.default.createElement(m.default.Fragment,null,function(){switch(p){case"main":default:return x;case"microphone":return m.default.createElement(n.default,null);case"audioInput":return m.default.createElement(a.default,null);case"videoInput":return m.default.createElement(u.default,null);case"theme":return m.default.createElement(l.default,null)}}(),m.default.createElement(s.CustomThemedTooltip,{id:"tooltip-close-settings",place:"bottom"}))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/SettingsView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faAngleRight,\n faMicrophone,\n faPalette,\n faVideo,\n faVolumeHigh,\n faXmark,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport MicrophoneView from './MicrophoneView'\nimport AudioView from './AudioView'\nimport ThemeView from './ThemeView'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\nimport VideoInputView from './VideoInputView'\n\nexport const SettingsView: FC<SettingsViewProps> = () => {\n const { settingsView, previousView } = useSelector((state: RootState) => state.island)\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const SettingsMenuItem = ({ icon, label, onClick }) => (\n <button\n onClick={onClick}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n >\n <div className='pi-flex pi-items-center pi-gap-3'>\n <FontAwesomeIcon icon={icon} className='pi-w-5 pi-h-5' />\n <span>{label}</span>\n </div>\n <FontAwesomeIcon icon={faAngleRight} className='pi-w-5 pi-h-5' />\n </button>\n )\n\n // main settings view\n const MainSettings = (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Header */}\n <div className='pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50'>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{t('Settings.Settings')}</h1>\n <Button\n onClick={() => dispatch.island.setIslandView(`${previousView || 'call'}`)}\n variant='transparentSettings'\n data-tooltip-id='tooltip-close-settings'\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n\n {/* Menu Items */}\n <div className='pi-flex pi-flex-col pi-mt-2'>\n <SettingsMenuItem\n icon={faMicrophone}\n label={t('Settings.Microphones')}\n onClick={() => dispatch.island.setSettingsView('microphone')}\n />\n <SettingsMenuItem\n icon={faVolumeHigh}\n label={t('Settings.Speakers')}\n onClick={() => dispatch.island.setSettingsView('audioInput')}\n />\n <SettingsMenuItem\n icon={faVideo}\n label={t('Settings.Cameras')}\n onClick={() => dispatch.island.setSettingsView('videoInput')}\n />\n <SettingsMenuItem\n icon={faPalette}\n label={t('Settings.Theme')}\n onClick={() => dispatch.island.setSettingsView('theme')}\n />\n </div>\n </div>\n )\n\n return (\n <>\n {(() => {\n switch (settingsView) {\n case 'main':\n return MainSettings\n case 'microphone':\n return <MicrophoneView />\n case 'audioInput':\n return <AudioView />\n case 'videoInput':\n return <VideoInputView />\n case 'theme':\n return <ThemeView />\n default:\n return MainSettings\n }\n })()}\n <CustomThemedTooltip id='tooltip-close-settings' place='bottom' />\n </>\n )\n}\n\nexport interface SettingsViewProps {}\n\nexport { default as AudioView } from './AudioView'\nexport { default as MicrophoneView } from './MicrophoneView'\nexport { default as ThemeView } from './ThemeView'\nexport { default as VideoInputView } from './VideoInputView'\n"],"names":["_a","useSelector","state","island","settingsView","previousView","t","useTranslation","dispatch","useDispatch","SettingsMenuItem","icon","label","onClick","React","className","createElement","FontAwesomeIcon","faAngleRight","MainSettings","Button","setIslandView","concat","variant","faXmark","faMicrophone","setSettingsView","faVolumeHigh","faVideo","faPalette","Fragment","MicrophoneView","AudioView","VideoInputView","ThemeView","CustomThemedTooltip","id","place"],"mappings":"+0CAuBmD,WAC3C,IAAAA,EAAiCC,EAAAA,YAAY,SAACC,GAAqB,OAAAA,EAAMC,MAAM,GAA7EC,iBAAcC,iBACdC,EAAMC,qBACRC,EAAWC,EAAAA,cAEXC,EAAmB,SAACV,GAAE,IAAAW,SAAMC,EAAKZ,EAAAY,MAAEC,EAAOb,EAAAa,QAAO,OACrDC,EAAAA,gCACED,QAASA,EACTE,UAAU,6OAEVD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oCACbD,EAAC,QAAAE,cAAAC,mBAAgBN,KAAMA,EAAMI,UAAU,kBACvCD,EAAAA,QAAOE,cAAA,OAAA,KAAAJ,IAETE,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMO,EAAAA,aAAcH,UAAU,kBATI,EAcjDI,EACJL,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,iCAEbD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oFACbD,UAAIE,cAAA,KAAA,CAAAD,UAAU,0CAA0CT,EAAE,sBAC1DQ,EAAAA,QAAAE,cAACI,SAAM,CACLP,QAAS,WAAM,OAAAL,EAASL,OAAOkB,cAAc,GAAAC,OAAGjB,GAAgB,QAAjD,EACfkB,QAAQ,sBAAqB,kBACb,yBAAwB,uBAClBjB,EAAE,iBAAmB,IAE3CQ,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMa,EAAAA,QAAST,UAAU,oBAK9CD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,mEAGfD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,+BACbD,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMc,eACNb,MAAON,EAAE,wBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMgB,eACNf,MAAON,EAAE,qBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMiB,UACNhB,MAAON,EAAE,oBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,UAAAE,cAACN,EAAgB,CACfC,KAAMkB,EAAAA,UACNjB,MAAON,EAAE,kBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,QAAQ,MAM/D,OACEZ,UAAAE,cAAAF,EAAA,QAAAgB,SAAA,KACG,WACC,OAAQ1B,GACN,IAAK,OAUL,QACE,OAAOe,EATT,IAAK,aACH,OAAOL,UAAAE,cAACe,EAAc,QAAA,MACxB,IAAK,aACH,OAAOjB,UAAAE,cAACgB,EAAS,QAAA,MACnB,IAAK,aACH,OAAOlB,UAAAE,cAACiB,EAAc,QAAA,MACxB,IAAK,QACH,OAAOnB,UAAAE,cAACkB,EAAS,QAAA,MAItB,CAfA,GAgBDpB,UAAAE,cAACmB,EAAAA,oBAAmB,CAACC,GAAG,yBAAyBC,MAAM,WAG7D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/SettingsView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faAngleRight,\n faMicrophone,\n faPalette,\n faVideo,\n faVolumeHigh,\n faXmark,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport MicrophoneView from './MicrophoneView'\nimport AudioView from './AudioView'\nimport ThemeView from './ThemeView'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useTranslation } from 'react-i18next'\nimport VideoInputView from './VideoInputView'\n\nexport const SettingsView: FC<SettingsViewProps> = () => {\n const { settingsView, previousView } = useSelector((state: RootState) => state.island)\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const SettingsMenuItem = ({ icon, label, onClick }) => (\n <button\n onClick={onClick}\n className='pi-flex pi-items-center pi-justify-between pi-px-4 pi-py-3 pi-text-base pi-font-normal pi-leading-6 dark:pi-text-gray-200 pi-text-gray-700 hover:pi-bg-gray-200 dark:hover:pi-bg-gray-700 dark:pi-bg-gray-950 pi-bg-gray-50 pi-rounded-md'\n >\n <div className='pi-flex pi-items-center pi-gap-3'>\n <FontAwesomeIcon icon={icon} className='pi-w-5 pi-h-5' />\n <span>{label}</span>\n </div>\n <FontAwesomeIcon icon={faAngleRight} className='pi-w-5 pi-h-5' />\n </button>\n )\n\n // main settings view\n const MainSettings = (\n <div className='pi-flex pi-flex-col pi-w-full'>\n {/* Header */}\n <div className='pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50'>\n <h1 className='pi-text-lg pi-font-medium pi-leading-7'>{t('Settings.Settings')}</h1>\n <Button\n onClick={() => dispatch.island.setIslandView(`${previousView || 'call'}`)}\n variant='transparentSettings'\n data-tooltip-id='tooltip-close-settings'\n data-tooltip-content={t('Common.Close') || ''}\n >\n <FontAwesomeIcon icon={faXmark} className='pi-w-5 pi-h-5' />\n </Button>\n </div>\n\n {/* Divider */}\n <div className='pi-border-t pi-border-gray-300 dark:pi-border-gray-600 pi-mt-1' />\n\n {/* Menu Items */}\n <div className='pi-flex pi-flex-col pi-mt-2'>\n <SettingsMenuItem\n icon={faMicrophone}\n label={t('Settings.Microphones')}\n onClick={() => dispatch.island.setSettingsView('microphone')}\n />\n <SettingsMenuItem\n icon={faVolumeHigh}\n label={t('Settings.Speakers')}\n onClick={() => dispatch.island.setSettingsView('audioInput')}\n />\n <SettingsMenuItem\n icon={faVideo}\n label={t('Settings.Cameras')}\n onClick={() => dispatch.island.setSettingsView('videoInput')}\n />\n <SettingsMenuItem\n icon={faPalette}\n label={t('Settings.Theme')}\n onClick={() => dispatch.island.setSettingsView('theme')}\n />\n </div>\n </div>\n )\n\n return (\n <>\n {(() => {\n switch (settingsView) {\n case 'main':\n return MainSettings\n case 'microphone':\n return <MicrophoneView />\n case 'audioInput':\n return <AudioView />\n case 'videoInput':\n return <VideoInputView />\n case 'theme':\n return <ThemeView />\n default:\n return MainSettings\n }\n })()}\n <CustomThemedTooltip id='tooltip-close-settings' place='bottom' />\n </>\n )\n}\n\nexport interface SettingsViewProps {}\n\nexport { default as AudioView } from './AudioView'\nexport { default as MicrophoneView } from './MicrophoneView'\nexport { default as ThemeView } from './ThemeView'\nexport { default as VideoInputView } from './VideoInputView'\n"],"names":["_a","useSelector","state","island","settingsView","previousView","t","useTranslation","dispatch","useDispatch","SettingsMenuItem","icon","label","onClick","React","className","createElement","FontAwesomeIcon","faAngleRight","MainSettings","Button","setIslandView","concat","variant","faXmark","faMicrophone","setSettingsView","faVolumeHigh","faVideo","faPalette","Fragment","MicrophoneView","AudioView","VideoInputView","ThemeView","CustomThemedTooltip","id","place"],"mappings":"i1CAuBmD,WAC3C,IAAAA,EAAiCC,EAAAA,YAAY,SAACC,GAAqB,OAAAA,EAAMC,MAAM,GAA7EC,iBAAcC,iBACdC,EAAMC,qBACRC,EAAWC,EAAAA,cAEXC,EAAmB,SAACV,GAAE,IAAAW,SAAMC,EAAKZ,EAAAY,MAAEC,EAAOb,EAAAa,QAAO,OACrDC,EAAAA,gCACED,QAASA,EACTE,UAAU,6OAEVD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oCACbD,EAAC,QAAAE,cAAAC,mBAAgBN,KAAMA,EAAMI,UAAU,kBACvCD,EAAAA,QAAOE,cAAA,OAAA,KAAAJ,IAETE,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMO,EAAAA,aAAcH,UAAU,kBATI,EAcjDI,EACJL,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,iCAEbD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,oFACbD,UAAIE,cAAA,KAAA,CAAAD,UAAU,0CAA0CT,EAAE,sBAC1DQ,EAAAA,QAAAE,cAACI,SAAM,CACLP,QAAS,WAAM,OAAAL,EAASL,OAAOkB,cAAc,GAAAC,OAAGjB,GAAgB,QAAjD,EACfkB,QAAQ,sBAAqB,kBACb,yBAAwB,uBAClBjB,EAAE,iBAAmB,IAE3CQ,UAACE,cAAAC,EAAAA,gBAAgB,CAAAN,KAAMa,EAAAA,QAAST,UAAU,oBAK9CD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,mEAGfD,EAAAA,QAAKE,cAAA,MAAA,CAAAD,UAAU,+BACbD,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMc,eACNb,MAAON,EAAE,wBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMgB,eACNf,MAAON,EAAE,qBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,EAAC,QAAAE,cAAAN,EACC,CAAAC,KAAMiB,UACNhB,MAAON,EAAE,oBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,aAAhC,IAEjBZ,UAAAE,cAACN,EAAgB,CACfC,KAAMkB,EAAAA,UACNjB,MAAON,EAAE,kBACTO,QAAS,WAAM,OAAAL,EAASL,OAAOuB,gBAAgB,QAAQ,MAM/D,OACEZ,UAAAE,cAAAF,EAAA,QAAAgB,SAAA,KACG,WACC,OAAQ1B,GACN,IAAK,OAUL,QACE,OAAOe,EATT,IAAK,aACH,OAAOL,UAAAE,cAACe,EAAc,QAAA,MACxB,IAAK,aACH,OAAOjB,UAAAE,cAACgB,EAAS,QAAA,MACnB,IAAK,aACH,OAAOlB,UAAAE,cAACiB,EAAc,QAAA,MACxB,IAAK,QACH,OAAOnB,UAAAE,cAACkB,EAAS,QAAA,MAItB,CAfA,GAgBDpB,UAAAE,cAACmB,EAAAA,oBAAmB,CAACC,GAAG,yBAAyBC,MAAM,WAG7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SideView.js","sources":["../../../src/components/SideView/SideView.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo, memo, useEffect, useState } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState } from '../../store'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n faArrowUpRightFromSquare,\n faDisplay,\n faStop,\n faVideo,\n faVideoSlash,\n faCommentDots,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faArrowsRepeat, faRecord } from '@nethesis/nethesis-solid-svg-icons'\nimport { useTranslation } from 'react-i18next'\nimport { recordCurrentCall } from '../../lib/phone/call'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useSideViewLogic } from './hooks/useSideViewLogic'\nimport { SideViewButton } from './components/SideViewButton'\n\nconst ANIMATION_CONFIG = {\n initial: { x: -76 },\n animate: { x: 4, transition: { duration: 0.1, ease: 'easeOut' } },\n exit: { x: -76, transition: { duration: 0.1, ease: 'easeIn' } },\n} as const\n\nconst STYLE_CONFIG = {\n borderTopRightRadius: '20px',\n borderBottomRightRadius: '20px',\n width: '80px',\n transformOrigin: 'right',\n} as const\n\ninterface ButtonConfig {\n active?: boolean\n onClick: () => void | Promise<void>\n tooltipId: string\n tooltipContent: string\n icon: any\n disabled?: boolean\n}\n\ninterface ButtonConfigWithKey extends ButtonConfig {\n key: string\n}\n\nconst SideView: FC<SideViewTypes> = memo(({ isVisible, uaType }) => {\n const { isOpen } = useSelector((state: RootState) => state.island)\n const { isRecording } = useSelector((state: RootState) => state.currentCall)\n const { t } = useTranslation()\n\n const {\n videoInputDevices,\n isVideoCallButtonVisible,\n canRecord,\n canShareScreen,\n canSwitchDevice,\n isUrlButtonEnabled,\n hasValidUrl,\n isTranscriptionEnabled,\n goToVideoCall,\n goToScreenSharing,\n closeSideViewAndLaunchEvent,\n openTranscriptionView,\n } = useSideViewLogic(uaType)\n\n const handleRecordClick = useCallback(() => {\n recordCurrentCall(isRecording)\n }, [isRecording])\n\n const buttonConfigs = useMemo(() => {\n const configs: (ButtonConfigWithKey | false)[] = [\n canRecord && {\n key: 'record',\n active: isRecording,\n onClick: handleRecordClick,\n tooltipId: 'tooltip-record',\n tooltipContent: isRecording ? t('Tooltip.Stop recording') || '' : t('Tooltip.Record') || '',\n icon: isRecording ? faStop : faRecord,\n },\n videoInputDevices?.length > 0 && {\n key: 'video',\n onClick: goToVideoCall,\n tooltipId: 'tooltip-video',\n tooltipContent: isVideoCallButtonVisible\n ? t('Tooltip.Enable camera') || ''\n : t('Tooltip.Enable camera permission') || '',\n disabled: !isVideoCallButtonVisible,\n icon: isVideoCallButtonVisible ? faVideo : faVideoSlash,\n },\n canShareScreen && {\n key: 'screen-share',\n onClick: goToScreenSharing,\n tooltipId: 'tooltip-screen-share',\n tooltipContent: t('Tooltip.Share screen') || '',\n icon: faDisplay,\n },\n hasValidUrl &&\n isUrlButtonEnabled && {\n key: 'url',\n onClick: () => closeSideViewAndLaunchEvent('openUrl'),\n tooltipId: 'tooltip-open-url',\n tooltipContent: t('Tooltip.Open url') || '',\n icon: faArrowUpRightFromSquare,\n },\n isTranscriptionEnabled && {\n key: 'transcription',\n onClick: openTranscriptionView,\n tooltipId: 'tooltip-transcription',\n tooltipContent: t('Tooltip.Open transcription') || 'Open transcription',\n icon: faCommentDots,\n },\n canSwitchDevice && {\n key: 'switch-device',\n onClick: () => closeSideViewAndLaunchEvent('switchDevice'),\n tooltipId: 'tooltip-switch-device',\n tooltipContent: t('Tooltip.Switch device') || '',\n icon: faArrowsRepeat,\n },\n ]\n\n return configs.filter((config): config is ButtonConfigWithKey => Boolean(config))\n }, [\n canRecord,\n isRecording,\n handleRecordClick,\n t,\n videoInputDevices?.length,\n goToVideoCall,\n isVideoCallButtonVisible,\n canShareScreen,\n goToScreenSharing,\n hasValidUrl,\n isUrlButtonEnabled,\n closeSideViewAndLaunchEvent,\n openTranscriptionView,\n isTranscriptionEnabled,\n canSwitchDevice,\n ])\n\n const containerClassName = useMemo(\n () =>\n `pi-absolute pi-h-full pi-bg-surfaceSidebar dark:pi-bg-surfaceSidebarDark pi-flex pi-flex-col pi-items-center pi-text-iconWhite dark:pi-text-iconWhiteDark -pi-mr-10 pi-right-0 -pi-z-10 pi-pointer-events-auto ${isOpen ? 'pi-py-6' : 'pi-py-4'\n }`,\n [isOpen],\n )\n\n return (\n <>\n <AnimatePresence>\n {isVisible && (\n <motion.div className={containerClassName} style={STYLE_CONFIG} {...ANIMATION_CONFIG}>\n <div className='pi-flex pi-flex-col pi-items-center pi-gap-3.5 pi-flex-1 pi-ml-9'>\n {buttonConfigs.map(({ key, ...config }) => (\n <SideViewButton key={key} {...config} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <CustomThemedTooltip id='tooltip-record' place='left' />\n <CustomThemedTooltip id='tooltip-video' place='left' />\n <CustomThemedTooltip id='tooltip-screen-share' place='left' />\n <CustomThemedTooltip id='tooltip-transcription' place='left' />\n <CustomThemedTooltip id='tooltip-switch-device' place='left' />\n <CustomThemedTooltip id='tooltip-open-url' place='left' />\n </>\n )\n})\n\nSideView.displayName = 'SideView'\n\nexport default SideView\n\ninterface SideViewTypes {\n isVisible: boolean\n uaType?: string\n}\n"],"names":["ANIMATION_CONFIG","initial","x","animate","transition","duration","ease","exit","STYLE_CONFIG","borderTopRightRadius","borderBottomRightRadius","width","transformOrigin","SideView","memo","_a","isVisible","uaType","isOpen","useSelector","state","island","isRecording","currentCall","t","useTranslation","_b","useSideViewLogic","videoInputDevices","isVideoCallButtonVisible","canRecord","canShareScreen","canSwitchDevice","isUrlButtonEnabled","hasValidUrl","isTranscriptionEnabled","goToVideoCall","goToScreenSharing","closeSideViewAndLaunchEvent","openTranscriptionView","handleRecordClick","useCallback","recordCurrentCall","buttonConfigs","useMemo","key","active","onClick","tooltipId","tooltipContent","icon","faStop","faRecord","length","disabled","faVideo","faVideoSlash","faDisplay","faArrowUpRightFromSquare","faCommentDots","faArrowsRepeat","filter","config","Boolean","containerClassName","concat","React","createElement","Fragment","AnimatePresence","motion","div","__assign","className","style","map","__rest","SideViewButton","CustomThemedTooltip","id","place","displayName"],"mappings":"o1CAmBMA,EAAmB,CACvBC,QAAS,CAAEC,GAAI,IACfC,QAAS,CAAED,EAAG,EAAGE,WAAY,CAAEC,SAAU,GAAKC,KAAM,YACpDC,KAAM,CAAEL,GAAI,GAAIE,WAAY,CAAEC,SAAU,GAAKC,KAAM,YAG/CE,EAAe,CACnBC,qBAAsB,OACtBC,wBAAyB,OACzBC,MAAO,OACPC,gBAAiB,SAgBbC,EAA8BC,EAAAA,KAAK,SAACC,OAAEC,EAASD,EAAAC,UAAEC,EAAMF,EAAAE,OACnDC,EAAWC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,gBACnDC,EAAgBH,cAAY,SAACC,GAAqB,OAAAA,EAAMG,0BACxDC,EAAMC,qBAERC,EAaFC,EAAgBA,iBAACV,GAZnBW,EAAiBF,EAAAE,kBACjBC,EAAwBH,EAAAG,yBACxBC,EAASJ,EAAAI,UACTC,EAAcL,EAAAK,eACdC,EAAeN,EAAAM,gBACfC,uBACAC,gBACAC,2BACAC,kBACAC,sBACAC,gCACAC,0BAGIC,EAAoBC,EAAAA,YAAY,WACpCC,EAAiBA,kBAACpB,EACpB,EAAG,CAACA,IAEEqB,EAAgBC,EAAAA,QAAQ,WAmD5B,MAlDiD,CAC/Cd,GAAa,CACXe,IAAK,SACLC,OAAQxB,EACRyB,QAASP,EACTQ,UAAW,iBACXC,eAAgB3B,EAAcE,EAAE,2BAA6B,GAAKA,EAAE,mBAAqB,GACzF0B,KAAM5B,EAAc6B,EAAAA,OAASC,EAAQA,WAEvCxB,aAAiB,EAAjBA,EAAmByB,QAAS,GAAK,CAC/BR,IAAK,QACLE,QAASX,EACTY,UAAW,gBACXC,eAAgBpB,EACZL,EAAE,0BAA4B,GAC9BA,EAAE,qCAAuC,GAC7C8B,UAAWzB,EACXqB,KAAMrB,EAA2B0B,EAAAA,QAAUC,EAAYA,cAEzDzB,GAAkB,CAChBc,IAAK,eACLE,QAASV,EACTW,UAAW,uBACXC,eAAgBzB,EAAE,yBAA2B,GAC7C0B,KAAMO,EAASA,WAEjBvB,GACAD,GAAsB,CACpBY,IAAK,MACLE,QAAS,WAAM,OAAAT,EAA4B,UAAU,EACrDU,UAAW,mBACXC,eAAgBzB,EAAE,qBAAuB,GACzC0B,KAAMQ,EAAwBA,0BAEhCvB,GAA0B,CACxBU,IAAK,gBACLE,QAASR,EACTS,UAAW,wBACXC,eAAgBzB,EAAE,+BAAiC,qBACnD0B,KAAMS,EAAaA,eAErB3B,GAAmB,CACjBa,IAAK,gBACLE,QAAS,WAAM,OAAAT,EAA4B,eAAe,EAC1DU,UAAW,wBACXC,eAAgBzB,EAAE,0BAA4B,GAC9C0B,KAAMU,EAAcA,iBAITC,OAAO,SAACC,GAA0C,OAAAC,QAAQD,EAAR,EACnE,EAAG,CACDhC,EACAR,EACAkB,EACAhB,EACAI,aAAA,EAAAA,EAAmByB,OACnBjB,EACAP,EACAE,EACAM,EACAH,EACAD,EACAK,EACAC,EACAJ,EACAH,IAGIgC,EAAqBpB,EAAAA,QACzB,WACE,MAAA,kNAAAqB,OAAkN/C,EAAS,UAAY,UAAvO,EAEF,CAACA,IAGH,OACEgD,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAA,QAAAC,cAACE,EAAeA,gBACb,KAAArD,GACCkD,EAAA,QAAAC,cAACG,EAAAA,OAAOC,IAAIC,EAAAA,SAAA,CAAAC,UAAWT,EAAoBU,MAAOlE,GAAkBR,GAClEkE,UAAKC,cAAA,MAAA,CAAAM,UAAU,oEACZ9B,EAAcgC,IAAI,SAAC5D,GAAE,IAAA8B,EAAG9B,EAAA8B,IAAKiB,EAAMc,EAAAA,OAAA7D,EAAhB,SAAuB,OACzCmD,EAAC,QAAAC,cAAAU,EAAAA,eAAeL,EAAAA,SAAA,CAAA3B,IAAKA,GAASiB,SAOxCI,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,iBAAiBC,MAAM,SAC/Cd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,gBAAgBC,MAAM,SAC9Cd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,uBAAuBC,MAAM,SACrDd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,wBAAwBC,MAAM,SACtDd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,wBAAwBC,MAAM,SACtDd,UAAAC,cAACW,EAAAA,oBAAmB,CAACC,GAAG,mBAAmBC,MAAM,SAGvD,GAEAnE,EAASoE,YAAc"}
1
+ {"version":3,"file":"SideView.js","sources":["../../../src/components/SideView/SideView.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo, memo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n faArrowUpRightFromSquare,\n faDisplay,\n faStop,\n faVideo,\n faVideoSlash,\n faCommentDots,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faArrowsRepeat, faRecord } from '@nethesis/nethesis-solid-svg-icons'\nimport { useTranslation } from 'react-i18next'\nimport { recordCurrentCall } from '../../lib/phone/call'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport { useSideViewLogic } from './hooks/useSideViewLogic'\nimport { SideViewButton } from './components/SideViewButton'\n\nconst ANIMATION_CONFIG = {\n initial: { x: -76 },\n animate: { x: 4, transition: { duration: 0.1, ease: 'easeOut' } },\n exit: { x: -76, transition: { duration: 0.1, ease: 'easeIn' } },\n} as const\n\nconst STYLE_CONFIG = {\n borderTopRightRadius: '20px',\n borderBottomRightRadius: '20px',\n width: '80px',\n transformOrigin: 'right',\n} as const\n\ninterface ButtonConfig {\n active?: boolean\n onClick: () => void | Promise<void>\n tooltipId: string\n tooltipContent: string\n icon: any\n disabled?: boolean\n}\n\ninterface ButtonConfigWithKey extends ButtonConfig {\n key: string\n}\n\nconst SideView: FC<SideViewTypes> = memo(({ isVisible, uaType }) => {\n const { isOpen } = useSelector((state: RootState) => state.island)\n const { isRecording } = useSelector((state: RootState) => state.currentCall)\n const { t } = useTranslation()\n\n const {\n videoInputDevices,\n isVideoCallButtonVisible,\n canRecord,\n canShareScreen,\n canSwitchDevice,\n isUrlButtonEnabled,\n hasValidUrl,\n isTranscriptionEnabled,\n goToVideoCall,\n goToScreenSharing,\n closeSideViewAndLaunchEvent,\n openTranscriptionView,\n } = useSideViewLogic(uaType)\n\n const handleRecordClick = useCallback(() => {\n recordCurrentCall(isRecording)\n }, [isRecording])\n\n const buttonConfigs = useMemo(() => {\n const configs: (ButtonConfigWithKey | false)[] = [\n canRecord && {\n key: 'record',\n active: isRecording,\n onClick: handleRecordClick,\n tooltipId: 'tooltip-record',\n tooltipContent: isRecording ? t('Tooltip.Stop recording') || '' : t('Tooltip.Record') || '',\n icon: isRecording ? faStop : faRecord,\n },\n videoInputDevices?.length > 0 && {\n key: 'video',\n onClick: goToVideoCall,\n tooltipId: 'tooltip-video',\n tooltipContent: isVideoCallButtonVisible\n ? t('Tooltip.Enable camera') || ''\n : t('Tooltip.Enable camera permission') || '',\n disabled: !isVideoCallButtonVisible,\n icon: isVideoCallButtonVisible ? faVideo : faVideoSlash,\n },\n canShareScreen && {\n key: 'screen-share',\n onClick: goToScreenSharing,\n tooltipId: 'tooltip-screen-share',\n tooltipContent: t('Tooltip.Share screen') || '',\n icon: faDisplay,\n },\n hasValidUrl &&\n isUrlButtonEnabled && {\n key: 'url',\n onClick: () => closeSideViewAndLaunchEvent('openUrl'),\n tooltipId: 'tooltip-open-url',\n tooltipContent: t('Tooltip.Open url') || '',\n icon: faArrowUpRightFromSquare,\n },\n isTranscriptionEnabled && {\n key: 'transcription',\n onClick: openTranscriptionView,\n tooltipId: 'tooltip-transcription',\n tooltipContent: t('Tooltip.Open transcription') || 'Open transcription',\n icon: faCommentDots,\n },\n canSwitchDevice && {\n key: 'switch-device',\n onClick: () => closeSideViewAndLaunchEvent('switchDevice'),\n tooltipId: 'tooltip-switch-device',\n tooltipContent: t('Tooltip.Switch device') || '',\n icon: faArrowsRepeat,\n },\n ]\n\n return configs.filter((config): config is ButtonConfigWithKey => Boolean(config))\n }, [\n canRecord,\n isRecording,\n handleRecordClick,\n t,\n videoInputDevices?.length,\n goToVideoCall,\n isVideoCallButtonVisible,\n canShareScreen,\n goToScreenSharing,\n hasValidUrl,\n isUrlButtonEnabled,\n closeSideViewAndLaunchEvent,\n openTranscriptionView,\n isTranscriptionEnabled,\n canSwitchDevice,\n ])\n\n const containerClassName = useMemo(\n () =>\n `pi-absolute pi-h-full pi-bg-surfaceSidebar dark:pi-bg-surfaceSidebarDark pi-flex pi-flex-col pi-items-center pi-text-iconWhite dark:pi-text-iconWhiteDark -pi-mr-10 pi-right-0 -pi-z-10 pi-pointer-events-auto ${isOpen ? 'pi-py-6' : 'pi-py-4'\n }`,\n [isOpen],\n )\n\n return (\n <>\n <AnimatePresence>\n {isVisible && (\n <motion.div className={containerClassName} style={STYLE_CONFIG} {...ANIMATION_CONFIG}>\n <div className='pi-flex pi-flex-col pi-items-center pi-gap-3.5 pi-flex-1 pi-ml-9'>\n {buttonConfigs.map(({ key, ...config }) => (\n <SideViewButton key={key} {...config} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <CustomThemedTooltip id='tooltip-record' place='left' />\n <CustomThemedTooltip id='tooltip-video' place='left' />\n <CustomThemedTooltip id='tooltip-screen-share' place='left' />\n <CustomThemedTooltip id='tooltip-transcription' place='left' />\n <CustomThemedTooltip id='tooltip-switch-device' place='left' />\n <CustomThemedTooltip id='tooltip-open-url' place='left' />\n </>\n )\n})\n\nSideView.displayName = 'SideView'\n\nexport default SideView\n\ninterface SideViewTypes {\n isVisible: boolean\n uaType?: string\n}\n"],"names":["ANIMATION_CONFIG","initial","x","animate","transition","duration","ease","exit","STYLE_CONFIG","borderTopRightRadius","borderBottomRightRadius","width","transformOrigin","SideView","memo","_a","isVisible","uaType","isOpen","useSelector","state","island","isRecording","currentCall","t","useTranslation","_b","useSideViewLogic","videoInputDevices","isVideoCallButtonVisible","canRecord","canShareScreen","canSwitchDevice","isUrlButtonEnabled","hasValidUrl","isTranscriptionEnabled","goToVideoCall","goToScreenSharing","closeSideViewAndLaunchEvent","openTranscriptionView","handleRecordClick","useCallback","recordCurrentCall","buttonConfigs","useMemo","key","active","onClick","tooltipId","tooltipContent","icon","faStop","faRecord","length","disabled","faVideo","faVideoSlash","faDisplay","faArrowUpRightFromSquare","faCommentDots","faArrowsRepeat","filter","config","Boolean","containerClassName","concat","React","createElement","Fragment","AnimatePresence","motion","div","__assign","className","style","map","__rest","SideViewButton","CustomThemedTooltip","id","place","displayName"],"mappings":"o1CAmBMA,EAAmB,CACvBC,QAAS,CAAEC,GAAI,IACfC,QAAS,CAAED,EAAG,EAAGE,WAAY,CAAEC,SAAU,GAAKC,KAAM,YACpDC,KAAM,CAAEL,GAAI,GAAIE,WAAY,CAAEC,SAAU,GAAKC,KAAM,YAG/CE,EAAe,CACnBC,qBAAsB,OACtBC,wBAAyB,OACzBC,MAAO,OACPC,gBAAiB,SAgBbC,EAA8BC,EAAAA,KAAK,SAACC,OAAEC,EAASD,EAAAC,UAAEC,EAAMF,EAAAE,OACnDC,EAAWC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,gBACnDC,EAAgBH,cAAY,SAACC,GAAqB,OAAAA,EAAMG,0BACxDC,EAAMC,qBAERC,EAaFC,EAAgBA,iBAACV,GAZnBW,EAAiBF,EAAAE,kBACjBC,EAAwBH,EAAAG,yBACxBC,EAASJ,EAAAI,UACTC,EAAcL,EAAAK,eACdC,EAAeN,EAAAM,gBACfC,uBACAC,gBACAC,2BACAC,kBACAC,sBACAC,gCACAC,0BAGIC,EAAoBC,EAAAA,YAAY,WACpCC,EAAiBA,kBAACpB,EACpB,EAAG,CAACA,IAEEqB,EAAgBC,EAAAA,QAAQ,WAmD5B,MAlDiD,CAC/Cd,GAAa,CACXe,IAAK,SACLC,OAAQxB,EACRyB,QAASP,EACTQ,UAAW,iBACXC,eAAgB3B,EAAcE,EAAE,2BAA6B,GAAKA,EAAE,mBAAqB,GACzF0B,KAAM5B,EAAc6B,EAAAA,OAASC,EAAQA,WAEvCxB,aAAiB,EAAjBA,EAAmByB,QAAS,GAAK,CAC/BR,IAAK,QACLE,QAASX,EACTY,UAAW,gBACXC,eAAgBpB,EACZL,EAAE,0BAA4B,GAC9BA,EAAE,qCAAuC,GAC7C8B,UAAWzB,EACXqB,KAAMrB,EAA2B0B,EAAAA,QAAUC,EAAYA,cAEzDzB,GAAkB,CAChBc,IAAK,eACLE,QAASV,EACTW,UAAW,uBACXC,eAAgBzB,EAAE,yBAA2B,GAC7C0B,KAAMO,EAASA,WAEjBvB,GACAD,GAAsB,CACpBY,IAAK,MACLE,QAAS,WAAM,OAAAT,EAA4B,UAAU,EACrDU,UAAW,mBACXC,eAAgBzB,EAAE,qBAAuB,GACzC0B,KAAMQ,EAAwBA,0BAEhCvB,GAA0B,CACxBU,IAAK,gBACLE,QAASR,EACTS,UAAW,wBACXC,eAAgBzB,EAAE,+BAAiC,qBACnD0B,KAAMS,EAAaA,eAErB3B,GAAmB,CACjBa,IAAK,gBACLE,QAAS,WAAM,OAAAT,EAA4B,eAAe,EAC1DU,UAAW,wBACXC,eAAgBzB,EAAE,0BAA4B,GAC9C0B,KAAMU,EAAcA,iBAITC,OAAO,SAACC,GAA0C,OAAAC,QAAQD,EAAR,EACnE,EAAG,CACDhC,EACAR,EACAkB,EACAhB,EACAI,aAAA,EAAAA,EAAmByB,OACnBjB,EACAP,EACAE,EACAM,EACAH,EACAD,EACAK,EACAC,EACAJ,EACAH,IAGIgC,EAAqBpB,EAAAA,QACzB,WACE,MAAA,kNAAAqB,OAAkN/C,EAAS,UAAY,UAAvO,EAEF,CAACA,IAGH,OACEgD,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAA,QAAAC,cAACE,EAAeA,gBACb,KAAArD,GACCkD,EAAA,QAAAC,cAACG,EAAAA,OAAOC,IAAIC,EAAAA,SAAA,CAAAC,UAAWT,EAAoBU,MAAOlE,GAAkBR,GAClEkE,UAAKC,cAAA,MAAA,CAAAM,UAAU,oEACZ9B,EAAcgC,IAAI,SAAC5D,GAAE,IAAA8B,EAAG9B,EAAA8B,IAAKiB,EAAMc,EAAAA,OAAA7D,EAAhB,SAAuB,OACzCmD,EAAC,QAAAC,cAAAU,EAAAA,eAAeL,EAAAA,SAAA,CAAA3B,IAAKA,GAASiB,SAOxCI,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,iBAAiBC,MAAM,SAC/Cd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,gBAAgBC,MAAM,SAC9Cd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,uBAAuBC,MAAM,SACrDd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,wBAAwBC,MAAM,SACtDd,EAAC,QAAAC,cAAAW,uBAAoBC,GAAG,wBAAwBC,MAAM,SACtDd,UAAAC,cAACW,EAAAA,oBAAmB,CAACC,GAAG,mBAAmBC,MAAM,SAGvD,GAEAnE,EAASoE,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../../node_modules/@fortawesome/react-fontawesome/index.es.js"),o=require("../../Button.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(e),n=e.memo(function(e){var a=e.onClick,n=e.tooltipId,r=e.tooltipContent,d=e.icon,s=e.active,u=void 0!==s&&s,c=e.disabled,l=void 0!==c&&c;return i.default.createElement(o.Button,{active:u,"data-stop-propagation":!0,variant:"transparentSideView",onClick:a,"data-tooltip-id":n,"data-tooltip-content":r,disabled:l,className:l?"pi-cursor-auto":""},i.default.createElement(t.FontAwesomeIcon,{icon:d,className:"pi-h-5 pi-w-5"}))});n.displayName="SideViewButton",exports.SideViewButton=n;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),o=require("../../Button.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(e),n=e.memo(function(e){var a=e.onClick,n=e.tooltipId,r=e.tooltipContent,d=e.icon,s=e.active,u=void 0!==s&&s,c=e.disabled,l=void 0!==c&&c;return i.default.createElement(o.Button,{active:u,"data-stop-propagation":!0,variant:"transparentSideView",onClick:a,"data-tooltip-id":n,"data-tooltip-content":r,disabled:l,className:l?"pi-cursor-auto":""},i.default.createElement(t.FontAwesomeIcon,{icon:d,className:"pi-h-5 pi-w-5"}))});n.displayName="SideViewButton",exports.SideViewButton=n;
2
2
  //# sourceMappingURL=SideViewButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SideViewButton.js","sources":["../../../../src/components/SideView/components/SideViewButton.tsx"],"sourcesContent":["import React, { FC, memo } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\nimport { Button } from '../../Button'\n\ninterface SideViewButtonProps {\n onClick: () => void\n tooltipId: string\n tooltipContent: string\n icon: IconDefinition\n active?: boolean\n disabled?: boolean\n}\n\nexport const SideViewButton: FC<SideViewButtonProps> = memo(({\n onClick,\n tooltipId,\n tooltipContent,\n icon,\n active = false,\n disabled = false,\n}) => {\n return (\n <Button\n active={active}\n data-stop-propagation={true}\n variant='transparentSideView'\n onClick={onClick}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n disabled={disabled}\n className={disabled ? 'pi-cursor-auto' : ''}\n >\n <FontAwesomeIcon icon={icon} className='pi-h-5 pi-w-5' />\n </Button>\n )\n})\n\nSideViewButton.displayName = 'SideViewButton'\n"],"names":["SideViewButton","memo","_a","onClick","tooltipId","tooltipContent","icon","_b","active","_c","disabled","React","createElement","Button","variant","className","FontAwesomeIcon","displayName"],"mappings":"yRAcaA,EAA0CC,EAAAA,KAAK,SAACC,OAC3DC,EAAOD,EAAAC,QACPC,EAASF,EAAAE,UACTC,EAAcH,EAAAG,eACdC,EAAIJ,EAAAI,KACJC,WAAAC,OAAS,IAAAD,GAAKA,EACdE,aAAAC,OAAW,IAAAD,GAAKA,EAEhB,OACEE,EAAC,QAAAC,cAAAC,EAAAA,OACC,CAAAL,OAAQA,EAAM,yBACS,EACvBM,QAAQ,sBACRX,QAASA,EAAO,kBACCC,EAAS,uBACJC,EACtBK,SAAUA,EACVK,UAAWL,EAAW,iBAAmB,IAEzCC,UAAAC,cAACI,EAAAA,gBAAe,CAACV,KAAMA,EAAMS,UAAU,kBAG7C,GAEAf,EAAeiB,YAAc"}
1
+ {"version":3,"file":"SideViewButton.js","sources":["../../../../src/components/SideView/components/SideViewButton.tsx"],"sourcesContent":["import React, { FC, memo } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\nimport { Button } from '../../Button'\n\ninterface SideViewButtonProps {\n onClick: () => void\n tooltipId: string\n tooltipContent: string\n icon: IconDefinition\n active?: boolean\n disabled?: boolean\n}\n\nexport const SideViewButton: FC<SideViewButtonProps> = memo(({\n onClick,\n tooltipId,\n tooltipContent,\n icon,\n active = false,\n disabled = false,\n}) => {\n return (\n <Button\n active={active}\n data-stop-propagation={true}\n variant='transparentSideView'\n onClick={onClick}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n disabled={disabled}\n className={disabled ? 'pi-cursor-auto' : ''}\n >\n <FontAwesomeIcon icon={icon} className='pi-h-5 pi-w-5' />\n </Button>\n )\n})\n\nSideViewButton.displayName = 'SideViewButton'\n"],"names":["SideViewButton","memo","_a","onClick","tooltipId","tooltipContent","icon","_b","active","_c","disabled","React","createElement","Button","variant","className","FontAwesomeIcon","displayName"],"mappings":"2RAcaA,EAA0CC,EAAAA,KAAK,SAACC,OAC3DC,EAAOD,EAAAC,QACPC,EAASF,EAAAE,UACTC,EAAcH,EAAAG,eACdC,EAAIJ,EAAAI,KACJC,WAAAC,OAAS,IAAAD,GAAKA,EACdE,aAAAC,OAAW,IAAAD,GAAKA,EAEhB,OACEE,EAAC,QAAAC,cAAAC,EAAAA,OACC,CAAAL,OAAQA,EAAM,yBACS,EACvBM,QAAQ,sBACRX,QAASA,EAAO,kBACCC,EAAS,uBACJC,EACtBK,SAAUA,EACVK,UAAWL,EAAW,iBAAmB,IAEzCC,UAAAC,cAACI,EAAAA,gBAAe,CAACV,KAAMA,EAAMS,UAAU,kBAG7C,GAEAf,EAAeiB,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("./RestAPI.js"),i=require("../lib/phone/conversation.js"),o=require("../services/phonebook.js"),u=require("../services/user.js"),c=require("../static/busy_ringtone.js"),a=require("../utils/customHooks/useEventListener.js"),s=require("../utils/genericFunctions/eventDispatch.js"),l=require("../utils/genericFunctions/withTimeout.js"),d=require("../utils/genericFunctions/summaryEvents.js"),v=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var p=require("../lib/devices/devices.js"),m=require("../lib/user/default_device.js"),f=require("../utils/genericFunctions/isEmpty.js"),g=require("../utils/streaming/getStreamingSourceId.js"),h=require("../events/SocketEvents.js"),b=require("../utils/genericFunctions/timestamp.js"),k=require("../lib/user/extensions.js"),S=require("../utils/streaming/isFromStreaming.js"),q=require("../lib/phone/queue.js"),y=require("../lib/phone/trunk.js"),w=require("../node_modules/react-redux/es/hooks/useDispatch.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=C(n);exports.Socket=function(C){var N=C.hostName,I=C.username,T=C.authToken,j=C.reload,U=C.reloadedCallback,D=C.children,x=C.uaType,E=w.useDispatch(),P=n.useRef(),O=n.useRef(),A=n.useRef(!1),F=n.useRef(0),V=n.useRef(null),M=n.useRef(new Map),R=n.useRef(new Map),L=n.useRef(new Set),Q=n.useRef({linkedid:null,uniqueid:null});a.useEventListener("phone-island-start-transcription",function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:n,uniqueid:t},O.current.emit("start_transcription",{linkedid:n,uniqueid:t})}}),a.useEventListener("phone-island-stop-transcription",function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:null,uniqueid:null},O.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}}),a.useEventListener("phone-island-current-user-queue-call-waiting",function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})}),a.useEventListener("phone-island-current-user-queue-call-connected",function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})});return n.useEffect(function(){var n,a=function(e){if(e.counterpartNum&&S.isFromStreaming(e.counterpartNum)){E.island.setIsFromStreaming(!0),E.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=g.getStreamingSourceId(e.counterpartNum);n&&u.subscribe({id:n}).catch(function(e){return console.error("Error subscribing to streaming source:",e)})}},w=function(e){return(e||"").replace(/\D/g,"")},C=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t?n:(t?R.current.get(w(t)):void 0)||n},_=function(e){return q.getCurrentCallQueueContext(e,v.store.getState().queue)},j=function(e,n){var t=v.store.getState().currentCall,r=(null==n?void 0:n.queueId)||t.queueId||"",i=(null==n?void 0:n.queueName)||t.queueName||"",o=(null==n?void 0:n.queueNumber)||t.queueNumber||"";return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:r,queueName:i,queueNumber:o,queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}},U=function(e){var n,t,r,i;if(e){var o=_(e),u=j(e,o);if(Boolean(u.queueId||u.queueName||u.queueNumber))if(e.connected)((null===(r=V.current)||void 0===r?void 0:r.conversationId)!==e.id||"connected"!==(null===(i=V.current)||void 0===i?void 0:i.phase))&&(h.dispatchCurrentUserQueueCallConnected(u),V.current={conversationId:e.id,phase:"connected"});else((null===(n=V.current)||void 0===n?void 0:n.conversationId)!==e.id||"waiting"!==(null===(t=V.current)||void 0===t?void 0:t.phase))&&(h.dispatchCurrentUserQueueCallWaiting(u),V.current={conversationId:e.id,phase:"waiting"});else V.current=null}else V.current=null},D=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},W=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},B=function(e){return!!(null==e?void 0:e.connected)&&!!D(e)&&!!W(e)},K=function(n){var t=v.store.getState().currentUser.conversations,r=n?null==t?void 0:t[n]:void 0,i=function(e){var n,t=null,r=Object.entries(e||{}).filter(function(e){var n=e[1];return n&&Object.keys(n).length>0});return r.forEach(function(e){var r,i,o=e[0],u=e[1];if(!t)return t=u,void(n=o);var c=B(t),a=B(u);if(a&&!c)return t=u,void(n=o);if(a===c){var s=!!t.connected,l=!!u.connected;if(l&&!s)return t=u,void(n=o);var d=null!==(r=t.startTime)&&void 0!==r?r:0,v=null!==(i=u.startTime)&&void 0!==i?i:0;l===s&&v>d&&(t=u,n=o)}}),{conversation:t,key:n,count:r.length}}(r);if(B(i.conversation))return e.__assign(e.__assign({},i),{source:"live",cacheAgeMs:void 0,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})});var o=function(n){if(!n)return null;var t=M.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(M.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&B(o.conversation)?{conversation:o.conversation,key:o.conversation.id,count:i.count,source:"cache",cacheAgeMs:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})}:e.__assign(e.__assign({},i),{source:i.conversation?"live_invalid":"none",cacheAgeMs:null==o?void 0:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})})},z=function(n,t){var r=v.store.getState().currentCall,c=r.transferring,l=r.transferSwitching,d=r.transferCalls,p=v.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var f=v.store.getState().users.extensions,g=v.store.getState().currentUser.default_device,h=v.store.getState().currentUser,q=h.endpoints,N=h.username,I=v.store.getState().currentCall;I.incoming,I.outgoing;var T=function(){if(!f||!N)return!1;var e=Object.values(f).filter(function(e){return(null==e?void 0:e.username)===N});return null==e?void 0:e.some(function(e){var n=null==q?void 0:q.extension.find(function(n){return n.id===(null==e?void 0:e.exten)});return"nethlink"===(null==n?void 0:n.type)&&"offline"!==(null==e?void 0:e.status)})};switch(n.status){case"ringing":if(function(e){var n=v.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;var D=_(t),P=j(t,D);U(t),a(t),function(e){if(e&&"in"===e.direction){var n=(e.counterpartNum||"").trim();if(!(n.length<3)){var t=(e.counterpartName||"").trim();if(!t||"<unknown>"===t||t===n){var r=v.store.getState().users.extensions;if(!(r&&r[n]||S.isFromStreaming(n))){var i=w(n);R.current.has(i)||e.id&&L.current.has(e.id)||(e.id&&(L.current.size>500&&L.current.clear(),L.current.add(e.id)),o.searchPhonebook(1,n,"").then(function(e){var n=((null==e?void 0:e.rows)||[]).find(function(e){return[e.extension,e.workphone,e.homephone,e.cellphone,e.fax].some(function(e){var n=w(e);return n.length>0&&(n===i||n.endsWith(i)||i.endsWith(n))})}),t=((null==n?void 0:n.name)||(null==n?void 0:n.company)||"").trim();if(t){R.current.set(i,t);var r=v.store.getState().currentCall;w(r.number)===i&&E.currentCall.updateCurrentCall({displayName:t})}}).catch(function(){}))}}}}}(t),("mobile"===x&&T()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!T()||!T()&&"physical"===(null==g?void 0:g.type)))&&(E.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:C(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(P.queueId||P.queueName||P.queueNumber),queueId:P.queueId,queueName:P.queueName,queueNumber:P.queueNumber,queuePosition:P.queuePosition,queueWaitingTime:P.queueWaitingTime,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",ownerExtension:t.owner}),v.store.dispatch.island.setIslandView("call")),A.current||(A.current=!0,u.getCurrentUserInfo().then(function(n){n&&(E.currentUser.updateCurrentUser(n),s.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?E.paramUrl.setOpenParamUrlType(n.settings.open_param_url):E.paramUrl.setOpenParamUrlType("never"))}).catch(function(e){console.error("Error getting current user info:",e)}).finally(function(){setTimeout(function(){A.current=!1},100)}));var O=v.store.getState().paramUrl.openParamUrlType,F=v.store.getState().island.urlOpened;if("ringing"===O&&!F){var V=y.isFromTrunk(t.counterpartNum);v.store.dispatch.paramUrl.setThroughTrunk(V),v.store.dispatch.island.setUrlOpened(!1),s.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:C(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:V,direction:t.direction,connected:t.connected})}break;case"busy":if(U(t),a(t),"mobile"===x&&T()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!T()||!T()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)E.currentCall.updateCurrentCall({conversationId:t.id,displayName:C(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{}}),E.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),E.currentCall.addTransferCalls({type:"transferred",displayName:C(t),number:"".concat(t.counterpartNum),startTime:"".concat(b.getTimestampInSeconds())}),v.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout(function(){E.island.setIslandView("streamingAnswer")},200),m.isPhysical()&&function(e){E.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),s.eventDispatch("phone-island-call-answered",{}),v.store.dispatch.player.stopAudioPlayer(),v.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===p&&c&&E.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)E.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(c&&!l){var M=d.find(function(e){return e.number===t.counterpartNum});!t.connected&&M&&(E.currentCall.updateCurrentCall({transferring:!1}),s.eventDispatch("phone-island-call-transfer-failed",{}),E.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&E.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&E.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:i.getDisplayName(t),number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(f&&f[null==t?void 0:t.counterpartNum]&&f[null==t?void 0:t.counterpartNum].username)||""})}break;case"onhold":U(t);var Q=t.counterpartName,W=t.counterpartNum,B=t.startTime;c&&W&&Q&&"<unknown>"!==Q&&(E.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:W,startTime:"".concat(b.getTimestampInSeconds())}),E.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:W,startTime:"".concat(B/1e3),conversationId:t.id}),E.island.setIslandView("call"));break;case"busy_ringing":s.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&k.userTotallyFree()&&(U(null),E.player.stopAudioPlayer(),E.currentCall.reset(),E.listen.reset(),E.physicalRecorder.setRecordingTempVariable(!1),E.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(I)&&(n.path="/api/ws"),O.current=t.io("https://"+N,n),E.websocket.update({socket:O.current}),O.current.on("connect",function(){console.debug("Socket connected sid: ".concat(O.current.id)),s.eventDispatch("phone-island-socket-connected",{})}),O.current.on("disconnect",function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?s.eventDispatch("phone-island-server-disconnected",{}):s.eventDispatch("phone-island-socket-disconnected",{})}),O.current.io.on("error",function(e){console.debug("Socket error: ",e)}),O.current.on("connect_error",function(e){console.debug("Socket connect_error: ",e)}),O.current.io.on("reconnect",function(e){F.current=0,s.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(O.current.id,")"))}),O.current.io.on("reconnect_attempt",function(e){console.debug("Socket reconnect_attempt ".concat(e))}),O.current.io.on("reconnect_error",function(e){console.debug("Socket reconnect_error: ",e)}),O.current.io.on("reconnect_failed",function(){console.debug("Socket reconnect_failed")}),O.current.on("connect",function(){console.debug("Socket on: "+N+" is connected!"),O.current.emit("login",{accessKeyId:"".concat(I),token:T,uaType:x})}),O.current.on("authe_ok",function(){console.debug("Socket authentication success!"),s.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval(function(){O.current.volatile.emit("ping",l.withTimeout(function(){F.current=0,setTimeout(function(){E.alerts.removeAlert("socket_down"),s.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),s.eventDispatch("phone-island-socket-disconnected-popup-close",{})},0)},function(){F.current++,console.debug("Socket ping timeout (".concat(F.current,"/").concat(3,"), connected: ").concat(O.current.connected)),setTimeout(function(){var e,n,t=O.current.connected&&F.current>=3;if(!O.current.connected||t){var r=v.store.getState().webrtc.sipcall,i=v.store.getState().currentCall,o=i.accepted,u=i.outgoing,c=null===(n=null===(e=null==r?void 0:r.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===n?void 0:n.iceConnectionState;if((o||u)&&("connected"===c||"completed"===c))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:c,accepted:o,outgoing:u,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),O.current.disconnect(),O.current.connect()),E.alerts.setAlert("socket_down"),s.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}},0)},5e3))},5e3)}),O.current.on("userMainPresenceUpdate",function(n){v.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),h.dispatchMainPresence(n)}),O.current.on("extenHangup",function(e){var n=v.store.getState().currentUser,t=n.endpoints,r=n.username,i=v.store.getState().conference,o=i.isActive,u=i.conferenceStartedFrom,a=v.store.getState().island,l=a.view,d=a.previewCallFromMobileOrNethlink,p=(null==t?void 0:t.extension)||[],m=p.map(function(e){return e.id}),f=null==e?void 0:e.callerNum;!m.includes(f)&&m.includes(null==e?void 0:e.channelExten)&&(f=null==e?void 0:e.channelExten);var g=p.find(function(n){return n.id===e.callerNum}),h=null==g?void 0:g.type,b=K(f).conversation,k=D(b),S=W(b),q=(null==b?void 0:b.connected)||!1;if(S&&k&&q&&(s.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:S}),f&&M.current.delete(f)),"normal_clearing"===e.cause&&("physical"===h||"mobile"===h)||"normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)&&d||"user_busy"===(null==e?void 0:e.cause)||"not_defined"===(null==e?void 0:e.cause)||"call_rejected"===(null==e?void 0:e.cause)||"interworking"===(null==e?void 0:e.cause)?(setTimeout(function(){v.store.dispatch.island.toggleAvoidToShow(!1),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)},500),o&&u!==r&&v.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&u===r?setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):"normal_clearing"!==e.cause&&"user_busy"!==(null==e?void 0:e.cause)&&"not_defined"!==(null==e?void 0:e.cause)&&"call_rejected"!==(null==e?void 0:e.cause)||"webrtc"!==h&&"nethlink"!==h||!o||u===r||v.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&u===r){var y=v.store.getState().conference,w=y.usersList,C=y.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0;_||N?setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):v.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&u===r&&"waitingConference"!==l&&setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),"user_busy"===(null==e?void 0:e.cause)){var I=v.store.getState().currentUser,T=I.endpoints,j=I.username,U=((null==T?void 0:T.extension)||[]).map(function(e){return e.id}),x=v.store.getState().currentCall,E=x.incoming,P=x.accepted,O=x.transferring,A=v.store.getState().conference,F=A.isActive,V=A.conferenceStartedFrom;!(E&&e.callerNum&&U.includes(e.callerNum))&&(!P||F||O)&&(v.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout(function(){v.store.dispatch.player.stopAudioPlayer()},4e3),setTimeout(function(){v.store.dispatch.player.updateStartAudioPlayer({src:c.default,loop:!0}),v.store.dispatch.island.setIslandView("operatorBusy")},600),F&&V===j&&setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var R=v.store.getState().conference,L=R.isActive,Q=R.conferenceStartedFrom,B=v.store.getState().currentUser.username;if(L&&Q===B){var z=v.store.getState().conference;w=z.usersList,C=z.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0,_||N?(setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),C&&C[e.callerNum]&&v.store.dispatch.conference.removePendingUser(e.callerNum)):v.store.dispatch.conference.resetConference()}}}),O.current.on("extenConnected",function(e){var n=v.store.getState().currentUser,t=n.default_device,r=n.endpoints,i=((null==r?void 0:r.extension)||[]).find(function(n){return n.id===e.extenConnected}),o=null==i?void 0:i.type;(("webrtc"===(null==t?void 0:t.type)||"nethlink"===(null==t?void 0:t.type))&&o&&("mobile"===o||"physical"===o)||"physical"===(null==t?void 0:t.type)&&o&&"physical"!==o)&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),s.eventDispatch("phone-island-call-answered",{extensionType:o}))}),O.current.on("extenUpdate",function(e){var n,t,r;E.users.updateExtension(e);var i=v.store.getState().users.extensions,o={},u=v.store.getState().currentUser;for(var c in i){var a=i[c].username,s=i[c].exten;o[a]||(o[a]=[]),o[a].push(s)}var l,d,p=o[e.username],m=Object.keys(e.conversations||{}),g=e.username===I,b=(null===(n=e.conversations)||void 0===n?void 0:n[m[0]])||{};g&&(l=e.exten,d=e.conversations,l&&Object.values(d||{}).forEach(function(e){B(e)&&M.current.set(l,{conversation:e,cachedAt:Date.now()})}));var k=!1;if((null==e?void 0:e.username)===I&&!f.isEmpty(b)&&(null==b?void 0:b.owner)){var S=null===(r=null===(t=null==u?void 0:u.endpoints)||void 0===t?void 0:t.extension)||void 0===r?void 0:r.find(function(e){return e.id===b.owner});S&&"mobile"===S.type&&(k=!0)}if(h.dispatchExtensions(e),f.isEmpty(b)){var q=null==p?void 0:p.some(function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!f.isEmpty(t)});q||h.dispatchConversations(e)}else k||h.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===I&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===I&&(z(e,b),E.currentUser.updateConversations(e))}),O.current.on("queueUpdate",function(e){E.queue.updateQueue(e);var n,t,r,i=(n=v.store.getState().currentUser.conversations,t=v.store.getState().currentCall.conversationId,r=null,Object.values(n||{}).forEach(function(e){Object.values(e||{}).forEach(function(e){(null==r?void 0:r.id)&&r.id===t||(t&&e.id===t||!r||e.connected&&!r.connected||e.connected===r.connected&&e.startTime>r.startTime)&&(r=e)})}),r);i&&U(i),h.dispatchQueueUpdate(e)}),O.current.on("queueMemberUpdate",function(e){E.queue.updateQueueMember(e),h.dispatchQueueMemberUpdate(e)}),O.current.on("takeOver",function(){h.dispatchAlreadyLogin()}),O.current.on("serverReloaded",function(){h.dispatchServerReload()}),O.current.on("parkingUpdate",function(e){h.dispatchParkingUpdate(e)}),O.current.on("actionNethLink",function(e,n){h.dispatchUrlCall(e,n)}),O.current.on("satellite/summary",function(e){var n=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId),t=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId);n&&d.dispatchSummaryReady({linkedid:t,uniqueid:n,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number,source:"socket"})}),O.current.on("message",function(e){switch(e.message){case"videoCallStart":var n=v.store.getState(),t=n.currentCall,r=t.incoming,i=t.outgoing,o=t.accepted,u=n.currentUser.default_device,c=n.island,a=c.isFromStreaming,s=c.view;("webrtc"===(null==u?void 0:u.type)||"nethlink"===(null==u?void 0:u.type))&&(r||i||o)&&!a&&"video"!==s&&(E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video")),h.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}}),O.current.on("updateDefaultDevice",function(n){h.dispatchDefaultDeviceUpdate(n);var t=v.store.getState().users.extensions,r=v.store.getState().currentUser.endpoints;if(t&&r){var i=Object.values(t).filter(function(e){return(null==e?void 0:e.exten)===n});if(0!==i.length){var o=i[0],u=r.extension.find(function(e){return e.id===o.exten});u&&(o=e.__assign(e.__assign({},o),{type:u.type})),v.store.dispatch.currentUser.updateCurrentDefaultDevice(o),p.checkMediaPermissions()}}}),O.current.on("confBridgeUpdate",function(n){if(n&&(null==n?void 0:n.users)){var t=null==n?void 0:n.id,r=null==n?void 0:n.users,i=v.store.getState().conference.usersList,o=e.__assign({},r);i&&Object.keys(o).forEach(function(n){i[n]&&(o[n]=e.__assign(e.__assign({},o[n]),{muted:i[n].muted}))}),v.store.dispatch.conference.updateConferenceUsersList(o),v.store.dispatch.conference.updateConferenceId(t)}}),O.current.on("confBridgeEnd",function(e){e&&(null==e?void 0:e.id)&&(v.store.dispatch.conference.resetConference(),s.eventDispatch("phone-island-conference-finished",{}))}),O.current.on("callWebrtc",function(e){s.eventDispatch("phone-island-call-start",{number:e})}),O.current.on("newVoiceMessageCounter",function(e){s.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})}),O.current.on("streamingSourceUpdate",function(e){s.eventDispatch("phone-island-streaming-information-received",{res:e});var n=e.streaming||e.res&&e.res.streaming;if(n){var t=n.source,r=n.image;if(t&&r){v.store.getState().island.isFromStreaming;var i=v.store.getState().currentCall.streamingSourceNumber;g.getStreamingSourceId(i),E.streaming.updateSourceImage({source:t,image:r})}}}),O.current.on("satellite/transcription",function(e){var n=Q.current,t=null==e?void 0:e.uniqueid,r=null==e?void 0:e.linkedid;if(n.linkedid&&t){var i=function(e){return null!=e&&(e===n.linkedid||e===n.uniqueid)};if(!i(t)&&!i(r))return}s.eventDispatch("phone-island-conversation-transcription",e)}),function(){clearInterval(P.current),R.current.clear(),L.current.clear(),O.current.close()}},[N,I,T,x,E]),n.useEffect(function(){var e,n;if(j){console.info("Socket reload requested");var t=v.store.getState().alerts.data,r=v.store.getState().island.forceReload,i=(null===(e=t.socket_down)||void 0===e?void 0:e.active)||!1,o=!(null===(n=O.current)||void 0===n?void 0:n.connected);i||o||r?(console.info(r?"Force reload requested, performing Socket reconnection":"Socket down detected (alert active or disconnected), performing reconnection"),P.current&&(clearInterval(P.current),P.current=null),setTimeout(function(){O.current.disconnect(),O.current.connect(),U()},100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}},[j]),_.default.createElement(_.default.Fragment,null,D)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("./RestAPI.js"),i=require("../lib/phone/conversation.js"),o=require("../services/phonebook.js"),u=require("../services/user.js"),c=require("../static/busy_ringtone.js"),a=require("../utils/customHooks/useEventListener.js"),s=require("../utils/genericFunctions/eventDispatch.js"),l=require("../utils/genericFunctions/withTimeout.js"),d=require("../utils/genericFunctions/summaryEvents.js"),v=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var p=require("../lib/devices/devices.js"),m=require("../lib/user/default_device.js"),f=require("../utils/genericFunctions/isEmpty.js"),g=require("../utils/streaming/getStreamingSourceId.js"),h=require("../events/SocketEvents.js"),b=require("../utils/genericFunctions/timestamp.js"),k=require("../lib/user/extensions.js"),S=require("../utils/streaming/isFromStreaming.js"),q=require("../lib/phone/queue.js"),y=require("../lib/phone/trunk.js"),w=require("../node_modules/react-redux/es/hooks/useDispatch.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=C(n);exports.Socket=function(C){var N=C.hostName,I=C.username,T=C.authToken,j=C.reload,U=C.reloadedCallback,D=C.children,x=C.uaType,E=w.useDispatch(),P=n.useRef(),O=n.useRef(),A=n.useRef(!1),F=n.useRef(0),V=n.useRef(null),M=n.useRef(new Map),R=n.useRef(new Map),L=n.useRef(new Set),Q=n.useRef({linkedid:null,uniqueid:null});a.useEventListener("phone-island-start-transcription",function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:n,uniqueid:t},O.current.emit("start_transcription",{linkedid:n,uniqueid:t})}}),a.useEventListener("phone-island-stop-transcription",function(e){if(O.current){var n=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId)||(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||null,t=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId)||n;if(!n&&!t)return;Q.current={linkedid:null,uniqueid:null},O.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}}),a.useEventListener("phone-island-current-user-queue-call-waiting",function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})}),a.useEventListener("phone-island-current-user-queue-call-connected",function(e){E.currentCall.updateCurrentCall({throughQueue:!0,queueId:(null==e?void 0:e.queueId)||"",queueName:(null==e?void 0:e.queueName)||"",queueNumber:(null==e?void 0:e.queueNumber)||"",queuePosition:(null==e?void 0:e.queuePosition)||"",queueWaitingTime:(null==e?void 0:e.queueWaitingTime)||0})});return n.useEffect(function(){var n,a=function(e){if(e.counterpartNum&&S.isFromStreaming(e.counterpartNum)){E.island.setIsFromStreaming(!0),E.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=g.getStreamingSourceId(e.counterpartNum);n&&u.subscribe({id:n}).catch(function(e){return console.error("Error subscribing to streaming source:",e)})}},w=function(e){return(e||"").replace(/\D/g,"")},C=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t?n:(t?R.current.get(w(t)):void 0)||n},_=function(e){return q.getCurrentCallQueueContext(e,v.store.getState().queue)},j=function(e,n){var t=v.store.getState().currentCall,r=(null==n?void 0:n.queueId)||t.queueId||"",i=(null==n?void 0:n.queueName)||t.queueName||"",o=(null==n?void 0:n.queueNumber)||t.queueNumber||"";return{conversationId:e.id,linkedId:e.linkedId,uniqueId:e.uniqueId,ownerExtension:e.owner,number:"".concat(e.counterpartNum||""),queueId:r,queueName:i,queueNumber:o,queuePosition:(null==n?void 0:n.queuePosition)||"",queueWaitingTime:(null==n?void 0:n.queueWaitingTime)||0}},U=function(e){var n,t,r,i;if(e){var o=_(e),u=j(e,o);if(Boolean(u.queueId||u.queueName||u.queueNumber))if(e.connected)((null===(r=V.current)||void 0===r?void 0:r.conversationId)!==e.id||"connected"!==(null===(i=V.current)||void 0===i?void 0:i.phase))&&(h.dispatchCurrentUserQueueCallConnected(u),V.current={conversationId:e.id,phase:"connected"});else((null===(n=V.current)||void 0===n?void 0:n.conversationId)!==e.id||"waiting"!==(null===(t=V.current)||void 0===t?void 0:t.phase))&&(h.dispatchCurrentUserQueueCallWaiting(u),V.current={conversationId:e.id,phase:"waiting"});else V.current=null}else V.current=null},D=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},W=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},B=function(e){return!!(null==e?void 0:e.connected)&&!!D(e)&&!!W(e)},K=function(n){var t=v.store.getState().currentUser.conversations,r=n?null==t?void 0:t[n]:void 0,i=function(e){var n,t=null,r=Object.entries(e||{}).filter(function(e){var n=e[1];return n&&Object.keys(n).length>0});return r.forEach(function(e){var r,i,o=e[0],u=e[1];if(!t)return t=u,void(n=o);var c=B(t),a=B(u);if(a&&!c)return t=u,void(n=o);if(a===c){var s=!!t.connected,l=!!u.connected;if(l&&!s)return t=u,void(n=o);var d=null!==(r=t.startTime)&&void 0!==r?r:0,v=null!==(i=u.startTime)&&void 0!==i?i:0;l===s&&v>d&&(t=u,n=o)}}),{conversation:t,key:n,count:r.length}}(r);if(B(i.conversation))return e.__assign(e.__assign({},i),{source:"live",cacheAgeMs:void 0,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})});var o=function(n){if(!n)return null;var t=M.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(M.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&B(o.conversation)?{conversation:o.conversation,key:o.conversation.id,count:i.count,source:"cache",cacheAgeMs:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})}:e.__assign(e.__assign({},i),{source:i.conversation?"live_invalid":"none",cacheAgeMs:null==o?void 0:o.cacheAgeMs,hasConversationForCaller:!!r,liveConversationKeys:Object.keys(r||{})})},z=function(n,t){var r=v.store.getState().currentCall,c=r.transferring,l=r.transferSwitching,d=r.transferCalls,p=v.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var f=v.store.getState().users.extensions,g=v.store.getState().currentUser.default_device,h=v.store.getState().currentUser,q=h.endpoints,N=h.username,I=function(){if(!f||!N)return!1;var e=Object.values(f).filter(function(e){return(null==e?void 0:e.username)===N});return null==e?void 0:e.some(function(e){var n=null==q?void 0:q.extension.find(function(n){return n.id===(null==e?void 0:e.exten)});return"nethlink"===(null==n?void 0:n.type)&&"offline"!==(null==e?void 0:e.status)})};switch(n.status){case"ringing":if(function(e){var n=v.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;var T=_(t),D=j(t,T);U(t),a(t),function(e){if(e&&"in"===e.direction){var n=(e.counterpartNum||"").trim();if(!(n.length<3)){var t=(e.counterpartName||"").trim();if(!t||"<unknown>"===t||t===n){var r=v.store.getState().users.extensions;if(!(r&&r[n]||S.isFromStreaming(n))){var i=w(n);R.current.has(i)||e.id&&L.current.has(e.id)||(e.id&&(L.current.size>500&&L.current.clear(),L.current.add(e.id)),o.searchPhonebook(1,n,"").then(function(e){var n=((null==e?void 0:e.rows)||[]).find(function(e){return[e.extension,e.workphone,e.homephone,e.cellphone,e.fax].some(function(e){var n=w(e);return n.length>0&&(n===i||n.endsWith(i)||i.endsWith(n))})}),t=((null==n?void 0:n.name)||(null==n?void 0:n.company)||"").trim();if(t){R.current.set(i,t);var r=v.store.getState().currentCall;w(r.number)===i&&E.currentCall.updateCurrentCall({displayName:t})}}).catch(function(){}))}}}}}(t),("mobile"===x&&I()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!I()||!I()&&"physical"===(null==g?void 0:g.type)))&&(E.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:C(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(D.queueId||D.queueName||D.queueNumber),queueId:D.queueId,queueName:D.queueName,queueNumber:D.queueNumber,queuePosition:D.queuePosition,queueWaitingTime:D.queueWaitingTime,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",ownerExtension:t.owner}),v.store.dispatch.island.setIslandView("call")),A.current||(A.current=!0,u.getCurrentUserInfo().then(function(n){n&&(E.currentUser.updateCurrentUser(n),s.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?E.paramUrl.setOpenParamUrlType(n.settings.open_param_url):E.paramUrl.setOpenParamUrlType("never"))}).catch(function(e){console.error("Error getting current user info:",e)}).finally(function(){setTimeout(function(){A.current=!1},100)}));var P=v.store.getState().paramUrl.openParamUrlType,O=v.store.getState().island.urlOpened;if("ringing"===P&&!O){var F=y.isFromTrunk(t.counterpartNum);v.store.dispatch.paramUrl.setThroughTrunk(F),v.store.dispatch.island.setUrlOpened(!1),s.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:C(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:F,direction:t.direction,connected:t.connected})}break;case"busy":if(U(t),a(t),"mobile"===x&&I()||"desktop"===x&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!I()||!I()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)E.currentCall.updateCurrentCall({conversationId:t.id,displayName:C(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(f&&f[t.counterpartNum]&&f[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{}}),E.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),E.currentCall.addTransferCalls({type:"transferred",displayName:C(t),number:"".concat(t.counterpartNum),startTime:"".concat(b.getTimestampInSeconds())}),v.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout(function(){E.island.setIslandView("streamingAnswer")},200),m.isPhysical()&&function(e){E.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),s.eventDispatch("phone-island-call-answered",{}),v.store.dispatch.player.stopAudioPlayer(),v.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===p&&c&&E.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)E.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(c&&!l){var V=d.find(function(e){return e.number===t.counterpartNum});!t.connected&&V&&(E.currentCall.updateCurrentCall({transferring:!1}),s.eventDispatch("phone-island-call-transfer-failed",{}),E.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&E.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&E.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:i.getDisplayName(t),number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(f&&f[null==t?void 0:t.counterpartNum]&&f[null==t?void 0:t.counterpartNum].username)||""})}break;case"onhold":U(t);var M=t.counterpartName,Q=t.counterpartNum,W=t.startTime;c&&Q&&M&&"<unknown>"!==M&&(E.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:Q,startTime:"".concat(b.getTimestampInSeconds())}),E.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:Q,startTime:"".concat(W/1e3),conversationId:t.id}),E.island.setIslandView("call"));break;case"busy_ringing":s.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&k.userTotallyFree()&&(U(null),E.player.stopAudioPlayer(),E.currentCall.reset(),E.listen.reset(),E.physicalRecorder.setRecordingTempVariable(!1),E.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(I)&&(n.path="/api/ws"),O.current=t.io("https://"+N,n),E.websocket.update({socket:O.current}),O.current.on("connect",function(){console.debug("Socket connected sid: ".concat(O.current.id)),s.eventDispatch("phone-island-socket-connected",{})}),O.current.on("disconnect",function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?s.eventDispatch("phone-island-server-disconnected",{}):s.eventDispatch("phone-island-socket-disconnected",{})}),O.current.io.on("error",function(e){console.debug("Socket error: ",e)}),O.current.on("connect_error",function(e){console.debug("Socket connect_error: ",e)}),O.current.io.on("reconnect",function(e){F.current=0,s.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(O.current.id,")"))}),O.current.io.on("reconnect_attempt",function(e){console.debug("Socket reconnect_attempt ".concat(e))}),O.current.io.on("reconnect_error",function(e){console.debug("Socket reconnect_error: ",e)}),O.current.io.on("reconnect_failed",function(){console.debug("Socket reconnect_failed")}),O.current.on("connect",function(){console.debug("Socket on: "+N+" is connected!"),O.current.emit("login",{accessKeyId:"".concat(I),token:T,uaType:x})}),O.current.on("authe_ok",function(){console.debug("Socket authentication success!"),s.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval(function(){O.current.volatile.emit("ping",l.withTimeout(function(){F.current=0,setTimeout(function(){E.alerts.removeAlert("socket_down"),s.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),s.eventDispatch("phone-island-socket-disconnected-popup-close",{})},0)},function(){F.current++,console.debug("Socket ping timeout (".concat(F.current,"/").concat(3,"), connected: ").concat(O.current.connected)),setTimeout(function(){var e,n,t=O.current.connected&&F.current>=3;if(!O.current.connected||t){var r=v.store.getState().webrtc.sipcall,i=v.store.getState().currentCall,o=i.accepted,u=i.outgoing,c=null===(n=null===(e=null==r?void 0:r.webrtcStuff)||void 0===e?void 0:e.pc)||void 0===n?void 0:n.iceConnectionState;if((o||u)&&("connected"===c||"completed"===c))return void console.debug("Socket unreachable but active call with ICE connected - skipping socket_down alert",{iceState:c,accepted:o,outgoing:u,isStaleConnection:t,timestamp:(new Date).toISOString()});t&&(console.warn("Stale socket connection detected - forcing reconnection"),O.current.disconnect(),O.current.connect()),E.alerts.setAlert("socket_down"),s.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}},0)},5e3))},5e3)}),O.current.on("userMainPresenceUpdate",function(n){v.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),h.dispatchMainPresence(n)}),O.current.on("extenHangup",function(e){var n=v.store.getState().currentUser,t=n.endpoints,r=n.username,i=v.store.getState().conference,o=i.isActive,u=i.conferenceStartedFrom,a=v.store.getState().island,l=a.view,d=a.previewCallFromMobileOrNethlink,p=(null==t?void 0:t.extension)||[],m=p.map(function(e){return e.id}),f=null==e?void 0:e.callerNum;!m.includes(f)&&m.includes(null==e?void 0:e.channelExten)&&(f=null==e?void 0:e.channelExten);var g=p.find(function(n){return n.id===e.callerNum}),h=null==g?void 0:g.type,b=K(f).conversation,k=D(b),S=W(b),q=(null==b?void 0:b.connected)||!1;if(S&&k&&q&&(s.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:S}),f&&M.current.delete(f)),"normal_clearing"===e.cause&&("physical"===h||"mobile"===h)||"normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)&&d||"user_busy"===(null==e?void 0:e.cause)||"not_defined"===(null==e?void 0:e.cause)||"call_rejected"===(null==e?void 0:e.cause)||"interworking"===(null==e?void 0:e.cause)?(setTimeout(function(){v.store.dispatch.island.toggleAvoidToShow(!1),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)},500),o&&u!==r&&v.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&u===r?setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):"normal_clearing"!==e.cause&&"user_busy"!==(null==e?void 0:e.cause)&&"not_defined"!==(null==e?void 0:e.cause)&&"call_rejected"!==(null==e?void 0:e.cause)||"webrtc"!==h&&"nethlink"!==h||!o||u===r||v.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&u===r){var y=v.store.getState().conference,w=y.usersList,C=y.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0;_||N?setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):v.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&u===r&&"waitingConference"!==l&&setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),"user_busy"===(null==e?void 0:e.cause)){var I=v.store.getState().currentUser,T=I.endpoints,j=I.username,U=((null==T?void 0:T.extension)||[]).map(function(e){return e.id}),x=v.store.getState().currentCall,E=x.incoming,P=x.accepted,O=x.transferring,A=v.store.getState().conference,F=A.isActive,V=A.conferenceStartedFrom;!(E&&e.callerNum&&U.includes(e.callerNum))&&(!P||F||O)&&(v.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout(function(){v.store.dispatch.player.stopAudioPlayer()},4e3),setTimeout(function(){v.store.dispatch.player.updateStartAudioPlayer({src:c.default,loop:!0}),v.store.dispatch.island.setIslandView("operatorBusy")},600),F&&V===j&&setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var R=v.store.getState().conference,L=R.isActive,Q=R.conferenceStartedFrom,B=v.store.getState().currentUser.username;if(L&&Q===B){var z=v.store.getState().conference;w=z.usersList,C=z.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0,_||N?(setTimeout(function(){s.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),C&&C[e.callerNum]&&v.store.dispatch.conference.removePendingUser(e.callerNum)):v.store.dispatch.conference.resetConference()}}}),O.current.on("extenConnected",function(e){var n=v.store.getState().currentUser,t=n.default_device,r=n.endpoints,i=((null==r?void 0:r.extension)||[]).find(function(n){return n.id===e.extenConnected}),o=null==i?void 0:i.type;(("webrtc"===(null==t?void 0:t.type)||"nethlink"===(null==t?void 0:t.type))&&o&&("mobile"===o||"physical"===o)||"physical"===(null==t?void 0:t.type)&&o&&"physical"!==o)&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),s.eventDispatch("phone-island-call-answered",{extensionType:o}))}),O.current.on("extenUpdate",function(e){var n,t,r;E.users.updateExtension(e);var i=v.store.getState().users.extensions,o={},u=v.store.getState().currentUser;for(var c in i){var a=i[c].username,s=i[c].exten;o[a]||(o[a]=[]),o[a].push(s)}var l,d,p=o[e.username],m=Object.keys(e.conversations||{}),g=e.username===I,b=(null===(n=e.conversations)||void 0===n?void 0:n[m[0]])||{};g&&(l=e.exten,d=e.conversations,l&&Object.values(d||{}).forEach(function(e){B(e)&&M.current.set(l,{conversation:e,cachedAt:Date.now()})}));var k=!1;if((null==e?void 0:e.username)===I&&!f.isEmpty(b)&&(null==b?void 0:b.owner)){var S=null===(r=null===(t=null==u?void 0:u.endpoints)||void 0===t?void 0:t.extension)||void 0===r?void 0:r.find(function(e){return e.id===b.owner});S&&"mobile"===S.type&&(k=!0)}if(h.dispatchExtensions(e),f.isEmpty(b)){var q=null==p?void 0:p.some(function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!f.isEmpty(t)});q||h.dispatchConversations(e)}else k||h.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===I&&(v.store.dispatch.island.toggleAvoidToShow(!0),v.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===I&&(z(e,b),E.currentUser.updateConversations(e))}),O.current.on("queueUpdate",function(e){E.queue.updateQueue(e);var n,t,r,i=(n=v.store.getState().currentUser.conversations,t=v.store.getState().currentCall.conversationId,r=null,Object.values(n||{}).forEach(function(e){Object.values(e||{}).forEach(function(e){(null==r?void 0:r.id)&&r.id===t||(t&&e.id===t||!r||e.connected&&!r.connected||e.connected===r.connected&&e.startTime>r.startTime)&&(r=e)})}),r);i&&U(i),h.dispatchQueueUpdate(e)}),O.current.on("queueMemberUpdate",function(e){E.queue.updateQueueMember(e),h.dispatchQueueMemberUpdate(e)}),O.current.on("takeOver",function(){h.dispatchAlreadyLogin()}),O.current.on("serverReloaded",function(){h.dispatchServerReload()}),O.current.on("parkingUpdate",function(e){h.dispatchParkingUpdate(e)}),O.current.on("actionNethLink",function(e,n){h.dispatchUrlCall(e,n)}),O.current.on("satellite/summary",function(e){var n=(null==e?void 0:e.uniqueid)||(null==e?void 0:e.uniqueId),t=(null==e?void 0:e.linkedid)||(null==e?void 0:e.linkedId);n&&d.dispatchSummaryReady({linkedid:t,uniqueid:n,display_name:null==e?void 0:e.display_name,display_number:null==e?void 0:e.display_number,source:"socket"})}),O.current.on("message",function(e){switch(e.message){case"videoCallStart":var n=v.store.getState(),t=n.currentCall,r=t.incoming,i=t.outgoing,o=t.accepted,u=n.currentUser.default_device,c=n.island,a=c.isFromStreaming,s=c.view;("webrtc"===(null==u?void 0:u.type)||"nethlink"===(null==u?void 0:u.type))&&(r||i||o)&&!a&&"video"!==s&&(E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video")),h.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":E.island.toggleSideViewVisible(!1),E.island.toggleTranscriptionViewVisible(!1),E.island.setIslandView("video"),E.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}}),O.current.on("updateDefaultDevice",function(n){h.dispatchDefaultDeviceUpdate(n);var t=v.store.getState().users.extensions,r=v.store.getState().currentUser.endpoints;if(t&&r){var i=Object.values(t).filter(function(e){return(null==e?void 0:e.exten)===n});if(0!==i.length){var o=i[0],u=r.extension.find(function(e){return e.id===o.exten});u&&(o=e.__assign(e.__assign({},o),{type:u.type})),v.store.dispatch.currentUser.updateCurrentDefaultDevice(o),p.checkMediaPermissions()}}}),O.current.on("confBridgeUpdate",function(n){if(n&&(null==n?void 0:n.users)){var t=null==n?void 0:n.id,r=null==n?void 0:n.users,i=v.store.getState().conference.usersList,o=e.__assign({},r);i&&Object.keys(o).forEach(function(n){i[n]&&(o[n]=e.__assign(e.__assign({},o[n]),{muted:i[n].muted}))}),v.store.dispatch.conference.updateConferenceUsersList(o),v.store.dispatch.conference.updateConferenceId(t)}}),O.current.on("confBridgeEnd",function(e){e&&(null==e?void 0:e.id)&&(v.store.dispatch.conference.resetConference(),s.eventDispatch("phone-island-conference-finished",{}))}),O.current.on("callWebrtc",function(e){s.eventDispatch("phone-island-call-start",{number:e})}),O.current.on("newVoiceMessageCounter",function(e){s.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})}),O.current.on("streamingSourceUpdate",function(e){s.eventDispatch("phone-island-streaming-information-received",{res:e});var n=e.streaming||e.res&&e.res.streaming;if(n){var t=n.source,r=n.image;t&&r&&E.streaming.updateSourceImage({source:t,image:r})}}),O.current.on("satellite/transcription",function(e){var n=Q.current,t=null==e?void 0:e.uniqueid,r=null==e?void 0:e.linkedid;if(n.linkedid&&t){var i=function(e){return null!=e&&(e===n.linkedid||e===n.uniqueid)};if(!i(t)&&!i(r))return}s.eventDispatch("phone-island-conversation-transcription",e)}),function(){clearInterval(P.current),R.current.clear(),L.current.clear(),O.current.close()}},[N,I,T,x,E]),n.useEffect(function(){var e,n;if(j){console.info("Socket reload requested");var t=v.store.getState().alerts.data,r=v.store.getState().island.forceReload,i=(null===(e=t.socket_down)||void 0===e?void 0:e.active)||!1,o=!(null===(n=O.current)||void 0===n?void 0:n.connected);i||o||r?(console.info(r?"Force reload requested, performing Socket reconnection":"Socket down detected (alert active or disconnected), performing reconnection"),P.current&&(clearInterval(P.current),P.current=null),setTimeout(function(){O.current.disconnect(),O.current.connect(),U()},100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}},[j]),_.default.createElement(_.default.Fragment,null,D)};
2
2
  //# sourceMappingURL=Socket.js.map