@nethesis/phone-island 1.0.15-dev.3 → 1.0.15-dev.4

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 (272) hide show
  1. package/dist/components/AudioPlayerView/index.js +1 -1
  2. package/dist/components/AudioPlayerView/index.js.map +1 -1
  3. package/dist/components/CallView/Actions.js.map +1 -1
  4. package/dist/components/RecorderView/index.js +1 -1
  5. package/dist/components/RecorderView/index.js.map +1 -1
  6. package/dist/components/SideView/SideView.js.map +1 -1
  7. package/dist/components/Socket.js +1 -1
  8. package/dist/components/Socket.js.map +1 -1
  9. package/dist/components/StreamingAnswerView/index.js.map +1 -1
  10. package/dist/components/TranscriptionView/TranscriptionView.js +1 -1
  11. package/dist/components/TranscriptionView/TranscriptionView.js.map +1 -1
  12. package/dist/components/VideoView/index.js.map +1 -1
  13. package/dist/components/WebRTC.js +1 -1
  14. package/dist/components/WebRTC.js.map +1 -1
  15. package/dist/events/RecorderEvents.js +1 -1
  16. package/dist/events/RecorderEvents.js.map +1 -1
  17. package/dist/index.css +1 -1
  18. package/dist/lib/devices/devices.js +1 -1
  19. package/dist/lib/devices/devices.js.map +1 -1
  20. package/dist/models/motions.js.map +1 -1
  21. package/dist/models/webrtc.js.map +1 -1
  22. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js +1 -1
  23. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js.map +1 -1
  24. package/dist/node_modules/@headlessui/react/dist/components/label/label.js +1 -1
  25. package/dist/node_modules/@headlessui/react/dist/components/label/label.js.map +1 -1
  26. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js +1 -1
  27. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js.map +1 -1
  28. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js +1 -1
  29. package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js.map +1 -1
  30. package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js +1 -1
  31. package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js.map +1 -1
  32. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js +1 -1
  33. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js.map +1 -1
  34. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js +1 -1
  35. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +1 -1
  36. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js +1 -1
  37. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js.map +1 -1
  38. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js +1 -1
  39. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js.map +1 -1
  40. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js +1 -1
  41. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js.map +1 -1
  42. package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js +1 -1
  43. package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js.map +1 -1
  44. package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js +1 -1
  45. package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js.map +1 -1
  46. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +1 -1
  47. package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +1 -1
  48. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +1 -1
  49. package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +1 -1
  50. package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js +1 -1
  51. package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js.map +1 -1
  52. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +1 -1
  53. package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +1 -1
  54. package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js +1 -1
  55. package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js.map +1 -1
  56. package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js +1 -1
  57. package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js.map +1 -1
  58. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +1 -1
  59. package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +1 -1
  60. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +1 -1
  61. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +1 -1
  62. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +1 -1
  63. package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +1 -1
  64. package/dist/node_modules/@headlessui/react/dist/internal/floating.js +1 -1
  65. package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +1 -1
  66. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js +1 -1
  67. package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js.map +1 -1
  68. package/dist/node_modules/@headlessui/react/dist/machine.js +1 -1
  69. package/dist/node_modules/@headlessui/react/dist/machine.js.map +1 -1
  70. package/dist/node_modules/@headlessui/react/dist/react-glue.js +1 -1
  71. package/dist/node_modules/@headlessui/react/dist/react-glue.js.map +1 -1
  72. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +1 -1
  73. package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +1 -1
  74. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +1 -1
  75. package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +1 -1
  76. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +1 -1
  77. package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +1 -1
  78. package/dist/node_modules/@headlessui/react/dist/utils/match.js +1 -1
  79. package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +1 -1
  80. package/dist/node_modules/@headlessui/react/dist/utils/render.js +1 -1
  81. package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +1 -1
  82. package/dist/node_modules/@headlessui/react/dist/utils/store.js +1 -1
  83. package/dist/node_modules/@headlessui/react/dist/utils/store.js.map +1 -1
  84. package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js +1 -1
  85. package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js.map +1 -1
  86. package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js +1 -1
  87. package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js.map +1 -1
  88. package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.mjs.js +1 -1
  89. package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.mjs.js.map +1 -1
  90. package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js +1 -1
  91. package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js.map +1 -1
  92. package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js +1 -1
  93. package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js.map +1 -1
  94. package/dist/node_modules/engine.io-client/build/esm/socket.js +1 -1
  95. package/dist/node_modules/engine.io-client/build/esm/socket.js.map +1 -1
  96. package/dist/node_modules/engine.io-client/build/esm/transport.js +1 -1
  97. package/dist/node_modules/engine.io-client/build/esm/transport.js.map +1 -1
  98. package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +1 -1
  99. package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js.map +1 -1
  100. package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js +1 -1
  101. package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js.map +1 -1
  102. package/dist/node_modules/engine.io-client/build/esm/util.js +1 -1
  103. package/dist/node_modules/engine.io-client/build/esm/util.js.map +1 -1
  104. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +1 -1
  105. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js.map +1 -1
  106. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js +1 -1
  107. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js.map +1 -1
  108. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js +1 -1
  109. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js.map +1 -1
  110. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js +1 -1
  111. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js.map +1 -1
  112. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js +1 -1
  113. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js.map +1 -1
  114. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js +1 -1
  115. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js.map +1 -1
  116. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js +1 -1
  117. package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs.js.map +1 -1
  118. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js +1 -1
  119. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js.map +1 -1
  120. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js +1 -1
  121. package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js.map +1 -1
  122. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js +1 -1
  123. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js.map +1 -1
  124. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs.js +1 -1
  125. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs.js.map +1 -1
  126. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js +1 -1
  127. package/dist/node_modules/framer-motion/dist/es/motion/index.mjs.js.map +1 -1
  128. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs.js +1 -1
  129. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs.js.map +1 -1
  130. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js +1 -1
  131. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js.map +1 -1
  132. package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js +1 -1
  133. package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js.map +1 -1
  134. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js +1 -1
  135. package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js.map +1 -1
  136. package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js +1 -1
  137. package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js.map +1 -1
  138. package/dist/node_modules/js-base64/base64.mjs.js +1 -1
  139. package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
  140. package/dist/node_modules/moment/moment.js +2 -2
  141. package/dist/node_modules/moment/moment.js.map +1 -1
  142. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js +1 -1
  143. package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js.map +1 -1
  144. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js +1 -1
  145. package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js.map +1 -1
  146. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js +1 -1
  147. package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js.map +1 -1
  148. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js +1 -1
  149. package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js.map +1 -1
  150. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js +1 -1
  151. package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js.map +1 -1
  152. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js +1 -1
  153. package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js.map +1 -1
  154. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js +1 -1
  155. package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js.map +1 -1
  156. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js +1 -1
  157. package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs.js.map +1 -1
  158. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js +1 -1
  159. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js.map +1 -1
  160. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js +1 -1
  161. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js.map +1 -1
  162. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js +1 -1
  163. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js.map +1 -1
  164. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js +1 -1
  165. package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js.map +1 -1
  166. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js +1 -1
  167. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js.map +1 -1
  168. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js +1 -1
  169. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js.map +1 -1
  170. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js +1 -1
  171. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs.js.map +1 -1
  172. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js +1 -1
  173. package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js.map +1 -1
  174. package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js +1 -1
  175. package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js.map +1 -1
  176. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js +1 -1
  177. package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs.js.map +1 -1
  178. package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs.js +1 -1
  179. package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs.js.map +1 -1
  180. package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs.js +1 -1
  181. package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs.js.map +1 -1
  182. package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs.js +1 -1
  183. package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs.js.map +1 -1
  184. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs.js +1 -1
  185. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs.js.map +1 -1
  186. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs.js +1 -1
  187. package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs.js.map +1 -1
  188. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js +1 -1
  189. package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.mjs.js.map +1 -1
  190. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js +1 -1
  191. package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js.map +1 -1
  192. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js +1 -1
  193. package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js.map +1 -1
  194. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js +1 -1
  195. package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js.map +1 -1
  196. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js +1 -1
  197. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js.map +1 -1
  198. package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs.js +1 -1
  199. package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs.js.map +1 -1
  200. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js +1 -1
  201. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs.js.map +1 -1
  202. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js +1 -1
  203. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js.map +1 -1
  204. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js +1 -1
  205. package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs.js.map +1 -1
  206. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js +1 -1
  207. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js.map +1 -1
  208. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs.js +1 -1
  209. package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs.js.map +1 -1
  210. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js +1 -1
  211. package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs.js.map +1 -1
  212. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js +1 -1
  213. package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js.map +1 -1
  214. package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js +1 -1
  215. package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js.map +1 -1
  216. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js +1 -1
  217. package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js.map +1 -1
  218. package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.mjs.js +1 -1
  219. package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.mjs.js.map +1 -1
  220. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js +1 -1
  221. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs.js.map +1 -1
  222. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs.js +1 -1
  223. package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs.js.map +1 -1
  224. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js +1 -1
  225. package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js.map +1 -1
  226. package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs.js +1 -1
  227. package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs.js.map +1 -1
  228. package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js +1 -1
  229. package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js.map +1 -1
  230. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js +1 -1
  231. package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js.map +1 -1
  232. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js +1 -1
  233. package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js.map +1 -1
  234. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js +1 -1
  235. package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js.map +1 -1
  236. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs.js +1 -1
  237. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs.js.map +1 -1
  238. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs.js +1 -1
  239. package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs.js.map +1 -1
  240. package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs.js +1 -1
  241. package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs.js.map +1 -1
  242. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js +1 -1
  243. package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js.map +1 -1
  244. package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js +1 -1
  245. package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js.map +1 -1
  246. package/dist/node_modules/react-redux/es/components/Provider.js +1 -1
  247. package/dist/node_modules/react-redux/es/components/Provider.js.map +1 -1
  248. package/dist/node_modules/react-redux/es/hooks/useDispatch.js +1 -1
  249. package/dist/node_modules/react-redux/es/hooks/useDispatch.js.map +1 -1
  250. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js +1 -1
  251. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js.map +1 -1
  252. package/dist/node_modules/react-redux/es/hooks/useSelector.js +1 -1
  253. package/dist/node_modules/react-redux/es/hooks/useSelector.js.map +1 -1
  254. package/dist/node_modules/react-redux/es/hooks/useStore.js +1 -1
  255. package/dist/node_modules/react-redux/es/hooks/useStore.js.map +1 -1
  256. package/dist/node_modules/react-redux/node_modules/react-is/index.js +1 -1
  257. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js +1 -1
  258. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js.map +1 -1
  259. package/dist/node_modules/socket.io-client/build/esm/socket.js +1 -1
  260. package/dist/node_modules/socket.io-client/build/esm/socket.js.map +1 -1
  261. package/dist/node_modules/socket.io-client/build/esm/url.js +1 -1
  262. package/dist/node_modules/socket.io-client/build/esm/url.js.map +1 -1
  263. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -1
  264. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +1 -1
  265. package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
  266. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js +1 -1
  267. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js.map +1 -1
  268. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js +1 -1
  269. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js.map +1 -1
  270. package/dist/package.json.js +1 -1
  271. package/dist/services/astproxy.js.map +1 -1
  272. package/package.json +7 -22
@@ -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("./Avatar.js"),r=require("./Progress.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 i=require("./PlayerFooterActions.js"),o=require("../Button.js"),a=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js");var l=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),n=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),u=require("../../node_modules/react-redux/es/hooks/useSelector.js"),d=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=c(e),m=function(){var e=u.useSelector(function(e){return e.player}),c=e.audioPlayerTrackType,m=e.audioPlayerTrackName;e.audioPlayer;var f=e.audioPlayerPlaying,y=u.useSelector(function(e){return e.island}).isOpen;function j(e){e.stopPropagation()}var v=s.useTranslation().t,x=d.useDispatch();return p.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},p.default.createElement("div",{className:"pi-flex pi-gap-4"},p.default.createElement(t.Avatar,{type:c}),p.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},p.default.createElement("div",{style:{width:y?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},m)),p.default.createElement(o.Button,{onClick:function(){return f&&(x.player.stopAudioPlayer(),a.eventDispatch("phone-island-audio-player-close",{})),void x.island.resetPlayerClose()},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":v("Common.Close")||""},p.default.createElement(l.FontAwesomeIcon,{icon:n.faXmark,className:"pi-w-5 pi-h-5"}))),y&&p.default.createElement("div",{onClick:j,onMouseDown:j,onTouchStart:j},p.default.createElement(r.Progress,{isPlayer:!0}),p.default.createElement(i.PlayerFooterActions,null)))};exports.KeypadView=m,exports.default=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("./Avatar.js"),r=require("./Progress.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 i=require("./PlayerFooterActions.js"),o=require("../Button.js"),a=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../store/index.js");var l=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),n=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),u=require("../../node_modules/react-redux/es/hooks/useSelector.js"),d=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=c(e),m=function(){var e=u.useSelector(function(e){return e.player}),c=e.audioPlayerTrackType,m=e.audioPlayerTrackName,f=e.audioPlayerPlaying,j=u.useSelector(function(e){return e.island}).isOpen;function y(e){e.stopPropagation()}var v=s.useTranslation().t,x=d.useDispatch();return p.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},p.default.createElement("div",{className:"pi-flex pi-gap-4"},p.default.createElement(t.Avatar,{type:c}),p.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},p.default.createElement("div",{style:{width:j?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},m)),p.default.createElement(o.Button,{onClick:function(){return f&&(x.player.stopAudioPlayer(),a.eventDispatch("phone-island-audio-player-close",{})),void x.island.resetPlayerClose()},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":v("Common.Close")||""},p.default.createElement(l.FontAwesomeIcon,{icon:n.faXmark,className:"pi-w-5 pi-h-5"}))),j&&p.default.createElement("div",{onClick:y,onMouseDown:y,onTouchStart:y},p.default.createElement(r.Progress,{isPlayer:!0}),p.default.createElement(i.PlayerFooterActions,null)))};exports.KeypadView=m,exports.default=m;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2025 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 { Avatar } from './Avatar'\nimport Progress from './Progress'\nimport { useTranslation } from 'react-i18next'\nimport PlayerFooterActions from './PlayerFooterActions'\nimport { Button } from '../Button'\nimport { eventDispatch } from '../../utils'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faXmark } from '@fortawesome/free-solid-svg-icons'\n\nexport const KeypadView: FC<KeypadViewTypes> = () => {\n const { audioPlayerTrackType, audioPlayerTrackName, audioPlayer, audioPlayerPlaying } =\n useSelector((state: RootState) => state.player)\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n function stopPropagation(e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>) {\n e.stopPropagation()\n }\n\n const { t } = useTranslation()\n\n // Initialize state dispatch\n const dispatch = useDispatch<Dispatch>()\n\n function playerClose() {\n if (audioPlayerPlaying) {\n dispatch.player.stopAudioPlayer()\n eventDispatch('phone-island-audio-player-close', {})\n }\n dispatch.island.resetPlayerClose()\n }\n\n return (\n <div className='pi-flex pi-gap-7 pi-flex-col'>\n <div className='pi-flex pi-gap-4'>\n <Avatar type={audioPlayerTrackType} />\n <div className='pi-flex pi-items-center pi-w-full'>\n <div\n style={{\n width: isOpen ? '202px' : '60px',\n }}\n className={`pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block`}\n >\n {audioPlayerTrackName}\n </div>\n </div>\n <Button\n onClick={() => playerClose()}\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 {isOpen && (\n <div onClick={stopPropagation} onMouseDown={stopPropagation} onTouchStart={stopPropagation}>\n {/* add prop to indicate that is audioplayer view */}\n <Progress isPlayer />\n <PlayerFooterActions />\n </div>\n )}\n {/* Buttons tooltips */}\n </div>\n )\n}\n\nexport default KeypadView\n\nexport interface KeypadViewTypes {}\n"],"names":["KeypadView","_a","useSelector","state","player","audioPlayerTrackType","audioPlayerTrackName","audioPlayer","audioPlayerPlaying","isOpen","island","stopPropagation","e","t","useTranslation","dispatch","useDispatch","React","createElement","className","Avatar","type","style","width","Button","onClick","stopAudioPlayer","eventDispatch","resetPlayerClose","variant","FontAwesomeIcon","icon","faXmark","onMouseDown","onTouchStart","Progress","isPlayer","PlayerFooterActions"],"mappings":"2wCAeaA,EAAkC,WACvC,IAAAC,EACJC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,SADlCC,EAAoBJ,EAAAI,qBAAEC,EAAoBL,EAAAK,qBAAaL,EAAAM,YAAA,IAAEC,EAAkBP,EAAAO,mBAE3EC,EAAWP,cAAY,SAACC,GAAqB,OAAAA,EAAMO,gBAE3D,SAASC,EAAgBC,GACvBA,EAAED,iBACH,CAEO,IAAAE,EAAMC,qBAGRC,EAAWC,EAAAA,cAUjB,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,oBACbF,EAAAA,QAAAC,cAACE,EAAAA,OAAM,CAACC,KAAMhB,IACdY,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,qCACbF,EAAAA,QAAAC,cAAA,MAAA,CACEI,MAAO,CACLC,MAAOd,EAAS,QAAU,QAE5BU,UAAW,yFAEVb,IAGLW,EAAC,QAAAC,cAAAM,UACCC,QAAS,WAAM,OAtBjBjB,IACFO,EAASX,OAAOsB,kBAChBC,gBAAc,kCAAmC,CAAA,SAEnDZ,EAASL,OAAOkB,kBAkBkB,EAC5BC,QAAQ,wCACQ,yBAAwB,uBAClBhB,EAAE,iBAAmB,IAE3CI,UAACC,cAAAY,EAAAA,gBAAgB,CAAAC,KAAMC,EAAAA,QAASb,UAAU,oBAG7CV,GACCQ,EAAK,QAAAC,cAAA,MAAA,CAAAO,QAASd,EAAiBsB,YAAatB,EAAiBuB,aAAcvB,GAEzEM,EAAAA,QAACC,cAAAiB,EAAAA,SAAS,CAAAC,UAAW,IACrBnB,EAAAA,QAAAC,cAACmB,EAAAA,oBAAsB,OAMjC"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2025 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 { Avatar } from './Avatar'\nimport Progress from './Progress'\nimport { useTranslation } from 'react-i18next'\nimport PlayerFooterActions from './PlayerFooterActions'\nimport { Button } from '../Button'\nimport { eventDispatch } from '../../utils'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faXmark } from '@fortawesome/free-solid-svg-icons'\n\nexport const KeypadView: FC<KeypadViewTypes> = () => {\n const { audioPlayerTrackType, audioPlayerTrackName, audioPlayerPlaying } =\n useSelector((state: RootState) => state.player)\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n function stopPropagation(e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>) {\n e.stopPropagation()\n }\n\n const { t } = useTranslation()\n\n // Initialize state dispatch\n const dispatch = useDispatch<Dispatch>()\n\n function playerClose() {\n if (audioPlayerPlaying) {\n dispatch.player.stopAudioPlayer()\n eventDispatch('phone-island-audio-player-close', {})\n }\n dispatch.island.resetPlayerClose()\n }\n\n return (\n <div className='pi-flex pi-gap-7 pi-flex-col'>\n <div className='pi-flex pi-gap-4'>\n <Avatar type={audioPlayerTrackType} />\n <div className='pi-flex pi-items-center pi-w-full'>\n <div\n style={{\n width: isOpen ? '202px' : '60px',\n }}\n className={`pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block`}\n >\n {audioPlayerTrackName}\n </div>\n </div>\n <Button\n onClick={() => playerClose()}\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 {isOpen && (\n <div onClick={stopPropagation} onMouseDown={stopPropagation} onTouchStart={stopPropagation}>\n {/* add prop to indicate that is audioplayer view */}\n <Progress isPlayer />\n <PlayerFooterActions />\n </div>\n )}\n {/* Buttons tooltips */}\n </div>\n )\n}\n\nexport default KeypadView\n\nexport interface KeypadViewTypes {}\n"],"names":["KeypadView","_a","useSelector","state","player","audioPlayerTrackType","audioPlayerTrackName","audioPlayerPlaying","isOpen","island","stopPropagation","e","t","useTranslation","dispatch","useDispatch","React","createElement","className","Avatar","type","style","width","Button","onClick","stopAudioPlayer","eventDispatch","resetPlayerClose","variant","FontAwesomeIcon","icon","faXmark","onMouseDown","onTouchStart","Progress","isPlayer","PlayerFooterActions"],"mappings":"2wCAeaA,EAAkC,WACvC,IAAAC,EACJC,EAAAA,YAAY,SAACC,GAAqB,OAAAA,EAAMC,SADlCC,EAAoBJ,EAAAI,qBAAEC,EAAoBL,EAAAK,qBAAEC,EAAkBN,EAAAM,mBAE9DC,EAAWN,cAAY,SAACC,GAAqB,OAAAA,EAAMM,gBAE3D,SAASC,EAAgBC,GACvBA,EAAED,iBACH,CAEO,IAAAE,EAAMC,qBAGRC,EAAWC,EAAAA,cAUjB,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,oBACbF,EAAAA,QAAAC,cAACE,EAAAA,OAAM,CAACC,KAAMf,IACdW,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,qCACbF,EAAAA,QAAAC,cAAA,MAAA,CACEI,MAAO,CACLC,MAAOd,EAAS,QAAU,QAE5BU,UAAW,yFAEVZ,IAGLU,EAAC,QAAAC,cAAAM,UACCC,QAAS,WAAM,OAtBjBjB,IACFO,EAASV,OAAOqB,kBAChBC,gBAAc,kCAAmC,CAAA,SAEnDZ,EAASL,OAAOkB,kBAkBkB,EAC5BC,QAAQ,wCACQ,yBAAwB,uBAClBhB,EAAE,iBAAmB,IAE3CI,UAACC,cAAAY,EAAAA,gBAAgB,CAAAC,KAAMC,EAAAA,QAASb,UAAU,oBAG7CV,GACCQ,EAAK,QAAAC,cAAA,MAAA,CAAAO,QAASd,EAAiBsB,YAAatB,EAAiBuB,aAAcvB,GAEzEM,EAAAA,QAACC,cAAAiB,EAAAA,SAAS,CAAAC,UAAW,IACrBnB,EAAAA,QAAAC,cAACmB,EAAAA,oBAAsB,OAMjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useEffect, useRef, useCallback } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n startConference,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faSquareParking,\n faUserPlus,\n faPlus,\n faAngleDown,\n faAngleUp,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faClose, faGridRound, faOpen } from '@nethesis/nethesis-solid-svg-icons'\nimport { RootState, Dispatch } from '../../store'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { sendDTMF } from '../../lib/webrtc/messages'\nimport { store } from '../../store'\nimport outgoingRingtone from '../../static/outgoing_ringtone'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport TransferButton from '../TransferButton'\nimport { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types'\n\ninterface ActionButtonProps {\n active: boolean\n onClick: () => void\n tooltipId: string\n tooltipContent: string\n icon: IconDefinition\n activeIcon?: IconDefinition\n}\n\nconst ActionButton: React.FC<ActionButtonProps> = React.memo(\n ({ active, onClick, tooltipId, tooltipContent, icon, activeIcon = icon }) => (\n <Button\n variant='default'\n active={active}\n onClick={onClick}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={active ? activeIcon : icon} />\n </Button>\n ),\n)\n\nconst Actions: FC = () => {\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const { paused, muted, parked, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const { view, actionsExpanded, sideViewIsVisible, transcriptionViewIsVisible } = useSelector(\n (state: RootState) => state.island,\n )\n const intrudeListenStatus = useSelector((state: RootState) => state.listen)\n const { isActive, conferenceStartedFrom } = useSelector((state: RootState) => state.conference)\n const { username, profile } = useSelector((state: RootState) => state?.currentUser)\n\n // Check if the actions should be expanded automatically\n const autoExpandedRef = useRef(false)\n // Check if the actions should be collapsed automatically\n const autoCollapsedRef = useRef(false)\n\n const isOwnerOfConference = useMemo(\n () => username !== '' && conferenceStartedFrom === username,\n [username, conferenceStartedFrom],\n )\n\n const shouldHideTransferButton = useMemo(\n () => isActive && !isOwnerOfConference,\n [isActive, isOwnerOfConference],\n )\n\n const shouldHideButtons = useMemo(\n () => intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen,\n [intrudeListenStatus],\n )\n\n const toggleMute = useCallback(() => {\n muted ? unmuteCurrentCall() : muteCurrentCall()\n }, [muted])\n\n const togglePause = useCallback(() => {\n paused ? unpauseCurrentCall() : pauseCurrentCall()\n }, [paused])\n\n const openKeypad = useCallback(() => {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-call-keypad-opened', {})\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const toggleActionsExpanded = useCallback(() => {\n const newState = !actionsExpanded\n dispatch.island.toggleActionsExpanded(newState)\n eventDispatch(`phone-island-call-actions-${newState ? 'opened' : 'closed'}`, {})\n if (!newState) {\n eventDispatch('phone-island-sideview-close', {})\n }\n }, [actionsExpanded, transcriptionViewIsVisible, dispatch.island])\n\n const toggleSideView = useCallback(() => {\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n } else {\n // When opening SideView, close TranscriptionView if it's open\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-sideview-open', {})\n }\n }, [sideViewIsVisible, transcriptionViewIsVisible])\n\n const transfer = useCallback(() => {\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-call-transfer-opened', {})\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const beginConference = useCallback(() => {\n eventDispatch('phone-island-conference-list-open', {})\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const addUserToConference = useCallback(async () => {\n dispatch.island.setIslandView('waitingConference')\n await startConference()\n }, [dispatch.island])\n\n const handleConferenceAction = useCallback(() => {\n isActive ? addUserToConference() : beginConference()\n }, [isActive, addUserToConference, beginConference])\n\n const shouldExpandActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n !actionsExpanded &&\n !autoExpandedRef.current &&\n isOwnerOfConference\n )\n }, [isActive, view, actionsExpanded, isOwnerOfConference])\n\n // Check if user is not the owner of the conference\n const shouldCollapseActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n actionsExpanded &&\n !autoCollapsedRef.current &&\n username !== '' &&\n !isOwnerOfConference\n )\n }, [isActive, view, actionsExpanded, username, isOwnerOfConference])\n\n // Automatically expand actions if the user has enabled conference\n useEffect(() => {\n if (shouldExpandActions) {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n autoExpandedRef.current = true\n }\n }, [shouldExpandActions, dispatch.island])\n\n // Automatically collapse actions if the user is not the owner of the conference\n useEffect(() => {\n if (shouldCollapseActions) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n autoCollapsedRef.current = true\n }\n }, [shouldCollapseActions, dispatch.island])\n\n const cancelTransfer = useCallback(() => {\n const sendDtmfFunc = isWebRTC() ? sendDTMF : sendPhysicalDTMF\n\n sendDtmfFunc('*')\n\n const { audioPlayerPlaying } = store.getState().player\n // Check if the local audio is already playing and start playing\n if (!audioPlayerPlaying) {\n dispatch.player.updateStartAudioPlayer({\n src: outgoingRingtone,\n loop: true,\n })\n }\n\n setTimeout(() => {\n sendDtmfFunc('1')\n dispatch.player.stopAudioPlayer()\n // The workarround to disable transfer because of the wrong conv.connection value from ws\n if (transferring) {\n setTimeout(() => {\n dispatch.currentCall.updateTransferring(false)\n }, 500)\n }\n\n eventDispatch('phone-island-call-transfer-canceled', {})\n }, 500)\n }, [transferring, dispatch.player, dispatch.currentCall])\n\n useEventListener('phone-island-call-keypad-open', openKeypad)\n useEventListener('phone-island-call-transfer-open', transfer)\n useEventListener('phone-island-call-transfer-cancel', cancelTransfer)\n useEventListener('phone-island-call-actions-open', () => {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n })\n useEventListener('phone-island-call-actions-close', () => {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n })\n\n const mainGridClassName = useMemo(() => {\n if (\n intrudeListenStatus?.isListen ||\n intrudeListenStatus?.isIntrude ||\n (isActive && !isOwnerOfConference)\n ) {\n if (intrudeListenStatus.isIntrude) {\n return 'pi-mb-6 pi-grid pi-grid-cols-1 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'\n }\n if (isActive && !isOwnerOfConference) {\n return 'pi-flex pi-items-center pi-justify-center pi-gap-4'\n }\n return 'pi-hidden'\n }\n return 'pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'\n }, [intrudeListenStatus, isActive, isOwnerOfConference])\n\n return (\n <>\n <div className={mainGridClassName}>\n {!shouldHideButtons && (\n <ActionButton\n active={paused}\n onClick={togglePause}\n tooltipId='tooltip-pause'\n tooltipContent={paused ? t('Tooltip.Play') : t('Tooltip.Pause')}\n icon={faPause}\n activeIcon={faPlay}\n />\n )}\n\n {!intrudeListenStatus?.isListen && (\n <ActionButton\n active={muted}\n onClick={toggleMute}\n tooltipId='tooltip-mute'\n tooltipContent={muted ? t('Tooltip.Unmute') : t('Tooltip.Mute')}\n icon={faMicrophone}\n activeIcon={faMicrophoneSlash}\n />\n )}\n\n {!shouldHideTransferButton && <TransferButton />}\n\n {!shouldHideButtons && !shouldHideTransferButton && (\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={toggleActionsExpanded}\n data-tooltip-id='tooltip-expand'\n data-tooltip-content={actionsExpanded ? t('Tooltip.Collapse') : t('Tooltip.Expand')}\n >\n <FontAwesomeIcon\n className='pi-h-6 pi-w-6'\n icon={actionsExpanded ? faAngleUp : faAngleDown}\n />\n </Button>\n )}\n </div>\n\n {/* Actions expanded section */}\n {actionsExpanded && (\n <div className='pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'>\n <ActionButton\n active={view === 'keypad'}\n onClick={openKeypad}\n tooltipId='tooltip-keyboard'\n tooltipContent={t('Tooltip.Keyboard')}\n icon={faGridRound}\n />\n\n <ActionButton\n active={parked}\n onClick={parkCurrentCall}\n tooltipId='tooltip-park'\n tooltipContent={t('Tooltip.Park')}\n icon={faSquareParking}\n />\n\n {profile?.macro_permissions?.settings?.permissions?.conference?.value && (\n <Button\n data-stop-propagation={true}\n variant='default'\n onClick={handleConferenceAction}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={\n isActive ? t('Tooltip.Conference') || '' : t('Tooltip.Add user to conference') || ''\n }\n >\n <FontAwesomeIcon icon={isActive ? faPlus : faUserPlus} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n\n <Button\n variant='default'\n onClick={toggleSideView}\n data-tooltip-id='tooltip-sideView'\n data-tooltip-content={t('Tooltip.Other actions') || ''}\n >\n <FontAwesomeIcon\n className='pi-h-6 pi-w-6'\n icon={sideViewIsVisible ? faClose : faOpen}\n />\n </Button>\n </div>\n )}\n {/* Buttons tooltips */}\n <CustomThemedTooltip id='tooltip-transfer' place='bottom' />\n <CustomThemedTooltip id='tooltip-pause' place='bottom' />\n <CustomThemedTooltip id='tooltip-mute' place='bottom' />\n <CustomThemedTooltip id='tooltip-expand' place='bottom' />\n <CustomThemedTooltip id='tooltip-keyboard' place='bottom' />\n <CustomThemedTooltip id='tooltip-conference' place='bottom' />\n <CustomThemedTooltip id='tooltip-park' place='bottom' />\n <CustomThemedTooltip id='tooltip-sideView' place='left' />\n </>\n )\n}\n\nexport default React.memo(Actions)\n"],"names":["ActionButton","React","memo","_a","active","onClick","tooltipId","tooltipContent","icon","_b","activeIcon","createElement","Button","variant","FontAwesomeIcon","className","Actions$1","t","useTranslation","dispatch","useDispatch","_e","useSelector","state","currentCall","paused","muted","parked","transferring","_f","island","view","actionsExpanded","sideViewIsVisible","transcriptionViewIsVisible","intrudeListenStatus","listen","_g","conference","isActive","conferenceStartedFrom","_h","currentUser","username","profile","autoExpandedRef","useRef","autoCollapsedRef","isOwnerOfConference","useMemo","shouldHideTransferButton","shouldHideButtons","isIntrude","isListen","toggleMute","useCallback","unmuteCurrentCall","muteCurrentCall","togglePause","unpauseCurrentCall","pauseCurrentCall","openKeypad","setIslandView","eventDispatch","toggleActionsExpanded","newState","concat","toggleSideView","transfer","beginConference","addUserToConference","__awaiter","startConference","sent","handleConferenceAction","shouldExpandActions","current","shouldCollapseActions","useEffect","cancelTransfer","sendDtmfFunc","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","useEventListener","mainGridClassName","Fragment","faPause","faPlay","faMicrophone","faMicrophoneSlash","TransferButton","faAngleUp","faAngleDown","faGridRound","parkCurrentCall","faSquareParking","_d","_c","macro_permissions","settings","permissions","value","faPlus","faUserPlus","faClose","faOpen","CustomThemedTooltip","id","place"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useEffect, useRef, useCallback } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n startConference,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faSquareParking,\n faUserPlus,\n faPlus,\n faAngleDown,\n faAngleUp,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faClose, faGridRound, faOpen } from '@nethesis/nethesis-solid-svg-icons'\nimport { RootState, Dispatch } from '../../store'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { sendDTMF } from '../../lib/webrtc/messages'\nimport { store } from '../../store'\nimport outgoingRingtone from '../../static/outgoing_ringtone'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport TransferButton from '../TransferButton'\nimport { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\n\ninterface ActionButtonProps {\n active: boolean\n onClick: () => void\n tooltipId: string\n tooltipContent: string\n icon: IconDefinition\n activeIcon?: IconDefinition\n}\n\nconst ActionButton: React.FC<ActionButtonProps> = React.memo(\n ({ active, onClick, tooltipId, tooltipContent, icon, activeIcon = icon }) => (\n <Button\n variant='default'\n active={active}\n onClick={onClick}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={active ? activeIcon : icon} />\n </Button>\n ),\n)\n\nconst Actions: FC = () => {\n const { t } = useTranslation()\n const dispatch = useDispatch<Dispatch>()\n\n const { paused, muted, parked, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const { view, actionsExpanded, sideViewIsVisible, transcriptionViewIsVisible } = useSelector(\n (state: RootState) => state.island,\n )\n const intrudeListenStatus = useSelector((state: RootState) => state.listen)\n const { isActive, conferenceStartedFrom } = useSelector((state: RootState) => state.conference)\n const { username, profile } = useSelector((state: RootState) => state?.currentUser)\n\n // Check if the actions should be expanded automatically\n const autoExpandedRef = useRef(false)\n // Check if the actions should be collapsed automatically\n const autoCollapsedRef = useRef(false)\n\n const isOwnerOfConference = useMemo(\n () => username !== '' && conferenceStartedFrom === username,\n [username, conferenceStartedFrom],\n )\n\n const shouldHideTransferButton = useMemo(\n () => isActive && !isOwnerOfConference,\n [isActive, isOwnerOfConference],\n )\n\n const shouldHideButtons = useMemo(\n () => intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen,\n [intrudeListenStatus],\n )\n\n const toggleMute = useCallback(() => {\n muted ? unmuteCurrentCall() : muteCurrentCall()\n }, [muted])\n\n const togglePause = useCallback(() => {\n paused ? unpauseCurrentCall() : pauseCurrentCall()\n }, [paused])\n\n const openKeypad = useCallback(() => {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-call-keypad-opened', {})\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const toggleActionsExpanded = useCallback(() => {\n const newState = !actionsExpanded\n dispatch.island.toggleActionsExpanded(newState)\n eventDispatch(`phone-island-call-actions-${newState ? 'opened' : 'closed'}`, {})\n if (!newState) {\n eventDispatch('phone-island-sideview-close', {})\n }\n }, [actionsExpanded, transcriptionViewIsVisible, dispatch.island])\n\n const toggleSideView = useCallback(() => {\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n } else {\n // When opening SideView, close TranscriptionView if it's open\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-sideview-open', {})\n }\n }, [sideViewIsVisible, transcriptionViewIsVisible])\n\n const transfer = useCallback(() => {\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n eventDispatch('phone-island-call-transfer-opened', {})\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const beginConference = useCallback(() => {\n eventDispatch('phone-island-conference-list-open', {})\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n if (transcriptionViewIsVisible) {\n eventDispatch('phone-island-transcription-close', {})\n }\n }, [view, sideViewIsVisible, transcriptionViewIsVisible, dispatch.island])\n\n const addUserToConference = useCallback(async () => {\n dispatch.island.setIslandView('waitingConference')\n await startConference()\n }, [dispatch.island])\n\n const handleConferenceAction = useCallback(() => {\n isActive ? addUserToConference() : beginConference()\n }, [isActive, addUserToConference, beginConference])\n\n const shouldExpandActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n !actionsExpanded &&\n !autoExpandedRef.current &&\n isOwnerOfConference\n )\n }, [isActive, view, actionsExpanded, isOwnerOfConference])\n\n // Check if user is not the owner of the conference\n const shouldCollapseActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n actionsExpanded &&\n !autoCollapsedRef.current &&\n username !== '' &&\n !isOwnerOfConference\n )\n }, [isActive, view, actionsExpanded, username, isOwnerOfConference])\n\n // Automatically expand actions if the user has enabled conference\n useEffect(() => {\n if (shouldExpandActions) {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n autoExpandedRef.current = true\n }\n }, [shouldExpandActions, dispatch.island])\n\n // Automatically collapse actions if the user is not the owner of the conference\n useEffect(() => {\n if (shouldCollapseActions) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n autoCollapsedRef.current = true\n }\n }, [shouldCollapseActions, dispatch.island])\n\n const cancelTransfer = useCallback(() => {\n const sendDtmfFunc = isWebRTC() ? sendDTMF : sendPhysicalDTMF\n\n sendDtmfFunc('*')\n\n const { audioPlayerPlaying } = store.getState().player\n // Check if the local audio is already playing and start playing\n if (!audioPlayerPlaying) {\n dispatch.player.updateStartAudioPlayer({\n src: outgoingRingtone,\n loop: true,\n })\n }\n\n setTimeout(() => {\n sendDtmfFunc('1')\n dispatch.player.stopAudioPlayer()\n // The workarround to disable transfer because of the wrong conv.connection value from ws\n if (transferring) {\n setTimeout(() => {\n dispatch.currentCall.updateTransferring(false)\n }, 500)\n }\n\n eventDispatch('phone-island-call-transfer-canceled', {})\n }, 500)\n }, [transferring, dispatch.player, dispatch.currentCall])\n\n useEventListener('phone-island-call-keypad-open', openKeypad)\n useEventListener('phone-island-call-transfer-open', transfer)\n useEventListener('phone-island-call-transfer-cancel', cancelTransfer)\n useEventListener('phone-island-call-actions-open', () => {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n })\n useEventListener('phone-island-call-actions-close', () => {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n })\n\n const mainGridClassName = useMemo(() => {\n if (\n intrudeListenStatus?.isListen ||\n intrudeListenStatus?.isIntrude ||\n (isActive && !isOwnerOfConference)\n ) {\n if (intrudeListenStatus.isIntrude) {\n return 'pi-mb-6 pi-grid pi-grid-cols-1 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'\n }\n if (isActive && !isOwnerOfConference) {\n return 'pi-flex pi-items-center pi-justify-center pi-gap-4'\n }\n return 'pi-hidden'\n }\n return 'pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'\n }, [intrudeListenStatus, isActive, isOwnerOfConference])\n\n return (\n <>\n <div className={mainGridClassName}>\n {!shouldHideButtons && (\n <ActionButton\n active={paused}\n onClick={togglePause}\n tooltipId='tooltip-pause'\n tooltipContent={paused ? t('Tooltip.Play') : t('Tooltip.Pause')}\n icon={faPause}\n activeIcon={faPlay}\n />\n )}\n\n {!intrudeListenStatus?.isListen && (\n <ActionButton\n active={muted}\n onClick={toggleMute}\n tooltipId='tooltip-mute'\n tooltipContent={muted ? t('Tooltip.Unmute') : t('Tooltip.Mute')}\n icon={faMicrophone}\n activeIcon={faMicrophoneSlash}\n />\n )}\n\n {!shouldHideTransferButton && <TransferButton />}\n\n {!shouldHideButtons && !shouldHideTransferButton && (\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={toggleActionsExpanded}\n data-tooltip-id='tooltip-expand'\n data-tooltip-content={actionsExpanded ? t('Tooltip.Collapse') : t('Tooltip.Expand')}\n >\n <FontAwesomeIcon\n className='pi-h-6 pi-w-6'\n icon={actionsExpanded ? faAngleUp : faAngleDown}\n />\n </Button>\n )}\n </div>\n\n {/* Actions expanded section */}\n {actionsExpanded && (\n <div className='pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center'>\n <ActionButton\n active={view === 'keypad'}\n onClick={openKeypad}\n tooltipId='tooltip-keyboard'\n tooltipContent={t('Tooltip.Keyboard')}\n icon={faGridRound}\n />\n\n <ActionButton\n active={parked}\n onClick={parkCurrentCall}\n tooltipId='tooltip-park'\n tooltipContent={t('Tooltip.Park')}\n icon={faSquareParking}\n />\n\n {profile?.macro_permissions?.settings?.permissions?.conference?.value && (\n <Button\n data-stop-propagation={true}\n variant='default'\n onClick={handleConferenceAction}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={\n isActive ? t('Tooltip.Conference') || '' : t('Tooltip.Add user to conference') || ''\n }\n >\n <FontAwesomeIcon icon={isActive ? faPlus : faUserPlus} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n\n <Button\n variant='default'\n onClick={toggleSideView}\n data-tooltip-id='tooltip-sideView'\n data-tooltip-content={t('Tooltip.Other actions') || ''}\n >\n <FontAwesomeIcon\n className='pi-h-6 pi-w-6'\n icon={sideViewIsVisible ? faClose : faOpen}\n />\n </Button>\n </div>\n )}\n {/* Buttons tooltips */}\n <CustomThemedTooltip id='tooltip-transfer' place='bottom' />\n <CustomThemedTooltip id='tooltip-pause' place='bottom' />\n <CustomThemedTooltip id='tooltip-mute' place='bottom' />\n <CustomThemedTooltip id='tooltip-expand' place='bottom' />\n <CustomThemedTooltip id='tooltip-keyboard' place='bottom' />\n <CustomThemedTooltip id='tooltip-conference' place='bottom' />\n <CustomThemedTooltip id='tooltip-park' place='bottom' />\n <CustomThemedTooltip id='tooltip-sideView' place='left' />\n </>\n )\n}\n\nexport default React.memo(Actions)\n"],"names":["ActionButton","React","memo","_a","active","onClick","tooltipId","tooltipContent","icon","_b","activeIcon","createElement","Button","variant","FontAwesomeIcon","className","Actions$1","t","useTranslation","dispatch","useDispatch","_e","useSelector","state","currentCall","paused","muted","parked","transferring","_f","island","view","actionsExpanded","sideViewIsVisible","transcriptionViewIsVisible","intrudeListenStatus","listen","_g","conference","isActive","conferenceStartedFrom","_h","currentUser","username","profile","autoExpandedRef","useRef","autoCollapsedRef","isOwnerOfConference","useMemo","shouldHideTransferButton","shouldHideButtons","isIntrude","isListen","toggleMute","useCallback","unmuteCurrentCall","muteCurrentCall","togglePause","unpauseCurrentCall","pauseCurrentCall","openKeypad","setIslandView","eventDispatch","toggleActionsExpanded","newState","concat","toggleSideView","transfer","beginConference","addUserToConference","__awaiter","startConference","sent","handleConferenceAction","shouldExpandActions","current","shouldCollapseActions","useEffect","cancelTransfer","sendDtmfFunc","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","useEventListener","mainGridClassName","Fragment","faPause","faPlay","faMicrophone","faMicrophoneSlash","TransferButton","faAngleUp","faAngleDown","faGridRound","parkCurrentCall","faSquareParking","_d","_c","macro_permissions","settings","permissions","value","faPlus","faUserPlus","faClose","faOpen","CustomThemedTooltip","id","place"],"mappings":"88DAgDMA,EAA4CC,EAAK,QAACC,KACtD,SAACC,GAAE,IAAAC,WAAQC,YAASC,cAAWC,mBAAgBC,SAAMC,EAAAN,EAAAO,WAAAA,OAAU,IAAAD,EAAGD,EAAIC,EAAO,OAC3ER,EAAC,QAAAU,cAAAC,EAAMA,QACLC,QAAQ,UACRT,OAAQA,EACRC,QAASA,EACQ,kBAAAC,yBACKC,GAEtBN,EAAAA,QAAAU,cAACG,kBAAgB,CAAAC,UAAU,gBAAgBP,KAAMJ,EAASM,EAAaF,IARE,GA6T/EQ,EAAef,EAAK,QAACC,KAhTD,uBACVe,EAAMC,qBACRC,EAAWC,EAAAA,cAEXC,EAA0CC,cAC9C,SAACC,GAAqB,OAAAA,EAAMC,cADtBC,EAAMJ,EAAAI,OAAEC,EAAKL,EAAAK,MAAEC,EAAMN,EAAAM,OAAEC,EAAYP,EAAAO,aAGrCC,EAA2EP,cAC/E,SAACC,GAAqB,OAAAA,EAAMO,SADtBC,EAAIF,EAAAE,KAAEC,EAAeH,EAAAG,gBAAEC,EAAiBJ,EAAAI,kBAAEC,EAA0BL,EAAAK,2BAGtEC,EAAsBb,EAAWA,YAAC,SAACC,GAAqB,OAAAA,EAAMa,MAAN,GACxDC,EAAsCf,EAAAA,YAAY,SAACC,GAAqB,OAAAA,EAAMe,UAAU,GAAtFC,aAAUC,0BACZC,EAAwBnB,cAAY,SAACC,GAAqB,OAAAA,aAAK,EAALA,EAAOmB,WAAW,GAA1EC,EAAQF,EAAAE,SAAEC,EAAOH,EAAAG,QAGnBC,EAAkBC,UAAO,GAEzBC,EAAmBD,UAAO,GAE1BE,EAAsBC,EAAOA,QACjC,WAAM,MAAa,KAAbN,GAAmBH,IAA0BG,CAAQ,EAC3D,CAACA,EAAUH,IAGPU,EAA2BD,EAAAA,QAC/B,WAAM,OAAAV,IAAaS,GACnB,CAACT,EAAUS,IAGPG,EAAoBF,EAAAA,QACxB,WAAM,OAAAd,aAAA,EAAAA,EAAqBiB,aAAajB,aAAmB,EAAnBA,EAAqBkB,SAAvD,EACN,CAAClB,IAGGmB,EAAaC,EAAAA,YAAY,WAC7B7B,EAAQ8B,EAAAA,oBAAsBC,EAAAA,iBAChC,EAAG,CAAC/B,IAEEgC,EAAcH,EAAAA,YAAY,WAC9B9B,EAASkC,EAAAA,qBAAuBC,EAAAA,kBAClC,EAAG,CAACnC,IAEEoC,EAAaN,EAAAA,YAAY,WAC7BpC,EAASW,OAAOgC,cAAuB,WAAT/B,EAAoB,SAAW,QACzDE,GACF8B,gBAAc,8BAA+B,CAAA,GAE3C7B,GACF6B,gBAAc,mCAAoC,CAAA,GAEpDA,gBAAc,kCAAmC,CAAA,EACnD,EAAG,CAAChC,EAAME,EAAmBC,EAA4Bf,EAASW,SAE5DkC,EAAwBT,EAAAA,YAAY,WACxC,IAAMU,GAAYjC,EAClBb,EAASW,OAAOkC,sBAAsBC,GACtCF,EAAaA,cAAC,6BAAAG,OAA6BD,EAAW,SAAW,UAAY,CAAA,GACxEA,GACHF,gBAAc,8BAA+B,CAAA,EAEhD,EAAE,CAAC/B,EAAiBE,EAA4Bf,EAASW,SAEpDqC,EAAiBZ,EAAAA,YAAY,WAC7BtB,EACF8B,gBAAc,8BAA+B,CAAA,IAGzC7B,GACF6B,gBAAc,mCAAoC,CAAA,GAEpDA,gBAAc,6BAA8B,CAAA,GAEhD,EAAG,CAAC9B,EAAmBC,IAEjBkC,GAAWb,EAAAA,YAAY,WAC3BpC,EAASW,OAAOgC,cAAuB,aAAT/B,EAAsB,WAAa,QAC7DE,GACF8B,gBAAc,8BAA+B,CAAA,GAE3C7B,GACF6B,gBAAc,mCAAoC,CAAA,GAEpDA,gBAAc,oCAAqC,CAAA,EACrD,EAAG,CAAChC,EAAME,EAAmBC,EAA4Bf,EAASW,SAE5DuC,GAAkBd,EAAAA,YAAY,WAClCQ,gBAAc,oCAAqC,CAAA,GACnD5C,EAASW,OAAOgC,cAAuB,aAAT/B,EAAsB,WAAa,QAC7DE,GACF8B,gBAAc,8BAA+B,CAAA,GAE3C7B,GACF6B,gBAAc,mCAAoC,CAAA,EAEtD,EAAG,CAAChC,EAAME,EAAmBC,EAA4Bf,EAASW,SAE5DwC,GAAsBf,cAAY,WAAA,OAAAgB,EAAAA,eAAA,OAAA,OAAA,EAAA,wEAEtC,OADApD,EAASW,OAAOgC,cAAc,qBACxB,CAAA,EAAAU,EAAeA,iCAArBrE,EAAAsE,aACD,EAAA,EAAE,CAACtD,EAASW,SAEP4C,GAAyBnB,EAAAA,YAAY,WACzChB,EAAW+B,KAAwBD,IACpC,EAAE,CAAC9B,EAAU+B,GAAqBD,KAE7BM,GAAsB1B,EAAAA,QAAQ,WAClC,OACEV,GACS,SAATR,IACCC,IACAa,EAAgB+B,SACjB5B,CAEH,EAAE,CAACT,EAAUR,EAAMC,EAAiBgB,IAG/B6B,GAAwB5B,EAAAA,QAAQ,WACpC,OACEV,GACS,SAATR,GACAC,IACCe,EAAiB6B,SACL,KAAbjC,IACCK,CAEL,EAAG,CAACT,EAAUR,EAAMC,EAAiBW,EAAUK,IAG/C8B,EAAAA,UAAU,WACJH,KACFxD,EAASW,OAAOkC,uBAAsB,GACtCD,gBAAc,mCAAoC,CAAA,GAClDlB,EAAgB+B,SAAU,EAE7B,EAAE,CAACD,GAAqBxD,EAASW,SAGlCgD,EAAAA,UAAU,WACJD,KACF1D,EAASW,OAAOkC,uBAAsB,GACtCD,gBAAc,mCAAoC,CAAA,GAClDhB,EAAiB6B,SAAU,EAE9B,EAAE,CAACC,GAAuB1D,EAASW,SAEpC,IAAMiD,GAAiBxB,EAAAA,YAAY,WACjC,IAAMyB,EAAeC,EAAAA,WAAaC,EAAAA,SAAWC,EAAAA,iBAE7CH,EAAa,KAEkBI,EAAKA,MAACC,WAAWC,OAAMC,oBAGpDpE,EAASmE,OAAOE,uBAAuB,CACrCC,IAAKC,EAAgB,QACrBC,MAAM,IAIVC,WAAW,WACTZ,EAAa,KACb7D,EAASmE,OAAOO,kBAEZjE,GACFgE,WAAW,WACTzE,EAASK,YAAYsE,oBAAmB,EACzC,EAAE,KAGL/B,gBAAc,sCAAuC,CAAA,EACtD,EAAE,IACL,EAAG,CAACnC,EAAcT,EAASmE,OAAQnE,EAASK,cAE5CuE,mBAAiB,gCAAiClC,GAClDkC,mBAAiB,kCAAmC3B,IACpD2B,mBAAiB,oCAAqChB,IACtDgB,EAAgBA,iBAAC,iCAAkC,WACjD5E,EAASW,OAAOkC,uBAAsB,GACtCD,gBAAc,mCAAoC,CAAA,EACpD,GACAgC,EAAgBA,iBAAC,kCAAmC,WAClD5E,EAASW,OAAOkC,uBAAsB,GACtCD,gBAAc,mCAAoC,CAAA,EACpD,GAEA,IAAMiC,GAAoB/C,EAAAA,QAAQ,WAChC,OACEd,aAAA,EAAAA,EAAqBkB,YACrBlB,aAAmB,EAAnBA,EAAqBiB,YACpBb,IAAaS,EAEVb,EAAoBiB,UACf,6HAELb,IAAaS,EACR,qDAEF,YAEF,oHACR,EAAE,CAACb,EAAqBI,EAAUS,IAEnC,OACE/C,UAAAU,cAAAV,EAAA,QAAAgG,SAAA,KACEhG,EAAAA,QAAKU,cAAA,MAAA,CAAAI,UAAWiF,KACZ7C,GACAlD,EAAAA,QAAAU,cAACX,EACC,CAAAI,OAAQqB,EACRpB,QAASqD,EACTpD,UAAU,gBACVC,eAAyBU,EAATQ,EAAW,eAAoB,iBAC/CjB,KAAM0F,EAAOA,QACbxF,WAAYyF,EAAAA,WAIdhE,aAAmB,EAAnBA,EAAqBkB,WACrBpD,EAAA,QAAAU,cAACX,EACC,CAAAI,OAAQsB,EACRrB,QAASiD,EACThD,UAAU,eACVC,eAAwBU,EAARS,EAAU,iBAAsB,gBAChDlB,KAAM4F,EAAAA,aACN1F,WAAY2F,EAAAA,qBAIdnD,GAA4BjD,EAAC,QAAAU,cAAA2F,EAAAA,eAAiB,OAE9CnD,IAAsBD,GACtBjD,UAACU,cAAAC,EAAMA,OACL,CAAAR,OAAQ4B,EACRnB,QAAQ,cACRR,QAAS2D,oBACO,iBAAgB,uBACQ/C,EAAlBe,EAAoB,mBAAwB,mBAElE/B,EAAAA,QAACU,cAAAG,mBACCC,UAAU,gBACVP,KAAMwB,EAAkBuE,EAASA,UAAGC,kBAO3CxE,GACC/B,EAAK,QAAAU,cAAA,MAAA,CAAAI,UAAU,sHACbd,EAAC,QAAAU,cAAAX,EACC,CAAAI,OAAiB,WAAT2B,EACR1B,QAASwD,EACTvD,UAAU,mBACVC,eAAgBU,EAAE,oBAClBT,KAAMiG,EAAAA,cAGRxG,EAAC,QAAAU,cAAAX,EACC,CAAAI,OAAQuB,EACRtB,QAASqG,EAAeA,gBACxBpG,UAAU,eACVC,eAAgBU,EAAE,gBAClBT,KAAMmG,EAAAA,mBAGwD,QAA/DC,EAAmD,QAAnDC,EAAsC,QAAtCpG,EAA0B,QAA1BN,EAAAyC,aAAO,EAAPA,EAASkE,yBAAiB,IAAA3G,OAAA,EAAAA,EAAE4G,gBAAU,IAAAtG,OAAA,EAAAA,EAAAuG,mBAAa,IAAAH,OAAA,EAAAA,EAAAvE,kBAAY,IAAAsE,OAAA,EAAAA,EAAAK,QAC9DhH,EAAAA,QAACU,cAAAC,EAAAA,OACwB,CAAA,yBAAA,EACvBC,QAAQ,UACRR,QAASqE,GAAsB,kBACf,qBAEd,uBAAAnC,EAAWtB,EAAE,uBAAyB,GAAKA,EAAE,mCAAqC,IAGpFhB,EAAAA,QAAAU,cAACG,kBAAgB,CAAAN,KAAM+B,EAAW2E,EAAMA,OAAGC,aAAYpG,UAAU,mBAIrEd,EAAAA,QAAAU,cAACC,EAAAA,OACC,CAAAC,QAAQ,UACRR,QAAS8D,EAAc,kBACP,mBACM,uBAAAlD,EAAE,0BAA4B,IAEpDhB,EAAAA,QAACU,cAAAG,mBACCC,UAAU,gBACVP,KAAMyB,EAAoBmF,EAAOA,QAAGC,aAM5CpH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,mBAAmBC,MAAM,WACjDvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,gBAAgBC,MAAM,WAC9CvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,eAAeC,MAAM,WAC7CvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,iBAAiBC,MAAM,WAC/CvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,mBAAmBC,MAAM,WACjDvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,qBAAqBC,MAAM,WACnDvH,EAAC,QAAAU,cAAA2G,uBAAoBC,GAAG,eAAeC,MAAM,WAC7CvH,UAAAU,cAAC2G,EAAAA,oBAAmB,CAACC,GAAG,mBAAmBC,MAAM,SAGvD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("react");require("../../node_modules/react-redux/es/index.js");var r=require("./Actions.js"),i=require("./BarsGroup.js"),a=require("../AudioPlayerView/Progress.js"),n=require("../../lib/phone/audio.js"),s=require("../../node_modules/webm-duration-fix/lib/index.js"),l=require("./Timer.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("../Button.js"),d=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),c=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js");require("../../store/index.js");var f=require("../../node_modules/react-redux/es/hooks/useSelector.js"),m=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),p=require("../../node_modules/react-redux/es/utils/shallowEqual.js");function x(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=x(t),w="audio/webm";exports.RecorderView=function(){var x=f.useSelector(function(e){return e.island}).isOpen,b=f.useSelector(function(e){return e.player}).audioPlayerPlaying,h=t.useRef(null),g=t.useRef(null),j=t.useRef([]),y=m.useDispatch(),E=f.useSelector(function(e){return e.webrtc.localAudioStream}),q=f.useSelector(function(e){return{recording:e.recorder.recording,recorded:e.recorder.recorded,waiting:e.recorder.waiting}},p.default),_=q.recording,N=q.recorded,k=q.waiting;function A(e){j.current.push(e.data)}function P(){return e.__awaiter(this,void 0,void 0,function(){var t,r;return e.__generator(this,function(e){switch(e.label){case 0:return[4,s.default(new Blob(j.current,{type:w}))];case 1:return t=e.sent(),r=URL.createObjectURL(t),n.updateAudioPlayerSource(r),[2]}})})}t.useEffect(function(){(null==E?void 0:E.active)&&_&&(g.current=new MediaRecorder(E,{mimeType:w}),g.current.ondataavailable=A,g.current.onstop=P,g.current.start())},[null==E?void 0:E.active,_]),t.useEffect(function(){var e;N&&(j.current=[],null===(e=g.current)||void 0===e||e.stop())},[N]),t.useEffect(function(){return y.recorder.setVisibleContainerRef(h),function(){y.recorder.reset()}},[]);var S=o.useTranslation().t;return v.default.createElement(v.default.Fragment,null,x?v.default.createElement(v.default.Fragment,null," ",v.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},v.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},S("Common.Record message")),v.default.createElement(u.Button,{onClick:function(){y.island.resetPlayerClose()},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":S("Common.Close")||""},v.default.createElement(d.FontAwesomeIcon,{icon:c.faXmark,className:"pi-w-5 pi-h-5"}))),v.default.createElement("div",{className:"pi-pt-4"},v.default.createElement("div",{className:"".concat(!_||k||b?"pi-mb-3":""," pi-flex pi-w-full pi-justify-center pi-items-center")},v.default.createElement("div",{className:"pi-font-medium pi-text-4xl pi-w-fit pi-h-fit dark:pi-text-white"},v.default.createElement(l.default,null))),v.default.createElement("div",{className:"pi-relative pi-w-full pi-justify-center pi-overflow-hidden pi-flex pi-items-center",ref:h},N?v.default.createElement(a.Progress,null):_&&!k?v.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-w-full pi-pb-3 pi-overflow-hidden"},v.default.createElement(u.Button,{variant:"transparent",disabled:!0,className:"pi-flex pi-flex-none"},v.default.createElement(d.FontAwesomeIcon,{icon:c.faPlay,className:"pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200"})),v.default.createElement("div",{className:"pi-relative pi-overflow-hidden pi-flex pi-flex-grow pi-justify-center pi-h-4"},Array.from({length:2}).map(function(e,t){return v.default.createElement(i.BarsGroup,{key:t,index:t,startAnimation:_,audioStream:E})})),v.default.createElement(u.Button,{variant:"transparent",disabled:!0,className:"pi-flex pi-flex-none"},v.default.createElement(d.FontAwesomeIcon,{icon:c.faTrash,className:"pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200"}))):_&&k?v.default.createElement("div",{className:"pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7"},S("Common.Start recording message after")):v.default.createElement("div",{className:"pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7"},S("Common.Start recording message before")))),v.default.createElement(r.Actions,null)):v.default.createElement("div",{className:"pi-font-medium pi-text-base"},"Recorder"))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("react");require("../../node_modules/react-redux/es/index.js");var r=require("./Actions.js"),i=require("./BarsGroup.js"),a=require("../AudioPlayerView/Progress.js"),n=require("../../lib/phone/audio.js"),s=require("../../node_modules/webm-duration-fix/lib/index.js"),l=require("./Timer.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("../Button.js"),d=require("../../node_modules/@fortawesome/react-fontawesome/dist/index.js"),c=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),f=require("../../node_modules/react-redux/es/hooks/useSelector.js"),m=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),p=require("../../node_modules/react-redux/es/utils/shallowEqual.js");function x(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=x(t),w="audio/webm";exports.RecorderView=function(){var x=f.useSelector(function(e){return e.island}).isOpen,b=f.useSelector(function(e){return e.player}).audioPlayerPlaying,h=t.useRef(null),g=t.useRef(null),j=t.useRef([]),y=m.useDispatch(),E=f.useSelector(function(e){return e.webrtc.localAudioStream}),q=f.useSelector(function(e){return{recording:e.recorder.recording,recorded:e.recorder.recorded,waiting:e.recorder.waiting}},p.default),_=q.recording,N=q.recorded,A=q.waiting;function P(e){j.current.push(e.data)}function k(){return e.__awaiter(this,void 0,void 0,function(){var t,r;return e.__generator(this,function(e){switch(e.label){case 0:return[4,s.default(new Blob(j.current,{type:w}))];case 1:return t=e.sent(),r=URL.createObjectURL(t),n.updateAudioPlayerSource(r),[2]}})})}t.useEffect(function(){(null==E?void 0:E.active)&&_&&(g.current=new MediaRecorder(E,{mimeType:w}),g.current.ondataavailable=P,g.current.onstop=k,g.current.start())},[null==E?void 0:E.active,_]),t.useEffect(function(){var e;N&&(j.current=[],null===(e=g.current)||void 0===e||e.stop())},[N]),t.useEffect(function(){return y.recorder.setVisibleContainerRef(h),function(){y.recorder.reset()}},[]);var S=o.useTranslation().t;return v.default.createElement(v.default.Fragment,null,x?v.default.createElement(v.default.Fragment,null," ",v.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-text-gray-900 dark:pi-text-gray-50"},v.default.createElement("h1",{className:"pi-text-lg pi-font-medium pi-leading-7"},S("Common.Record message")),v.default.createElement(u.Button,{onClick:function(){return b&&y.player.stopAudioPlayer(),void y.island.resetPlayerClose()},variant:"transparentSettings","data-tooltip-id":"tooltip-close-settings","data-tooltip-content":S("Common.Close")||""},v.default.createElement(d.FontAwesomeIcon,{icon:c.faXmark,className:"pi-w-5 pi-h-5"}))),v.default.createElement("div",{className:"pi-pt-4"},v.default.createElement("div",{className:"".concat(!_||A||b?"pi-mb-3":""," pi-flex pi-w-full pi-justify-center pi-items-center")},v.default.createElement("div",{className:"pi-font-medium pi-text-4xl pi-w-fit pi-h-fit dark:pi-text-white"},v.default.createElement(l.default,null))),v.default.createElement("div",{className:"pi-relative pi-w-full pi-justify-center pi-overflow-hidden pi-flex pi-items-center",ref:h},N?v.default.createElement(a.Progress,null):_&&!A?v.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-between pi-w-full pi-pb-3 pi-overflow-hidden"},v.default.createElement(u.Button,{variant:"transparent",disabled:!0,className:"pi-flex pi-flex-none"},v.default.createElement(d.FontAwesomeIcon,{icon:c.faPlay,className:"pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200"})),v.default.createElement("div",{className:"pi-relative pi-overflow-hidden pi-flex pi-flex-grow pi-justify-center pi-h-4"},Array.from({length:2}).map(function(e,t){return v.default.createElement(i.BarsGroup,{key:t,index:t,startAnimation:_,audioStream:E})})),v.default.createElement(u.Button,{variant:"transparent",disabled:!0,className:"pi-flex pi-flex-none"},v.default.createElement(d.FontAwesomeIcon,{icon:c.faTrash,className:"pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200"}))):_&&A?v.default.createElement("div",{className:"pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7"},S("Common.Start recording message after")):v.default.createElement("div",{className:"pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7"},S("Common.Start recording message before")))),v.default.createElement(r.Actions,null)):v.default.createElement("div",{className:"pi-font-medium pi-text-base"},"Recorder"))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/RecorderView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useState, useRef, useEffect, useCallback, memo } from 'react'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Actions } from './Actions'\nimport { BarsGroup } from './BarsGroup'\nimport Progress from '../AudioPlayerView/Progress'\nimport { updateAudioPlayerSource } from '../../lib/phone/audio'\nimport fixWebmDuration from 'webm-duration-fix'\nimport Timer from './Timer'\nimport { useTranslation } from 'react-i18next'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTrash, faXmark, faPlay } from '@fortawesome/free-solid-svg-icons'\nimport { eventDispatch } from '../../utils'\n\n// The number of groups to be created\n// ...the minimun to have this effect is 2\nconst BAR_GROUPS_COUNT = 2\n\n// The mime type of the recorded audio\nconst MIME_TYPE = 'audio/webm'\n\nexport const RecorderView: FC<RecorderViewProps> = () => {\n const { isOpen } = useSelector((state: RootState) => state.island)\n const { audioPlayerPlaying } = useSelector((state: RootState) => state.player)\n const visibleContainerRef = useRef<HTMLDivElement>(null)\n const recorderRef = useRef<MediaRecorder | null>(null)\n const mediaChunks = useRef<BlobPart[]>([])\n\n // Initialize state dispatch\n const dispatch = useDispatch<Dispatch>()\n\n // Retrieve the local audio stream from webrtc state\n const localAudioStream = useSelector((state: RootState) => state.webrtc.localAudioStream)\n\n // Retrieve the local audio stream from recorder state\n const { recording, recorded, waiting } = useSelector(\n (state: RootState) => ({\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n waiting: state.recorder.waiting,\n }),\n shallowEqual,\n )\n\n function handleRecordedMedia(event: BlobEvent) {\n mediaChunks.current.push(event.data)\n }\n\n async function handleRecordingStopped() {\n const blob = await fixWebmDuration(new Blob(mediaChunks.current, { type: MIME_TYPE }))\n const audioURL = URL.createObjectURL(blob)\n // The next function is async\n updateAudioPlayerSource(audioURL)\n }\n\n // Handle and manage audio recording start\n useEffect(() => {\n // @ts-ignore\n if (localAudioStream?.active && recording) {\n recorderRef.current = new MediaRecorder(localAudioStream, {\n mimeType: MIME_TYPE,\n })\n recorderRef.current.ondataavailable = handleRecordedMedia\n recorderRef.current.onstop = handleRecordingStopped\n // Start the media recording\n recorderRef.current.start()\n }\n // @ts-ignore\n }, [localAudioStream?.active, recording])\n\n // Handle and manage audio recorded\n useEffect(() => {\n if (recorded) {\n mediaChunks.current = []\n recorderRef.current?.stop()\n }\n }, [recorded])\n\n // Handle view close and reset state\n useEffect(() => {\n // Set visible container reference to recorder state\n dispatch.recorder.setVisibleContainerRef(visibleContainerRef)\n\n return () => {\n dispatch.recorder.reset()\n }\n }, [])\n\n const { t } = useTranslation()\n\n function playerClose() {\n if (audioPlayerPlaying) {\n dispatch.player.stopAudioPlayer()\n eventDispatch('phone-island-audio-player-close', {})\n }\n dispatch.island.resetPlayerClose()\n }\n\n function close() {\n dispatch.island.resetPlayerClose()\n }\n\n return (\n <>\n {isOpen ? (\n <>\n {' '}\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('Common.Record message')}</h1>\n <Button\n onClick={() => close()}\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 <div className='pi-pt-4'>\n <div\n className={`${\n !recording || waiting || audioPlayerPlaying ? 'pi-mb-3' : ''\n } pi-flex pi-w-full pi-justify-center pi-items-center`}\n >\n <div className='pi-font-medium pi-text-4xl pi-w-fit pi-h-fit dark:pi-text-white'>\n <Timer />\n </div>\n </div>\n {/* Bars animation section */}\n <div\n className={`pi-relative pi-w-full pi-justify-center pi-overflow-hidden pi-flex pi-items-center`}\n ref={visibleContainerRef}\n >\n {recorded ? (\n <Progress />\n ) : recording && !waiting ? (\n <div className='pi-flex pi-items-center pi-justify-between pi-w-full pi-pb-3 pi-overflow-hidden'>\n {/* Play button (disabled) on left */}\n <Button variant='transparent' disabled className='pi-flex pi-flex-none'>\n <FontAwesomeIcon\n icon={faPlay}\n className='pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200'\n />\n </Button>\n\n {/* Audio visualization in the middle */}\n <div className='pi-relative pi-overflow-hidden pi-flex pi-flex-grow pi-justify-center pi-h-4'>\n {/* Create a custom numbers of bars groups */}\n {Array.from({ length: BAR_GROUPS_COUNT }).map((_, i) => (\n <BarsGroup\n key={i}\n index={i}\n startAnimation={recording}\n audioStream={localAudioStream}\n />\n ))}\n </div>\n\n {/* Trash button (disabled) on right */}\n <Button variant='transparent' disabled className='pi-flex pi-flex-none'>\n <FontAwesomeIcon\n icon={faTrash}\n className='pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200'\n />\n </Button>\n </div>\n ) : recording && waiting ? (\n <div className='pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7'>\n {t('Common.Start recording message after')}\n </div>\n ) : (\n <div className='pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7'>\n {t('Common.Start recording message before')}\n </div>\n )}\n </div>\n </div>\n {/* Actions section */}\n <Actions />\n </>\n ) : (\n <div className='pi-font-medium pi-text-base'>Recorder</div>\n )}\n </>\n )\n}\n\nexport interface RecorderViewProps {}\n"],"names":["MIME_TYPE","isOpen","useSelector","state","island","audioPlayerPlaying","player","visibleContainerRef","useRef","recorderRef","mediaChunks","dispatch","useDispatch","localAudioStream","webrtc","_a","recording","recorder","recorded","waiting","shallowEqual","handleRecordedMedia","event","current","push","data","handleRecordingStopped","fixWebmDuration","Blob","type","blob","sent","audioURL","URL","createObjectURL","updateAudioPlayerSource","useEffect","active","MediaRecorder","mimeType","ondataavailable","onstop","start","stop","setVisibleContainerRef","reset","t","useTranslation","React","createElement","Fragment","className","Button","onClick","resetPlayerClose","variant","FontAwesomeIcon","icon","faXmark","concat","Timer","ref","Progress","disabled","faPlay","Array","from","length","map","_","i","BarsGroup","key","index","startAnimation","audioStream","faTrash","Actions"],"mappings":"45CAuBMA,EAAY,kCAEiC,WACzC,IAAAC,EAAWC,cAAY,SAACC,GAAqB,OAAAA,EAAMC,gBACnDC,EAAuBH,cAAY,SAACC,GAAqB,OAAAA,EAAMG,4BACjEC,EAAsBC,SAAuB,MAC7CC,EAAcD,SAA6B,MAC3CE,EAAcF,SAAmB,IAGjCG,EAAWC,EAAAA,cAGXC,EAAmBX,cAAY,SAACC,GAAqB,OAAAA,EAAMW,OAAOD,gBAAb,GAGrDE,EAAmCb,EAAAA,YACvC,SAACC,GAAqB,MAAC,CACrBa,UAAWb,EAAMc,SAASD,UAC1BE,SAAUf,EAAMc,SAASC,SACzBC,QAAShB,EAAMc,SAASE,UAE1BC,EAAAA,SANMJ,EAASD,EAAAC,UAAEE,EAAQH,EAAAG,SAAEC,YAS7B,SAASE,EAAoBC,GAC3BZ,EAAYa,QAAQC,KAAKF,EAAMG,KAChC,CAED,SAAeC,mHACA,KAAA,EAAA,MAAA,CAAA,EAAMC,EAAAA,QAAgB,IAAIC,KAAKlB,EAAYa,QAAS,CAAEM,KAAM7B,oBAAnE8B,EAAOf,EAAyEgB,OAChFC,EAAWC,IAAIC,gBAAgBJ,GAErCK,EAAuBA,wBAACH,WACzB,CAGDI,EAAAA,UAAU,YAEJvB,aAAgB,EAAhBA,EAAkBwB,SAAUrB,IAC9BP,EAAYc,QAAU,IAAIe,cAAczB,EAAkB,CACxD0B,SAAUvC,IAEZS,EAAYc,QAAQiB,gBAAkBnB,EACtCZ,EAAYc,QAAQkB,OAASf,EAE7BjB,EAAYc,QAAQmB,QAGvB,EAAE,CAAC7B,aAAgB,EAAhBA,EAAkBwB,OAAQrB,IAG9BoB,EAAAA,UAAU,iBACJlB,IACFR,EAAYa,QAAU,GACD,QAArBR,EAAAN,EAAYc,eAAS,IAAAR,GAAAA,EAAA4B,OAEzB,EAAG,CAACzB,IAGJkB,EAAAA,UAAU,WAIR,OAFAzB,EAASM,SAAS2B,uBAAuBrC,GAElC,WACLI,EAASM,SAAS4B,OACpB,CACD,EAAE,IAEK,IAAAC,EAAMC,qBAcd,OACEC,UACGC,cAAAD,EAAA,QAAAE,SAAA,KAAAjD,EACC+C,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACG,IACDF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,oFACbH,UAAIC,cAAA,KAAA,CAAAE,UAAU,0CAA0CL,EAAE,0BAC1DE,EAAC,QAAAC,cAAAG,UACCC,QAAS,WAXnB1C,EAASP,OAAOkD,kBAWgB,EACtBC,QAAQ,wCACQ,yBAAwB,uBAClBT,EAAE,iBAAmB,IAE3CE,UAACC,cAAAO,EAAAA,gBAAgB,CAAAC,KAAMC,EAAAA,QAASP,UAAU,oBAG9CH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,WACbH,EAAAA,QAAAC,cAAA,MAAA,CACEE,UAAW,GAAAQ,QACR3C,GAAaG,GAAWd,EAAqB,UAAY,GACN,yDAEtD2C,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,mEACbH,EAAAA,QAACC,cAAAW,UAAQ,QAIbZ,UAAAC,cAAA,MAAA,CACEE,UAAW,qFACXU,IAAKtD,GAEJW,EACC8B,UAACC,cAAAa,EAAAA,SAAW,MACV9C,IAAcG,EAChB6B,UAAKC,cAAA,MAAA,CAAAE,UAAU,mFAEbH,UAACC,cAAAG,EAAMA,OAAC,CAAAG,QAAQ,cAAcQ,UAAQ,EAACZ,UAAU,wBAC/CH,UAACC,cAAAO,EAAAA,gBACC,CAAAC,KAAMO,EAAAA,OACNb,UAAU,0DAKdH,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,gFAEZc,MAAMC,KAAK,CAAEC,OApIT,IAoIqCC,IAAI,SAACC,EAAGC,GAAM,OACtDtB,EAAAA,QAACC,cAAAsB,EAAAA,WACCC,IAAKF,EACLG,MAAOH,EACPI,eAAgB1D,EAChB2D,YAAa9D,GAEhB,IAIHmC,UAACC,cAAAG,EAAMA,OAAC,CAAAG,QAAQ,cAAcQ,UAAQ,EAACZ,UAAU,wBAC/CH,EAAC,QAAAC,cAAAO,EAAeA,iBACdC,KAAMmB,EAAAA,QACNzB,UAAU,2DAIdnC,GAAaG,EACf6B,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,mEACZL,EAAE,yCAGLE,EAAAA,6BAAKG,UAAU,mEACZL,EAAE,4CAMXE,EAAAA,QAAAC,cAAC4B,EAAAA,QAAU,OAGb7B,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,+BAA6B,YAIpD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/RecorderView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useRef, useEffect } from 'react'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Actions } from './Actions'\nimport { BarsGroup } from './BarsGroup'\nimport Progress from '../AudioPlayerView/Progress'\nimport { updateAudioPlayerSource } from '../../lib/phone/audio'\nimport fixWebmDuration from 'webm-duration-fix'\nimport Timer from './Timer'\nimport { useTranslation } from 'react-i18next'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTrash, faXmark, faPlay } from '@fortawesome/free-solid-svg-icons'\n\n// The number of groups to be created\n// ...the minimun to have this effect is 2\nconst BAR_GROUPS_COUNT = 2\n\n// The mime type of the recorded audio\nconst MIME_TYPE = 'audio/webm'\n\nexport const RecorderView: FC<RecorderViewProps> = () => {\n const { isOpen } = useSelector((state: RootState) => state.island)\n const { audioPlayerPlaying } = useSelector((state: RootState) => state.player)\n const visibleContainerRef = useRef<HTMLDivElement>(null)\n const recorderRef = useRef<MediaRecorder | null>(null)\n const mediaChunks = useRef<BlobPart[]>([])\n\n // Initialize state dispatch\n const dispatch = useDispatch<Dispatch>()\n\n // Retrieve the local audio stream from webrtc state\n const localAudioStream = useSelector((state: RootState) => state.webrtc.localAudioStream)\n\n // Retrieve the local audio stream from recorder state\n const { recording, recorded, waiting } = useSelector(\n (state: RootState) => ({\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n waiting: state.recorder.waiting,\n }),\n shallowEqual,\n )\n\n function handleRecordedMedia(event: BlobEvent) {\n mediaChunks.current.push(event.data)\n }\n\n async function handleRecordingStopped() {\n const blob = await fixWebmDuration(new Blob(mediaChunks.current, { type: MIME_TYPE }))\n const audioURL = URL.createObjectURL(blob)\n // The next function is async\n updateAudioPlayerSource(audioURL)\n }\n\n // Handle and manage audio recording start\n useEffect(() => {\n // @ts-ignore\n if (localAudioStream?.active && recording) {\n recorderRef.current = new MediaRecorder(localAudioStream, {\n mimeType: MIME_TYPE,\n })\n recorderRef.current.ondataavailable = handleRecordedMedia\n recorderRef.current.onstop = handleRecordingStopped\n // Start the media recording\n recorderRef.current.start()\n }\n // @ts-ignore\n }, [localAudioStream?.active, recording])\n\n // Handle and manage audio recorded\n useEffect(() => {\n if (recorded) {\n mediaChunks.current = []\n recorderRef.current?.stop()\n }\n }, [recorded])\n\n // Handle view close and reset state\n useEffect(() => {\n // Set visible container reference to recorder state\n dispatch.recorder.setVisibleContainerRef(visibleContainerRef)\n\n return () => {\n dispatch.recorder.reset()\n }\n }, [])\n\n const { t } = useTranslation()\n\n function playerClose() {\n if (audioPlayerPlaying) {\n dispatch.player.stopAudioPlayer()\n }\n dispatch.island.resetPlayerClose()\n }\n\n return (\n <>\n {isOpen ? (\n <>\n {' '}\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('Common.Record message')}</h1>\n <Button\n onClick={() => playerClose()}\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 <div className='pi-pt-4'>\n <div\n className={`${\n !recording || waiting || audioPlayerPlaying ? 'pi-mb-3' : ''\n } pi-flex pi-w-full pi-justify-center pi-items-center`}\n >\n <div className='pi-font-medium pi-text-4xl pi-w-fit pi-h-fit dark:pi-text-white'>\n <Timer />\n </div>\n </div>\n {/* Bars animation section */}\n <div\n className={`pi-relative pi-w-full pi-justify-center pi-overflow-hidden pi-flex pi-items-center`}\n ref={visibleContainerRef}\n >\n {recorded ? (\n <Progress />\n ) : recording && !waiting ? (\n <div className='pi-flex pi-items-center pi-justify-between pi-w-full pi-pb-3 pi-overflow-hidden'>\n {/* Play button (disabled) on left */}\n <Button variant='transparent' disabled className='pi-flex pi-flex-none'>\n <FontAwesomeIcon\n icon={faPlay}\n className='pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200'\n />\n </Button>\n\n {/* Audio visualization in the middle */}\n <div className='pi-relative pi-overflow-hidden pi-flex pi-flex-grow pi-justify-center pi-h-4'>\n {/* Create a custom numbers of bars groups */}\n {Array.from({ length: BAR_GROUPS_COUNT }).map((_, i) => (\n <BarsGroup\n key={i}\n index={i}\n startAnimation={recording}\n audioStream={localAudioStream}\n />\n ))}\n </div>\n\n {/* Trash button (disabled) on right */}\n <Button variant='transparent' disabled className='pi-flex pi-flex-none'>\n <FontAwesomeIcon\n icon={faTrash}\n className='pi-h-4 pi-w-4 pi-text-gray-700 dark:pi-text-gray-200'\n />\n </Button>\n </div>\n ) : recording && waiting ? (\n <div className='pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7'>\n {t('Common.Start recording message after')}\n </div>\n ) : (\n <div className='pi-sans pi-text-sm pi-w-fit pi-h-fit dark:pi-text-white pi-pb-7'>\n {t('Common.Start recording message before')}\n </div>\n )}\n </div>\n </div>\n {/* Actions section */}\n <Actions />\n </>\n ) : (\n <div className='pi-font-medium pi-text-base'>Recorder</div>\n )}\n </>\n )\n}\n\nexport interface RecorderViewProps {}\n"],"names":["MIME_TYPE","isOpen","useSelector","state","island","audioPlayerPlaying","player","visibleContainerRef","useRef","recorderRef","mediaChunks","dispatch","useDispatch","localAudioStream","webrtc","_a","recording","recorder","recorded","waiting","shallowEqual","handleRecordedMedia","event","current","push","data","handleRecordingStopped","fixWebmDuration","Blob","type","blob","sent","audioURL","URL","createObjectURL","updateAudioPlayerSource","useEffect","active","MediaRecorder","mimeType","ondataavailable","onstop","start","stop","setVisibleContainerRef","reset","t","useTranslation","React","createElement","Fragment","className","Button","onClick","stopAudioPlayer","resetPlayerClose","variant","FontAwesomeIcon","icon","faXmark","concat","Timer","ref","Progress","disabled","faPlay","Array","from","length","map","_","i","BarsGroup","key","index","startAnimation","audioStream","faTrash","Actions"],"mappings":"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"}
@@ -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("../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("../lib/phone/counterpartDevice.js"),u=require("../services/phonebook.js"),c=require("../services/user.js"),a=require("../static/busy_ringtone.js"),s=require("../utils/customHooks/useEventListener.js"),l=require("../utils/genericFunctions/eventDispatch.js"),d=require("../utils/genericFunctions/withTimeout.js"),v=require("../utils/genericFunctions/summaryEvents.js"),p=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var m=require("../lib/devices/devices.js"),g=require("../lib/user/default_device.js"),f=require("../utils/genericFunctions/isEmpty.js"),h=require("../utils/streaming/getStreamingSourceId.js"),b=require("../events/SocketEvents.js"),k=require("../utils/genericFunctions/timestamp.js"),S=require("../lib/user/extensions.js"),y=require("../utils/streaming/isFromStreaming.js"),q=require("../lib/phone/queue.js"),C=require("../lib/phone/trunk.js"),w=require("../node_modules/react-redux/es/hooks/useDispatch.js");function N(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=N(n);exports.Socket=function(N){var I=N.hostName,T=N.username,j=N.authToken,D=N.reload,U=N.reloadedCallback,x=N.children,E=N.uaType,O=w.useDispatch(),P=n.useRef(),A=n.useRef(),F=n.useRef(!1),M=n.useRef(0),V=n.useRef(null),R=n.useRef(new Map),L=n.useRef(new Map),Q=n.useRef(new Set),W=n.useRef({linkedid:null,uniqueid:null});s.useEventListener("phone-island-start-transcription",function(e){if(A.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;W.current={linkedid:n,uniqueid:t},A.current.emit("start_transcription",{linkedid:n,uniqueid:t})}}),s.useEventListener("phone-island-stop-transcription",function(e){if(A.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;W.current={linkedid:null,uniqueid:null},A.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}}),s.useEventListener("phone-island-current-user-queue-call-waiting",function(e){O.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})}),s.useEventListener("phone-island-current-user-queue-call-connected",function(e){O.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,s=function(e){if(e.counterpartNum&&y.isFromStreaming(e.counterpartNum)){O.island.setIsFromStreaming(!0),O.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=h.getStreamingSourceId(e.counterpartNum);n&&c.subscribe({id:n}).catch(function(e){return console.error("Error subscribing to streaming source:",e)})}},w=function(e){return(e||"").replace(/\D/g,"")},N=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t&&!i.isNumberOnlyName(n)?n:(t?L.current.get(w(t)):void 0)||n},_=function(e){if(e){var n=(e.counterpartNum||"").trim();if(!(n.length<3)){var t=(e.counterpartName||"").trim();if(!t||"<unknown>"===t||t===n||i.isNumberOnlyName(t)){var r=p.store.getState().users.extensions;if(!(r&&r[n]||y.isFromStreaming(n))){var o=w(n);L.current.has(o)||e.id&&Q.current.has(e.id)||(e.id&&(Q.current.size>500&&Q.current.clear(),Q.current.add(e.id)),u.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 0!==n.length&&(n===o||!(Math.min(n.length,o.length)<6)&&(n.endsWith(o)||o.endsWith(n)))})}),t=((null==n?void 0:n.name)||(null==n?void 0:n.company)||"").trim();if(t){L.current.set(o,t);var r=p.store.getState().currentCall;w(r.number)===o&&O.currentCall.updateCurrentCall({displayName:t})}}).catch(function(){}))}}}}},D=function(e){return q.getCurrentCallQueueContext(e,p.store.getState().queue)},U=function(e,n){var t=p.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}},x=function(e){var n,t,r,i;if(e){var o=D(e),u=U(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))&&(b.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))&&(b.dispatchCurrentUserQueueCallWaiting(u),V.current={conversationId:e.id,phase:"waiting"});else V.current=null}else V.current=null},B=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},K=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},z=function(e){return!!(null==e?void 0:e.connected)&&!!B(e)&&!!K(e)},H=function(n){var t=p.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=z(t),a=z(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(z(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=R.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(R.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&z(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||{})})},J=function(n,t){var r=p.store.getState().currentCall,u=r.transferring,a=r.transferSwitching,d=r.transferCalls,v=p.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var m=p.store.getState().users.extensions,f=p.store.getState().currentUser.default_device,h=p.store.getState().currentUser,b=h.endpoints,y=h.username,q=p.store.getState().currentCall;q.incoming,q.outgoing;var w=function(){if(!m||!y)return!1;var e=Object.values(m).filter(function(e){return(null==e?void 0:e.username)===y});return null==e?void 0:e.some(function(e){var n=null==b?void 0:b.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=p.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;var I=D(t),T=U(t,I);x(t),s(t),_(t),("mobile"===E&&w()||"desktop"===E&&("webrtc"===(null==f?void 0:f.type)||void 0===(null==f?void 0:f.type)&&!w()||!w()&&"physical"===(null==f?void 0:f.type)))&&(O.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:N(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(T.queueId||T.queueName||T.queueNumber),queueId:T.queueId,queueName:T.queueName,queueNumber:T.queueNumber,queuePosition:T.queuePosition,queueWaitingTime:T.queueWaitingTime,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",ownerExtension:t.owner,counterpartDeviceType:o.getCounterpartDeviceType(t,p.store.getState().users)}),p.store.dispatch.island.setIslandView("call")),F.current||(F.current=!0,c.getCurrentUserInfo().then(function(n){n&&(O.currentUser.updateCurrentUser(n),l.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?O.paramUrl.setOpenParamUrlType(n.settings.open_param_url):O.paramUrl.setOpenParamUrlType("never"))}).catch(function(e){console.error("Error getting current user info:",e)}).finally(function(){setTimeout(function(){F.current=!1},100)}));var j=p.store.getState().paramUrl.openParamUrlType,P=p.store.getState().island.urlOpened;if("ringing"===j&&!P){var A=C.isFromTrunk(t.counterpartNum);p.store.dispatch.paramUrl.setThroughTrunk(A),p.store.dispatch.island.setUrlOpened(!1),l.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:N(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:A,direction:t.direction,connected:t.connected})}break;case"busy":if(x(t),s(t),"mobile"===E&&w()||"desktop"===E&&("webrtc"===(null==f?void 0:f.type)||void 0===(null==f?void 0:f.type)&&!w()||!w()&&"physical"===(null==f?void 0:f.type))){if(t&&t.connected)O.currentCall.updateCurrentCall({conversationId:t.id,displayName:N(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{},counterpartDeviceType:o.getCounterpartDeviceType(t,p.store.getState().users)}),O.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),O.currentCall.addTransferCalls({type:"transferred",displayName:N(t),number:"".concat(t.counterpartNum),startTime:"".concat(k.getTimestampInSeconds())}),p.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout(function(){O.island.setIslandView("streamingAnswer")},200),g.isPhysical()&&function(e){O.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),l.eventDispatch("phone-island-call-answered",{}),p.store.dispatch.player.stopAudioPlayer(),p.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===v&&u&&O.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)O.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(u&&!a){var M=d.find(function(e){return e.number===t.counterpartNum});!t.connected&&M&&(O.currentCall.updateCurrentCall({transferring:!1}),l.eventDispatch("phone-island-call-transfer-failed",{}),O.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&O.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&("REC"!==(null==t?void 0:t.counterpartName)&&_(t),O.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:N(t),counterpartDeviceType:"",number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(m&&m[null==t?void 0:t.counterpartNum]&&m[null==t?void 0:t.counterpartNum].username)||""}))}break;case"onhold":x(t);var V=t.counterpartName,R=t.counterpartNum,L=t.startTime;u&&R&&V&&"<unknown>"!==V&&(O.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:R,startTime:"".concat(k.getTimestampInSeconds())}),O.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:R,startTime:"".concat(L/1e3),conversationId:t.id,counterpartDeviceType:""}),O.island.setIslandView("call"));break;case"busy_ringing":l.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&S.userTotallyFree()&&(x(null),O.player.stopAudioPlayer(),O.currentCall.reset(),O.listen.reset(),O.physicalRecorder.setRecordingTempVariable(!1),O.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(T)&&(n.path="/api/ws"),A.current=t.io("https://"+I,n),O.websocket.update({socket:A.current}),A.current.on("connect",function(){console.debug("Socket connected sid: ".concat(A.current.id)),l.eventDispatch("phone-island-socket-connected",{})}),A.current.on("disconnect",function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?l.eventDispatch("phone-island-server-disconnected",{}):l.eventDispatch("phone-island-socket-disconnected",{})}),A.current.io.on("error",function(e){console.debug("Socket error: ",e)}),A.current.on("connect_error",function(e){console.debug("Socket connect_error: ",e)}),A.current.io.on("reconnect",function(e){M.current=0,l.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(A.current.id,")"))}),A.current.io.on("reconnect_attempt",function(e){console.debug("Socket reconnect_attempt ".concat(e))}),A.current.io.on("reconnect_error",function(e){console.debug("Socket reconnect_error: ",e)}),A.current.io.on("reconnect_failed",function(){console.debug("Socket reconnect_failed")}),A.current.on("connect",function(){console.debug("Socket on: "+I+" is connected!"),A.current.emit("login",{accessKeyId:"".concat(T),token:j,uaType:E})}),A.current.on("authe_ok",function(){console.debug("Socket authentication success!"),l.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval(function(){A.current.volatile.emit("ping",d.withTimeout(function(){M.current=0,setTimeout(function(){O.alerts.removeAlert("socket_down"),l.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),l.eventDispatch("phone-island-socket-disconnected-popup-close",{})},0)},function(){M.current++,console.debug("Socket ping timeout (".concat(M.current,"/").concat(3,"), connected: ").concat(A.current.connected)),setTimeout(function(){var e,n,t=A.current.connected&&M.current>=3;if(!A.current.connected||t){var r=p.store.getState().webrtc.sipcall,i=p.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"),A.current.disconnect(),A.current.connect()),O.alerts.setAlert("socket_down"),l.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}},0)},5e3))},5e3)}),A.current.on("userMainPresenceUpdate",function(n){p.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),b.dispatchMainPresence(n)}),A.current.on("extenHangup",function(e){var n=p.store.getState().currentUser,t=n.endpoints,r=n.username,i=p.store.getState().conference,o=i.isActive,u=i.conferenceStartedFrom,c=p.store.getState().island,s=c.view,d=c.previewCallFromMobileOrNethlink,v=(null==t?void 0:t.extension)||[],m=v.map(function(e){return e.id}),g=null==e?void 0:e.callerNum;!m.includes(g)&&m.includes(null==e?void 0:e.channelExten)&&(g=null==e?void 0:e.channelExten);var f=v.find(function(n){return n.id===e.callerNum}),h=null==f?void 0:f.type,b=H(g).conversation,k=B(b),S=K(b),y=(null==b?void 0:b.connected)||!1;if(S&&k&&y&&(l.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:S}),g&&R.current.delete(g)),"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(){p.store.dispatch.island.toggleAvoidToShow(!1),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)},500),o&&u!==r&&p.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&u===r?setTimeout(function(){l.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||p.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&u===r){var q=p.store.getState().conference,C=q.usersList,w=q.pendingUsers,N=C&&Object.keys(C).length>0,_=w&&Object.keys(w).length>0;N||_?setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):p.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&u===r&&"waitingConference"!==s&&setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),"user_busy"===(null==e?void 0:e.cause)){var I=p.store.getState().currentUser,T=I.endpoints,j=I.username,D=((null==T?void 0:T.extension)||[]).map(function(e){return e.id}),U=p.store.getState().currentCall,x=U.incoming,E=U.accepted,O=U.transferring,P=p.store.getState().conference,A=P.isActive,F=P.conferenceStartedFrom;!(x&&e.callerNum&&D.includes(e.callerNum))&&(!E||A||O)&&(p.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout(function(){p.store.dispatch.player.stopAudioPlayer()},4e3),setTimeout(function(){p.store.dispatch.player.updateStartAudioPlayer({src:a.default,loop:!0}),p.store.dispatch.island.setIslandView("operatorBusy")},600),A&&F===j&&setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var M=p.store.getState().conference,V=M.isActive,L=M.conferenceStartedFrom,Q=p.store.getState().currentUser.username;if(V&&L===Q){var W=p.store.getState().conference;C=W.usersList,w=W.pendingUsers,N=C&&Object.keys(C).length>0,_=w&&Object.keys(w).length>0,N||_?(setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),w&&w[e.callerNum]&&p.store.dispatch.conference.removePendingUser(e.callerNum)):p.store.dispatch.conference.resetConference()}}}),A.current.on("extenConnected",function(e){var n=p.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)&&(p.store.dispatch.island.toggleAvoidToShow(!0),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),l.eventDispatch("phone-island-call-answered",{extensionType:o}))}),A.current.on("extenUpdate",function(e){var n,t,r;O.users.updateExtension(e);var i=p.store.getState().users.extensions,o={},u=p.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,v=o[e.username],m=Object.keys(e.conversations||{}),g=e.username===T,h=(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){z(e)&&R.current.set(l,{conversation:e,cachedAt:Date.now()})}));var k=!1;if((null==e?void 0:e.username)===T&&!f.isEmpty(h)&&(null==h?void 0:h.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===h.owner});S&&"mobile"===S.type&&(k=!0)}if(b.dispatchExtensions(e),f.isEmpty(h)){var y=null==v?void 0:v.some(function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!f.isEmpty(t)});y||b.dispatchConversations(e)}else k||b.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===T&&(p.store.dispatch.island.toggleAvoidToShow(!0),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===T&&(J(e,h),O.currentUser.updateConversations(e))}),A.current.on("queueUpdate",function(e){O.queue.updateQueue(e);var n,t,r,i=(n=p.store.getState().currentUser.conversations,t=p.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&&x(i),b.dispatchQueueUpdate(e)}),A.current.on("queueMemberUpdate",function(e){O.queue.updateQueueMember(e),b.dispatchQueueMemberUpdate(e)}),A.current.on("takeOver",function(){b.dispatchAlreadyLogin()}),A.current.on("serverReloaded",function(){b.dispatchServerReload()}),A.current.on("parkingUpdate",function(e){b.dispatchParkingUpdate(e)}),A.current.on("actionNethLink",function(e,n){b.dispatchUrlCall(e,n)}),A.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&&v.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"})}),A.current.on("message",function(e){switch(e.message){case"videoCallStart":var n=p.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&&(O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video")),b.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video"),O.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video"),O.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}}),A.current.on("updateDefaultDevice",function(n){b.dispatchDefaultDeviceUpdate(n);var t=p.store.getState().users.extensions,r=p.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})),p.store.dispatch.currentUser.updateCurrentDefaultDevice(o),m.checkMediaPermissions()}}}),A.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=p.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}))}),p.store.dispatch.conference.updateConferenceUsersList(o),p.store.dispatch.conference.updateConferenceId(t)}}),A.current.on("confBridgeEnd",function(e){e&&(null==e?void 0:e.id)&&(p.store.dispatch.conference.resetConference(),l.eventDispatch("phone-island-conference-finished",{}))}),A.current.on("callWebrtc",function(e){l.eventDispatch("phone-island-call-start",{number:e})}),A.current.on("newVoiceMessageCounter",function(e){l.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})}),A.current.on("streamingSourceUpdate",function(e){l.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){p.store.getState().island.isFromStreaming;var i=p.store.getState().currentCall.streamingSourceNumber;h.getStreamingSourceId(i),O.streaming.updateSourceImage({source:t,image:r})}}}),A.current.on("satellite/transcription",function(e){var n=W.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}l.eventDispatch("phone-island-conversation-transcription",e)}),function(){clearInterval(P.current),L.current.clear(),Q.current.clear(),A.current.close()}},[I,T,j,E,O]),n.useEffect(function(){var e,n;if(D){console.info("Socket reload requested");var t=p.store.getState().alerts.data,r=p.store.getState().island.forceReload,i=(null===(e=t.socket_down)||void 0===e?void 0:e.active)||!1,o=!(null===(n=A.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(){A.current.disconnect(),A.current.connect(),U()},100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}},[D]),_.default.createElement(_.default.Fragment,null,x)};
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("../lib/phone/counterpartDevice.js"),u=require("../services/phonebook.js"),c=require("../services/user.js"),a=require("../static/busy_ringtone.js"),s=require("../utils/customHooks/useEventListener.js"),l=require("../utils/genericFunctions/eventDispatch.js"),d=require("../utils/genericFunctions/withTimeout.js"),v=require("../utils/genericFunctions/summaryEvents.js"),p=require("../store/index.js");require("../lib/webrtc/janus.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var m=require("../lib/devices/devices.js"),f=require("../lib/user/default_device.js"),g=require("../utils/genericFunctions/isEmpty.js"),h=require("../utils/streaming/getStreamingSourceId.js"),b=require("../events/SocketEvents.js"),k=require("../utils/genericFunctions/timestamp.js"),y=require("../lib/user/extensions.js"),S=require("../utils/streaming/isFromStreaming.js"),q=require("../lib/phone/queue.js"),w=require("../lib/phone/trunk.js"),C=require("../node_modules/react-redux/es/hooks/useDispatch.js");function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var N=_(n);exports.Socket=function(_){var T=_.hostName,I=_.username,j=_.authToken,D=_.reload,U=_.reloadedCallback,x=_.children,E=_.uaType,O=C.useDispatch(),P=n.useRef(),A=n.useRef(),F=n.useRef(!1),M=n.useRef(0),V=n.useRef(null),R=n.useRef(new Map),L=n.useRef(new Map),Q=n.useRef(new Set),W=n.useRef({linkedid:null,uniqueid:null});s.useEventListener("phone-island-start-transcription",function(e){if(A.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;W.current={linkedid:n,uniqueid:t},A.current.emit("start_transcription",{linkedid:n,uniqueid:t})}}),s.useEventListener("phone-island-stop-transcription",function(e){if(A.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;W.current={linkedid:null,uniqueid:null},A.current.emit("stop_transcription",{linkedid:n,uniqueid:t})}}),s.useEventListener("phone-island-current-user-queue-call-waiting",function(e){O.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})}),s.useEventListener("phone-island-current-user-queue-call-connected",function(e){O.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,s=function(e){if(e.counterpartNum&&S.isFromStreaming(e.counterpartNum)){O.island.setIsFromStreaming(!0),O.currentCall.updateCurrentCall({streamingSourceNumber:e.counterpartNum});var n=h.getStreamingSourceId(e.counterpartNum);n&&c.subscribe({id:n}).catch(function(e){return console.error("Error subscribing to streaming source:",e)})}},C=function(e){return(e||"").replace(/\D/g,"")},_=function(e){var n=i.getDisplayName(e),t=((null==e?void 0:e.counterpartNum)||"").trim();return n&&n!==t&&!i.isNumberOnlyName(n)?n:(t?L.current.get(C(t)):void 0)||n},N=function(e){if(e){var n=(e.counterpartNum||"").trim();if(!(n.length<3)){var t=(e.counterpartName||"").trim();if(!t||"<unknown>"===t||t===n||i.isNumberOnlyName(t)){var r=p.store.getState().users.extensions;if(!(r&&r[n]||S.isFromStreaming(n))){var o=C(n);L.current.has(o)||e.id&&Q.current.has(e.id)||(e.id&&(Q.current.size>500&&Q.current.clear(),Q.current.add(e.id)),u.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=C(e);return 0!==n.length&&(n===o||!(Math.min(n.length,o.length)<6)&&(n.endsWith(o)||o.endsWith(n)))})}),t=((null==n?void 0:n.name)||(null==n?void 0:n.company)||"").trim();if(t){L.current.set(o,t);var r=p.store.getState().currentCall;C(r.number)===o&&O.currentCall.updateCurrentCall({displayName:t})}}).catch(function(){}))}}}}},D=function(e){return q.getCurrentCallQueueContext(e,p.store.getState().queue)},U=function(e,n){var t=p.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}},x=function(e){var n,t,r,i;if(e){var o=D(e),u=U(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))&&(b.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))&&(b.dispatchCurrentUserQueueCallWaiting(u),V.current={conversationId:e.id,phase:"waiting"});else V.current=null}else V.current=null},B=function(e){return(null==e?void 0:e.linkedId)||(null==e?void 0:e.linkedid)||""},K=function(e){return(null==e?void 0:e.uniqueId)||(null==e?void 0:e.uniqueid)||""},z=function(e){return!!(null==e?void 0:e.connected)&&!!B(e)&&!!K(e)},H=function(n){var t=p.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=z(t),a=z(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(z(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=R.current.get(n);if(!t)return null;var r=Date.now()-t.cachedAt;return r>6e5?(R.current.delete(n),null):e.__assign(e.__assign({},t),{cacheAgeMs:r})}(n);return o&&z(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||{})})},J=function(n,t){var r=p.store.getState().currentCall,u=r.transferring,a=r.transferSwitching,d=r.transferCalls,v=p.store.getState().island.view;if(Object.keys(t).length>0){if(n.status){var m=p.store.getState().users.extensions,g=p.store.getState().currentUser.default_device,h=p.store.getState().currentUser,b=h.endpoints,S=h.username,q=function(){if(!m||!S)return!1;var e=Object.values(m).filter(function(e){return(null==e?void 0:e.username)===S});return null==e?void 0:e.some(function(e){var n=null==b?void 0:b.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=p.store.getState().currentCall,t=n.accepted,r=n.ownerExtension;return t&&!!r&&!!e&&r!==e}(t.owner))break;var C=D(t),T=U(t,C);x(t),s(t),N(t),("mobile"===E&&q()||"desktop"===E&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type)))&&(O.currentCall.checkIncomingUpdatePlay({conversationId:t.id,displayName:_(t),number:"".concat(t.counterpartNum),incomingSocket:!0,incoming:!0,throughQueue:Boolean(T.queueId||T.queueName||T.queueNumber),queueId:T.queueId,queueName:T.queueName,queueNumber:T.queueNumber,queuePosition:T.queuePosition,queueWaitingTime:T.queueWaitingTime,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",ownerExtension:t.owner,counterpartDeviceType:o.getCounterpartDeviceType(t,p.store.getState().users)}),p.store.dispatch.island.setIslandView("call")),F.current||(F.current=!0,c.getCurrentUserInfo().then(function(n){n&&(O.currentUser.updateCurrentUser(n),l.eventDispatch("phone-island-user-informations-update",e.__assign({},n)),n.settings&&n.settings.open_param_url?O.paramUrl.setOpenParamUrlType(n.settings.open_param_url):O.paramUrl.setOpenParamUrlType("never"))}).catch(function(e){console.error("Error getting current user info:",e)}).finally(function(){setTimeout(function(){F.current=!1},100)}));var I=p.store.getState().paramUrl.openParamUrlType,j=p.store.getState().island.urlOpened;if("ringing"===I&&!j){var P=w.isFromTrunk(t.counterpartNum);p.store.dispatch.paramUrl.setThroughTrunk(P),p.store.dispatch.island.setUrlOpened(!1),l.eventDispatch("phone-island-url-parameter-opened",{counterpartNum:t.counterpartNum,counterpartName:_(t),owner:t.owner,uniqueId:t.uniqueId,linkedId:t.linkedId,throughQueue:t.throughQueue,throughTrunk:P,direction:t.direction,connected:t.connected})}break;case"busy":if(x(t),s(t),"mobile"===E&&q()||"desktop"===E&&("webrtc"===(null==g?void 0:g.type)||void 0===(null==g?void 0:g.type)&&!q()||!q()&&"physical"===(null==g?void 0:g.type))){if(t&&t.connected)O.currentCall.updateCurrentCall({conversationId:t.id,displayName:_(t),number:"".concat(t.counterpartNum),ownerExtension:t.owner,username:"".concat(m&&m[t.counterpartNum]&&m[t.counterpartNum].username)||"",chDest:(null==t?void 0:t.chDest)||{},chSource:(null==t?void 0:t.chSource)||{},counterpartDeviceType:o.getCounterpartDeviceType(t,p.store.getState().users)}),O.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),O.currentCall.addTransferCalls({type:"transferred",displayName:_(t),number:"".concat(t.counterpartNum),startTime:"".concat(k.getTimestampInSeconds())}),p.store.getState().island.isFromStreaming&&"out"===t.direction&&setTimeout(function(){O.island.setIslandView("streamingAnswer")},200),f.isPhysical()&&function(e){O.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),l.eventDispatch("phone-island-call-answered",{}),p.store.dispatch.player.stopAudioPlayer(),p.store.dispatch.player.setAudioPlayerLoop(!1)}(t),"call"===v&&u&&O.currentCall.updateCurrentCall({transferring:!1});if(d.length>1)O.currentCall.deleteTransferCalls();else if(t&&!t.connected){if(u&&!a){var A=d.find(function(e){return e.number===t.counterpartNum});!t.connected&&A&&(O.currentCall.updateCurrentCall({transferring:!1}),l.eventDispatch("phone-island-call-transfer-failed",{}),O.currentCall.updateTransferSwitching(!1))}"REC"===(null==t?void 0:t.counterpartName)&&O.physicalRecorder.setRecordingTempVariable(!0)}t&&!t.connected&&"out"===t.direction&&("REC"!==(null==t?void 0:t.counterpartName)&&N(t),O.currentCall.checkOutgoingUpdate({outgoingSocket:!0,outgoing:"REC"!==(null==t?void 0:t.counterpartName),displayName:_(t),counterpartDeviceType:"",number:"".concat(null==t?void 0:t.counterpartNum),username:"".concat(m&&m[null==t?void 0:t.counterpartNum]&&m[null==t?void 0:t.counterpartNum].username)||""}))}break;case"onhold":x(t);var M=t.counterpartName,V=t.counterpartNum,R=t.startTime;u&&V&&M&&"<unknown>"!==M&&(O.currentCall.addTransferCalls({type:"destination",displayName:i.getDisplayName(t),number:V,startTime:"".concat(k.getTimestampInSeconds())}),O.currentCall.updateCurrentCall({displayName:i.getDisplayName(t),number:V,startTime:"".concat(R/1e3),conversationId:t.id,counterpartDeviceType:""}),O.island.setIslandView("call"));break;case"busy_ringing":l.eventDispatch("phone-island-call-ringing",{})}}}else"online"==n.status&&y.userTotallyFree()&&(x(null),O.player.stopAudioPlayer(),O.currentCall.reset(),O.listen.reset(),O.physicalRecorder.setRecordingTempVariable(!1),O.island.setIsFromStreaming(!1))};return n={upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3},"new"===r.getApiMode(I)&&(n.path="/api/ws"),A.current=t.io("https://"+T,n),O.websocket.update({socket:A.current}),A.current.on("connect",function(){console.debug("Socket connected sid: ".concat(A.current.id)),l.eventDispatch("phone-island-socket-connected",{})}),A.current.on("disconnect",function(e){console.debug("Socket disconnect - reason: ".concat(e)),P.current&&(clearInterval(P.current),P.current=null),e.includes("server disconnect")?l.eventDispatch("phone-island-server-disconnected",{}):l.eventDispatch("phone-island-socket-disconnected",{})}),A.current.io.on("error",function(e){console.debug("Socket error: ",e)}),A.current.on("connect_error",function(e){console.debug("Socket connect_error: ",e)}),A.current.io.on("reconnect",function(e){M.current=0,l.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(A.current.id,")"))}),A.current.io.on("reconnect_attempt",function(e){console.debug("Socket reconnect_attempt ".concat(e))}),A.current.io.on("reconnect_error",function(e){console.debug("Socket reconnect_error: ",e)}),A.current.io.on("reconnect_failed",function(){console.debug("Socket reconnect_failed")}),A.current.on("connect",function(){console.debug("Socket on: "+T+" is connected!"),A.current.emit("login",{accessKeyId:"".concat(I),token:j,uaType:E})}),A.current.on("authe_ok",function(){console.debug("Socket authentication success!"),l.eventDispatch("phone-island-socket-authorized",{}),P.current&&clearInterval(P.current),P.current=setInterval(function(){A.current.volatile.emit("ping",d.withTimeout(function(){M.current=0,setTimeout(function(){O.alerts.removeAlert("socket_down"),l.eventDispatch("phone-island-alert-removed",{type:"socket_down"}),l.eventDispatch("phone-island-socket-disconnected-popup-close",{})},0)},function(){M.current++,console.debug("Socket ping timeout (".concat(M.current,"/").concat(3,"), connected: ").concat(A.current.connected)),setTimeout(function(){var e,n,t=A.current.connected&&M.current>=3;if(!A.current.connected||t){var r=p.store.getState().webrtc.sipcall,i=p.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"),A.current.disconnect(),A.current.connect()),O.alerts.setAlert("socket_down"),l.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.error("Socket is unreachable!")}},0)},5e3))},5e3)}),A.current.on("userMainPresenceUpdate",function(n){p.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),b.dispatchMainPresence(n)}),A.current.on("extenHangup",function(e){var n=p.store.getState().currentUser,t=n.endpoints,r=n.username,i=p.store.getState().conference,o=i.isActive,u=i.conferenceStartedFrom,c=p.store.getState().island,s=c.view,d=c.previewCallFromMobileOrNethlink,v=(null==t?void 0:t.extension)||[],m=v.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=v.find(function(n){return n.id===e.callerNum}),h=null==g?void 0:g.type,b=H(f).conversation,k=B(b),y=K(b),S=(null==b?void 0:b.connected)||!1;if(y&&k&&S&&(l.eventDispatch("phone-island-summary-call-check",{linkedid:k,uniqueid:y}),f&&R.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(){p.store.dispatch.island.toggleAvoidToShow(!1),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!1)},500),o&&u!==r&&p.store.dispatch.conference.resetConference()):"normal_circuit_congestion"===(null==e?void 0:e.cause)&&o&&u===r?setTimeout(function(){l.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||p.store.dispatch.conference.resetConference(),("normal_clearing"===e.cause&&("webrtc"===h||"nethlink"===h)||"call_rejected"===(null==e?void 0:e.cause))&&o&&u===r){var q=p.store.getState().conference,w=q.usersList,C=q.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0;_||N?setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800):p.store.dispatch.conference.resetConference()}if("interworking"===(null==e?void 0:e.cause)&&o&&u===r&&"waitingConference"!==s&&setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),"user_busy"===(null==e?void 0:e.cause)){var T=p.store.getState().currentUser,I=T.endpoints,j=T.username,D=((null==I?void 0:I.extension)||[]).map(function(e){return e.id}),U=p.store.getState().currentCall,x=U.incoming,E=U.accepted,O=U.transferring,P=p.store.getState().conference,A=P.isActive,F=P.conferenceStartedFrom;!(x&&e.callerNum&&D.includes(e.callerNum))&&(!E||A||O)&&(p.store.dispatch.island.setOperatorBusyActive({callerNumber:e.callerNum||"Unknown"}),setTimeout(function(){p.store.dispatch.player.stopAudioPlayer()},4e3),setTimeout(function(){p.store.dispatch.player.updateStartAudioPlayer({src:a.default,loop:!0}),p.store.dispatch.island.setIslandView("operatorBusy")},600),A&&F===j&&setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},4e3))}if("subscriber_absent"===(null==e?void 0:e.cause)){var M=p.store.getState().conference,V=M.isActive,L=M.conferenceStartedFrom,Q=p.store.getState().currentUser.username;if(V&&L===Q){var W=p.store.getState().conference;w=W.usersList,C=W.pendingUsers,_=w&&Object.keys(w).length>0,N=C&&Object.keys(C).length>0,_||N?(setTimeout(function(){l.eventDispatch("phone-island-view-changed",{viewType:"waitingConference"})},800),C&&C[e.callerNum]&&p.store.dispatch.conference.removePendingUser(e.callerNum)):p.store.dispatch.conference.resetConference()}}}),A.current.on("extenConnected",function(e){var n=p.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)&&(p.store.dispatch.island.toggleAvoidToShow(!0),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0),l.eventDispatch("phone-island-call-answered",{extensionType:o}))}),A.current.on("extenUpdate",function(e){var n,t,r;O.users.updateExtension(e);var i=p.store.getState().users.extensions,o={},u=p.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,v=o[e.username],m=Object.keys(e.conversations||{}),f=e.username===I,h=(null===(n=e.conversations)||void 0===n?void 0:n[m[0]])||{};f&&(l=e.exten,d=e.conversations,l&&Object.values(d||{}).forEach(function(e){z(e)&&R.current.set(l,{conversation:e,cachedAt:Date.now()})}));var k=!1;if((null==e?void 0:e.username)===I&&!g.isEmpty(h)&&(null==h?void 0:h.owner)){var y=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===h.owner});y&&"mobile"===y.type&&(k=!0)}if(b.dispatchExtensions(e),g.isEmpty(h)){var S=null==v?void 0:v.some(function(e){var n,t=null===(n=i[e])||void 0===n?void 0:n.conversations;return!g.isEmpty(t)});S||b.dispatchConversations(e)}else k||b.dispatchConversations(e);k&&"busy"===(null==e?void 0:e.status)&&(null==e?void 0:e.username)===I&&(p.store.dispatch.island.toggleAvoidToShow(!0),p.store.dispatch.island.setPreviewCallFromMobileOrNethlink(!0)),e.username===I&&(J(e,h),O.currentUser.updateConversations(e))}),A.current.on("queueUpdate",function(e){O.queue.updateQueue(e);var n,t,r,i=(n=p.store.getState().currentUser.conversations,t=p.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&&x(i),b.dispatchQueueUpdate(e)}),A.current.on("queueMemberUpdate",function(e){O.queue.updateQueueMember(e),b.dispatchQueueMemberUpdate(e)}),A.current.on("takeOver",function(){b.dispatchAlreadyLogin()}),A.current.on("serverReloaded",function(){b.dispatchServerReload()}),A.current.on("parkingUpdate",function(e){b.dispatchParkingUpdate(e)}),A.current.on("actionNethLink",function(e,n){b.dispatchUrlCall(e,n)}),A.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&&v.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"})}),A.current.on("message",function(e){switch(e.message){case"videoCallStart":var n=p.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&&(O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video")),b.dispatchVideoCallStarted({initiator:"remote",callUser:e.callUser,destUser:e.destUser});break;case"screenSharingStart":O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video"),O.screenShare.update({isJoiningScreenShare:!0,room:e.roomId});break;case"screenSharingStop":O.island.toggleSideViewVisible(!1),O.island.toggleTranscriptionViewVisible(!1),O.island.setIslandView("video"),O.screenShare.update({isLeavingScreenShare:!0});break;default:console.warn("Socket: unknown message type ",e.message)}}),A.current.on("updateDefaultDevice",function(n){b.dispatchDefaultDeviceUpdate(n);var t=p.store.getState().users.extensions,r=p.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})),p.store.dispatch.currentUser.updateCurrentDefaultDevice(o),m.checkMediaPermissions()}}}),A.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=p.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}))}),p.store.dispatch.conference.updateConferenceUsersList(o),p.store.dispatch.conference.updateConferenceId(t)}}),A.current.on("confBridgeEnd",function(e){e&&(null==e?void 0:e.id)&&(p.store.dispatch.conference.resetConference(),l.eventDispatch("phone-island-conference-finished",{}))}),A.current.on("callWebrtc",function(e){l.eventDispatch("phone-island-call-start",{number:e})}),A.current.on("newVoiceMessageCounter",function(e){l.eventDispatch("phone-island-voicemail-received",{voicemailInfo:e})}),A.current.on("streamingSourceUpdate",function(e){l.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&&O.streaming.updateSourceImage({source:t,image:r})}}),A.current.on("satellite/transcription",function(e){var n=W.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}l.eventDispatch("phone-island-conversation-transcription",e)}),function(){clearInterval(P.current),L.current.clear(),Q.current.clear(),A.current.close()}},[T,I,j,E,O]),n.useEffect(function(){var e,n;if(D){console.info("Socket reload requested");var t=p.store.getState().alerts.data,r=p.store.getState().island.forceReload,i=(null===(e=t.socket_down)||void 0===e?void 0:e.active)||!1,o=!(null===(n=A.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(){A.current.disconnect(),A.current.connect(),U()},100)):(console.info("Socket already connected (no alert active), skipping reconnection"),U())}},[D]),N.default.createElement(N.default.Fragment,null,x)};
2
2
  //# sourceMappingURL=Socket.js.map