@nethesis/phone-island 0.8.44 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/README.md +7 -1
  2. package/dist/App.js +1 -1
  3. package/dist/App.js.map +1 -1
  4. package/dist/components/AlertView/index.js +1 -1
  5. package/dist/components/AlertView/index.js.map +1 -1
  6. package/dist/components/AudioPlayerView/index.js +1 -1
  7. package/dist/components/AudioPlayerView/index.js.map +1 -1
  8. package/dist/components/Button.js +1 -1
  9. package/dist/components/Button.js.map +1 -1
  10. package/dist/components/CallView/Actions.js +1 -1
  11. package/dist/components/CallView/Actions.js.map +1 -1
  12. package/dist/components/CallView/Avatar.js +1 -1
  13. package/dist/components/CallView/Avatar.js.map +1 -1
  14. package/dist/components/CallView/Number.js +1 -1
  15. package/dist/components/CallView/Number.js.map +1 -1
  16. package/dist/components/CallView/index.js +1 -1
  17. package/dist/components/CallView/index.js.map +1 -1
  18. package/dist/components/CustomThemedTooltip.js +2 -0
  19. package/dist/components/CustomThemedTooltip.js.map +1 -0
  20. package/dist/components/Hangup.js +1 -1
  21. package/dist/components/Hangup.js.map +1 -1
  22. package/dist/components/Island.js +1 -1
  23. package/dist/components/Island.js.map +1 -1
  24. package/dist/components/IslandMotion.js +1 -1
  25. package/dist/components/IslandMotion.js.map +1 -1
  26. package/dist/components/KeypadView/Actions.js +1 -1
  27. package/dist/components/KeypadView/Actions.js.map +1 -1
  28. package/dist/components/KeypadView/index.js +1 -1
  29. package/dist/components/KeypadView/index.js.map +1 -1
  30. package/dist/components/PhysicalRecorderView/index.js +1 -1
  31. package/dist/components/PhysicalRecorderView/index.js.map +1 -1
  32. package/dist/components/RecorderView/Actions.js +1 -1
  33. package/dist/components/RecorderView/Actions.js.map +1 -1
  34. package/dist/components/SettingsView/AudioView.js +1 -1
  35. package/dist/components/SettingsView/AudioView.js.map +1 -1
  36. package/dist/components/SettingsView/MicrophoneView.js +2 -0
  37. package/dist/components/SettingsView/MicrophoneView.js.map +1 -0
  38. package/dist/components/SettingsView/SettingsHeader.js +1 -1
  39. package/dist/components/SettingsView/SettingsHeader.js.map +1 -1
  40. package/dist/components/SettingsView/ThemeView.js +1 -1
  41. package/dist/components/SettingsView/ThemeView.js.map +1 -1
  42. package/dist/components/SettingsView/index.js +1 -1
  43. package/dist/components/SettingsView/index.js.map +1 -1
  44. package/dist/components/SideView/SideView.js +1 -1
  45. package/dist/components/SideView/SideView.js.map +1 -1
  46. package/dist/components/Socket.js +1 -1
  47. package/dist/components/Socket.js.map +1 -1
  48. package/dist/components/SwitchDeviceView/index.js +2 -0
  49. package/dist/components/SwitchDeviceView/index.js.map +1 -0
  50. package/dist/components/SwitchInputView/DropdownContent.js +1 -1
  51. package/dist/components/SwitchInputView/DropdownContent.js.map +1 -1
  52. package/dist/components/SwitchInputView/Index.js +1 -1
  53. package/dist/components/TransferView/TransferActions.js +1 -1
  54. package/dist/components/TransferView/TransferActions.js.map +1 -1
  55. package/dist/components/TransferView/TransferList.js +1 -1
  56. package/dist/components/TransferView/TransferList.js.map +1 -1
  57. package/dist/components/WebRTC.js +1 -1
  58. package/dist/components/WebRTC.js.map +1 -1
  59. package/dist/events/CallEvents.js +1 -1
  60. package/dist/events/CallEvents.js.map +1 -1
  61. package/dist/index.css +1 -1
  62. package/dist/lib/i18n.js +1 -1
  63. package/dist/lib/i18n.js.map +1 -1
  64. package/dist/lib/phone/call.js +1 -1
  65. package/dist/lib/phone/call.js.map +1 -1
  66. package/dist/models/currentCall.js +1 -1
  67. package/dist/models/currentCall.js.map +1 -1
  68. package/dist/models/island.js +1 -1
  69. package/dist/models/island.js.map +1 -1
  70. package/dist/models/motions.js +1 -1
  71. package/dist/models/motions.js.map +1 -1
  72. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js +1 -1
  73. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js.map +1 -1
  74. package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js +1 -1
  75. package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js.map +1 -1
  76. package/dist/public/locales/en/translation.json.js +2 -0
  77. package/dist/public/locales/en/translation.json.js.map +1 -0
  78. package/dist/public/locales/it/translation.json.js +2 -0
  79. package/dist/public/locales/it/translation.json.js.map +1 -0
  80. package/dist/services/astproxy.js +1 -1
  81. package/dist/services/astproxy.js.map +1 -1
  82. package/dist/services/user.js +1 -1
  83. package/dist/services/user.js.map +1 -1
  84. package/dist/utils/deviceUtils.js +2 -0
  85. package/dist/utils/deviceUtils.js.map +1 -0
  86. package/dist/utils/genericFunctions/isBackCallVisible.js +2 -0
  87. package/dist/utils/genericFunctions/isBackCallVisible.js.map +1 -0
  88. package/package.json +8 -2
  89. package/dist/App.d.ts +0 -10
  90. package/dist/_virtual/browser-ponyfill.js +0 -2
  91. package/dist/_virtual/browser-ponyfill.js.map +0 -1
  92. package/dist/_virtual/getFetch.cjs.js +0 -2
  93. package/dist/_virtual/getFetch.cjs.js.map +0 -1
  94. package/dist/components/AlertGuard.d.ts +0 -12
  95. package/dist/components/AlertView/index.d.ts +0 -6
  96. package/dist/components/AudioBars.d.ts +0 -15
  97. package/dist/components/AudioPlayerView/Avatar.d.ts +0 -6
  98. package/dist/components/AudioPlayerView/Progress.d.ts +0 -5
  99. package/dist/components/AudioPlayerView/index.d.ts +0 -5
  100. package/dist/components/Button.d.ts +0 -8
  101. package/dist/components/CallView/Actions.d.ts +0 -3
  102. package/dist/components/CallView/Avatar.d.ts +0 -3
  103. package/dist/components/CallView/BackCall.d.ts +0 -6
  104. package/dist/components/CallView/DisplayName.d.ts +0 -5
  105. package/dist/components/CallView/Number.d.ts +0 -3
  106. package/dist/components/CallView/Timer.d.ts +0 -8
  107. package/dist/components/CallView/index.d.ts +0 -8
  108. package/dist/components/Close.d.ts +0 -3
  109. package/dist/components/Events.d.ts +0 -7
  110. package/dist/components/Hangup.d.ts +0 -12
  111. package/dist/components/Island.d.ts +0 -11
  112. package/dist/components/IslandDrag.d.ts +0 -7
  113. package/dist/components/IslandMotion.d.ts +0 -6
  114. package/dist/components/KeypadView/Actions.d.ts +0 -6
  115. package/dist/components/KeypadView/index.d.ts +0 -5
  116. package/dist/components/PhysicalRecorderView/PhysicalRecordingTimer.d.ts +0 -5
  117. package/dist/components/PhysicalRecorderView/index.d.ts +0 -4
  118. package/dist/components/RecorderView/Actions.d.ts +0 -2
  119. package/dist/components/RecorderView/Bar.d.ts +0 -6
  120. package/dist/components/RecorderView/BarsGroup.d.ts +0 -8
  121. package/dist/components/RecorderView/Timer.d.ts +0 -5
  122. package/dist/components/RecorderView/index.d.ts +0 -4
  123. package/dist/components/RestAPI.d.ts +0 -9
  124. package/dist/components/SettingsView/AudioView.d.ts +0 -3
  125. package/dist/components/SettingsView/MichrophoneView.d.ts +0 -3
  126. package/dist/components/SettingsView/MichrophoneView.js +0 -2
  127. package/dist/components/SettingsView/MichrophoneView.js.map +0 -1
  128. package/dist/components/SettingsView/SettingsHeader.d.ts +0 -7
  129. package/dist/components/SettingsView/ThemeView.d.ts +0 -3
  130. package/dist/components/SettingsView/index.d.ts +0 -4
  131. package/dist/components/SideView/SideView.d.ts +0 -6
  132. package/dist/components/Socket.d.ts +0 -12
  133. package/dist/components/SwitchInputView/DropdownContent.d.ts +0 -6
  134. package/dist/components/SwitchInputView/Index.d.ts +0 -1
  135. package/dist/components/TextScroll.d.ts +0 -6
  136. package/dist/components/TransferView/ListAvatar.d.ts +0 -7
  137. package/dist/components/TransferView/TransferActions.d.ts +0 -5
  138. package/dist/components/TransferView/TransferList.d.ts +0 -5
  139. package/dist/components/TransferView/index.d.ts +0 -2
  140. package/dist/components/VideoView/index.d.ts +0 -4
  141. package/dist/components/ViewsTransition.d.ts +0 -7
  142. package/dist/components/WebRTC.d.ts +0 -14
  143. package/dist/components/index.d.ts +0 -8
  144. package/dist/events/CallEvents.d.ts +0 -8
  145. package/dist/events/PlayerEvents.d.ts +0 -6
  146. package/dist/events/RecorderEvents.d.ts +0 -10
  147. package/dist/events/SocketEvents.d.ts +0 -61
  148. package/dist/events/index.d.ts +0 -4
  149. package/dist/index.d.ts +0 -1
  150. package/dist/lib/avatars/avatars.d.ts +0 -9
  151. package/dist/lib/darkTheme.d.ts +0 -5
  152. package/dist/lib/devices/devices.d.ts +0 -2
  153. package/dist/lib/i18n.d.ts +0 -2
  154. package/dist/lib/island/island.d.ts +0 -12
  155. package/dist/lib/phone/audio.d.ts +0 -4
  156. package/dist/lib/phone/call.d.ts +0 -54
  157. package/dist/lib/phone/conversation.d.ts +0 -2
  158. package/dist/lib/player/audio.d.ts +0 -16
  159. package/dist/lib/storage/local_storage.d.ts +0 -16
  160. package/dist/lib/user/default_device.d.ts +0 -5
  161. package/dist/lib/user/extensions.d.ts +0 -23
  162. package/dist/lib/webrtc/connection.d.ts +0 -6
  163. package/dist/lib/webrtc/extension.d.ts +0 -4
  164. package/dist/lib/webrtc/messages.d.ts +0 -38
  165. package/dist/models/alerts.d.ts +0 -64
  166. package/dist/models/audioBars.d.ts +0 -46
  167. package/dist/models/avatars.d.ts +0 -21
  168. package/dist/models/currentCall.d.ts +0 -681
  169. package/dist/models/currentUser.d.ts +0 -66
  170. package/dist/models/darkTheme.d.ts +0 -26
  171. package/dist/models/fetchDefaults.d.ts +0 -40
  172. package/dist/models/index.d.ts +0 -34
  173. package/dist/models/island.d.ts +0 -62
  174. package/dist/models/listen.d.ts +0 -24
  175. package/dist/models/motions.d.ts +0 -532
  176. package/dist/models/physicalRecorder.d.ts +0 -47
  177. package/dist/models/player.d.ts +0 -169
  178. package/dist/models/recorder.d.ts +0 -54
  179. package/dist/models/users.d.ts +0 -49
  180. package/dist/models/webrtc.d.ts +0 -129
  181. package/dist/node_modules/cross-fetch/dist/browser-ponyfill.js +0 -2
  182. package/dist/node_modules/cross-fetch/dist/browser-ponyfill.js.map +0 -1
  183. package/dist/node_modules/i18next-http-backend/esm/getFetch.cjs.js +0 -2
  184. package/dist/node_modules/i18next-http-backend/esm/getFetch.cjs.js.map +0 -1
  185. package/dist/node_modules/i18next-http-backend/esm/index.js +0 -2
  186. package/dist/node_modules/i18next-http-backend/esm/index.js.map +0 -1
  187. package/dist/node_modules/i18next-http-backend/esm/request.js +0 -2
  188. package/dist/node_modules/i18next-http-backend/esm/request.js.map +0 -1
  189. package/dist/node_modules/i18next-http-backend/esm/utils.js +0 -2
  190. package/dist/node_modules/i18next-http-backend/esm/utils.js.map +0 -1
  191. package/dist/services/astproxy.d.ts +0 -33
  192. package/dist/services/history_call.d.ts +0 -8
  193. package/dist/services/offhour.d.ts +0 -15
  194. package/dist/services/user.d.ts +0 -15
  195. package/dist/static/busy_ringtone.d.ts +0 -2
  196. package/dist/static/dtmf/dtmf_0.d.ts +0 -2
  197. package/dist/static/dtmf/dtmf_1.d.ts +0 -2
  198. package/dist/static/dtmf/dtmf_2.d.ts +0 -2
  199. package/dist/static/dtmf/dtmf_3.d.ts +0 -2
  200. package/dist/static/dtmf/dtmf_4.d.ts +0 -2
  201. package/dist/static/dtmf/dtmf_5.d.ts +0 -2
  202. package/dist/static/dtmf/dtmf_6.d.ts +0 -2
  203. package/dist/static/dtmf/dtmf_7.d.ts +0 -2
  204. package/dist/static/dtmf/dtmf_8.d.ts +0 -2
  205. package/dist/static/dtmf/dtmf_9.d.ts +0 -2
  206. package/dist/static/dtmf/dtmf_busy.d.ts +0 -2
  207. package/dist/static/dtmf/dtmf_dialtone.d.ts +0 -2
  208. package/dist/static/dtmf/dtmf_pound.d.ts +0 -2
  209. package/dist/static/dtmf/dtmf_rbt-US.d.ts +0 -2
  210. package/dist/static/dtmf/dtmf_star.d.ts +0 -2
  211. package/dist/static/dtmf/index.d.ts +0 -18
  212. package/dist/static/incoming_ringtone.d.ts +0 -2
  213. package/dist/static/outgoing_ringtone.d.ts +0 -2
  214. package/dist/static/test_audio.d.ts +0 -2
  215. package/dist/store/index.d.ts +0 -6
  216. package/dist/styles/CustomRange.styles.d.ts +0 -3
  217. package/dist/styles/Island.styles.d.ts +0 -31
  218. package/dist/types/announcements.d.ts +0 -8
  219. package/dist/types/avatars.d.ts +0 -3
  220. package/dist/types/call.d.ts +0 -5
  221. package/dist/types/conversation.d.ts +0 -39
  222. package/dist/types/endpoints.d.ts +0 -36
  223. package/dist/types/extensions.d.ts +0 -28
  224. package/dist/types/index.d.ts +0 -10
  225. package/dist/types/player.d.ts +0 -7
  226. package/dist/types/socket.d.ts +0 -56
  227. package/dist/types/user.d.ts +0 -70
  228. package/dist/types/webrtc.d.ts +0 -11
  229. package/dist/utils/customHooks/useCommittedRef.d.ts +0 -12
  230. package/dist/utils/customHooks/useEventCallback.d.ts +0 -1
  231. package/dist/utils/customHooks/useEventListener.d.ts +0 -1
  232. package/dist/utils/customHooks/useIntersectionObserver.d.ts +0 -6
  233. package/dist/utils/customHooks/useIsomorphicLayoutEffect.d.ts +0 -2
  234. package/dist/utils/customHooks/useLocalStorage.d.ts +0 -9
  235. package/dist/utils/customHooks/useLongPress.d.ts +0 -10
  236. package/dist/utils/customHooks/useWaitResolution.d.ts +0 -5
  237. package/dist/utils/genericFunctions/checkConnection.d.ts +0 -1
  238. package/dist/utils/genericFunctions/classNames.d.ts +0 -7
  239. package/dist/utils/genericFunctions/eventDispatch.d.ts +0 -8
  240. package/dist/utils/genericFunctions/exposeWorker.d.ts +0 -1
  241. package/dist/utils/genericFunctions/isEmpty.d.ts +0 -1
  242. package/dist/utils/genericFunctions/localStorage.d.ts +0 -19
  243. package/dist/utils/genericFunctions/player.d.ts +0 -1
  244. package/dist/utils/genericFunctions/styleTransformValues.d.ts +0 -18
  245. package/dist/utils/genericFunctions/timestamp.d.ts +0 -4
  246. package/dist/utils/genericFunctions/withTimeout.d.ts +0 -8
  247. package/dist/utils/index.d.ts +0 -11
  248. package/dist/workers/wake_up.d.ts +0 -6
package/README.md CHANGED
@@ -148,7 +148,13 @@ As you can see the app/component can be built in two ways.
148
148
  - The widget files built with Parcel
149
149
 
150
150
  ```
151
- npm build-pack
151
+ npm run build-pack
152
152
  ```
153
153
 
154
154
  It's useful to create a new local version of phone-island that could be imported in any project with some debug command
155
+
156
+ ```
157
+ npm run revert-bump
158
+ ```
159
+
160
+ It's useful to delete all .tgz created with npm run build-pack command, and reset git version to the original one
package/dist/App.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("./components/Events.js"),t=require("./components/Socket.js"),s=require("./components/WebRTC.js"),i=require("./components/Island.js"),o=require("./components/RestAPI.js"),a=require("./utils/customHooks/useEventListener.js"),r=require("./utils/genericFunctions/eventDispatch.js"),u=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var c=require("./store/index.js");require("./node_modules/@fortawesome/react-fontawesome/index.es.js"),require("./node_modules/i18next/dist/esm/i18next.js");var d=require("./node_modules/js-base64/base64.mjs.js"),l=require("./workers/wake_up.js"),p=require("./lib/i18n.js");require("./node_modules/react-tooltip/dist/react-tooltip.min.css.js");var h=require("./lib/webrtc/messages.js"),v=require("./lib/darkTheme.js"),f=require("./services/user.js"),m=require("./utils/genericFunctions/isEmpty.js"),g=require("./utils/genericFunctions/checkConnection.js"),E=require("./node_modules/react-redux/es/components/Provider.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("./node_modules/react-redux/node_modules/react-is/index.js"),require("./node_modules/react-redux/es/components/Context.js");var I=j(e),q=function(j){var q=j.dataConfig,y=j.i18nLoadPath,L=void 0===y?void 0:y,S=j.showAlways,D=void 0!==S&&S,b=j.uaType,k=d.Base64.atob(q||"").split(":"),w=k[0],x=k[1],P=k[2],_=k[3],C=k[4],T=k[5],A=k[6],O=e.useState(!1),N=O[0],U=O[1],F=e.useState(!1),V=F[0],R=F[1],W=e.useState(!1),H=W[0],J=W[1];e.useEffect((function(){var e=new Worker(l.default,{type:"module"});return e.onmessage=function(e){"wakeup"===e.data&&U(!0)},function(){e.terminate()}}),[]),e.useEffect((function(){H&&V&&(U(!1),R(!1),J(!1))}),[H,V]),a.useEventListener("phone-island-expand",(function(){c.store.dispatch.island.toggleIsOpen(!0),r.eventDispatch("phone-island-expanded",{})})),a.useEventListener("phone-island-compress",(function(){c.store.dispatch.island.toggleIsOpen(!1),r.eventDispatch("phone-island-compressed",{})})),a.useEventListener("phone-island-call-keypad-close",(function(){c.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-keypad-closed",{})})),a.useEventListener("phone-island-call-transfer-close",(function(){c.store.dispatch.island.setIslandView("call"),r.eventDispatch("phone-island-call-transfer-closed",{})})),a.useEventListener("phone-island-recording-close",(function(){c.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-recording-closed",{})})),a.useEventListener("phone-island-audio-player-close",(function(){c.store.dispatch.island.setIslandView(null),r.eventDispatch("phone-island-audio-player-closed",{})})),a.useEventListener("phone-island-detach",(function(e){h.detach(),r.eventDispatch("phone-island-detached",{})})),a.useEventListener("phone-island-audio-input-change",(function(e){u.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-input-changed",{})})),a.useEventListener("phone-island-audio-output-change",(function(e){var n=c.store.getState().player.remoteAudio;null==n||n.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),u.setJSONItem("phone-island-audio-output-device",{deviceId:e.deviceId}),r.eventDispatch("phone-island-audio-output-changed",{})})).catch((function(e){console.error("Default audio output device change error:",e)}))})),a.useEventListener("phone-island-presence-change",(function(e){f.changeOperatorStatus(e),r.eventDispatch("phone-island-presence-changed",{})})),a.useEventListener("phone-island-view-changed",(function(e){var n=null==e?void 0:e.viewType;c.store.dispatch.island.setIslandView(n)}));var M=e.useState(!0),B=M[0],z=M[1],G=e.useState(!0),K=G[0],Q=G[1];e.useEffect((function(){B&&(p.loadI18n(L),z(!1))}),[B]);var X=c.store.getState().player.remoteAudio;return e.useEffect((function(){var e;if(K&&X){var n=null===(e=u.getJSONItem("phone-island-audio-output-device"))||void 0===e?void 0:e.deviceId;r.eventDispatch("phone-island-audio-output-change",{deviceId:n}),Q(!1)}}),[K,X]),e.useEffect((function(){v.checkDarkTheme()}),[]),a.useEventListener("phone-island-theme-change",(function(e){v.setTheme(null==e?void 0:e.selectedTheme)})),a.useEventListener("phone-island-default-device-change",(function(e){c.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),r.eventDispatch("phone-island-default-device-changed",{})})),a.useEventListener("phone-island-alert",(function(e){c.store.dispatch.alerts.setAlert(e.toString())})),a.useEventListener("phone-island-check-connection",(function(){g.checkInternetConnection().then((function(e){e?r.eventDispatch("phone-island-internet-connected",{}):r.eventDispatch("phone-island-internet-disconnected",{})}))})),e.useEffect((function(){var e=setInterval((function(){g.checkInternetConnection().then((function(e){e?r.eventDispatch("phone-island-internet-connected",{}):r.eventDispatch("phone-island-internet-disconnected",{})}))}),5e3);return function(){return clearInterval(e)}}),[]),a.useEventListener("phone-island-main-presence",(function(e){var n,t,s,i,o=null===(n=c.store.getState().currentUser)||void 0===n?void 0:n.username,a=c.store.getState().currentUser,u=null==a?void 0:a.mainPresence;if(void 0!==o&&""!==o&&!m.isEmpty(e[o])&&void 0!==(null===(t=e[o])||void 0===t?void 0:t.mainPresence)){var d=null===(s=e[o])||void 0===s?void 0:s.mainPresence;c.store.dispatch.currentUser.updateMainPresence(null===(i=e[o])||void 0===i?void 0:i.mainPresence),"online"===d&&"online"!==u&&r.eventDispatch("phone-island-call-ended",{})}})),a.useEventListener("phone-island-call-status",(function(){var e=c.store.getState().currentCall;console.log("Call status debug informations: ",e)})),a.useEventListener("phone-island-user-status",(function(){var e=c.store.getState().currentUser;console.log("User status debug informations: ",e)})),a.useEventListener("phone-island-status",(function(){var e=c.store.getState().island;console.log("Phone island status debug informations: ",e)})),a.useEventListener("phone-island-webrtc-status",(function(){var e=c.store.getState().webrtc;console.log("Webrtc status debug informations: ",e)})),a.useEventListener("phone-island-player-status",(function(){var e=c.store.getState().player;console.log("Player status debug informations: ",e)})),a.useEventListener("phone-island-player-force-stop",(function(){c.store.dispatch.player.reset(),console.log("Audio player is interrupted")})),I.default.createElement(I.default.Fragment,null,I.default.createElement(E.default,{store:c.store},I.default.createElement(s.WebRTC,{hostName:w,sipExten:_,sipSecret:C,sipHost:T,sipPort:A,reload:N,reloadedCallback:function(){return R(!0)},uaType:b},I.default.createElement(o.RestAPI,{hostName:w,username:x,authToken:P},I.default.createElement(t.Socket,{hostName:w,username:x,authToken:P,reload:N,reloadedCallback:function(){return J(!0)},uaType:b},I.default.createElement(n.Events,{sipHost:T},I.default.createElement(i.Island,{showAlways:D})))))))};q.displayName="PhoneIsland",exports.PhoneIsland=q;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./node_modules/tslib/tslib.es6.js"),n=require("react"),t=require("./components/Events.js"),s=require("./components/Socket.js"),i=require("./components/WebRTC.js"),o=require("./components/Island.js"),a=require("./components/RestAPI.js"),r=require("./utils/customHooks/useEventListener.js"),c=require("./utils/genericFunctions/eventDispatch.js"),u=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var d=require("./store/index.js");require("./node_modules/@fortawesome/react-fontawesome/index.es.js"),require("./node_modules/i18next/dist/esm/i18next.js"),require("./node_modules/react-tooltip/dist/react-tooltip.min.mjs.js");var l=require("./node_modules/js-base64/base64.mjs.js"),p=require("./workers/wake_up.js"),h=require("./lib/i18n.js");require("./node_modules/react-tooltip/dist/react-tooltip.min.css.js");var v=require("./lib/webrtc/messages.js"),f=require("./lib/darkTheme.js"),m=require("./services/user.js"),g=require("./utils/genericFunctions/isEmpty.js"),E=require("./utils/genericFunctions/checkConnection.js"),j=require("./utils/genericFunctions/isBackCallVisible.js"),I=require("./node_modules/react-redux/es/components/Provider.js");function b(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("./node_modules/react-redux/node_modules/react-is/index.js"),require("./node_modules/react-redux/es/components/Context.js");var q=b(n),w=function(b){var w=b.dataConfig,D=b.showAlways,L=void 0!==D&&D,S=b.uaType,y=l.Base64.atob(w||"").split(":"),k=y[0],x=y[1],_=y[2],C=y[3],P=y[4],T=y[5],V=y[6],A=n.useState(!1),O=A[0],N=A[1],U=n.useState(!1),z=U[0],F=U[1],R=n.useState(!1),W=R[0],B=R[1];n.useEffect((function(){var e=new Worker(p.default,{type:"module"});return e.onmessage=function(e){"wakeup"===e.data&&N(!0)},function(){e.terminate()}}),[]),n.useEffect((function(){W&&z&&(N(!1),F(!1),B(!1))}),[W,z]),r.useEventListener("phone-island-expand",(function(){d.store.dispatch.island.toggleIsOpen(!0),c.eventDispatch("phone-island-expanded",{})})),r.useEventListener("phone-island-compress",(function(){d.store.dispatch.island.toggleIsOpen(!1),c.eventDispatch("phone-island-compressed",{})})),r.useEventListener("phone-island-call-keypad-close",(function(){d.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-keypad-closed",{})})),r.useEventListener("phone-island-call-transfer-close",(function(){d.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-transfer-closed",{})})),r.useEventListener("phone-island-recording-close",(function(){d.store.dispatch.island.setIslandView(null),c.eventDispatch("phone-island-recording-closed",{})})),r.useEventListener("phone-island-audio-player-close",(function(){d.store.dispatch.island.setIslandView(null),c.eventDispatch("phone-island-audio-player-closed",{})})),r.useEventListener("phone-island-detach",(function(e){v.detach(),c.eventDispatch("phone-island-detached",{})})),r.useEventListener("phone-island-audio-input-change",(function(e){u.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-audio-input-changed",{})})),r.useEventListener("phone-island-audio-output-change",(function(e){var n=d.store.getState().player.remoteAudio;null==n||n.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),u.setJSONItem("phone-island-audio-output-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-audio-output-changed",{})})).catch((function(e){console.error("Default audio output device change error:",e)}))})),r.useEventListener("phone-island-presence-change",(function(e){m.changeOperatorStatus(e),c.eventDispatch("phone-island-presence-changed",{})})),r.useEventListener("phone-island-view-changed",(function(e){var n=null==e?void 0:e.viewType;d.store.dispatch.island.setIslandView(n)}));var H=n.useState(!0),J=H[0],M=H[1],G=n.useState(!0),K=G[0],Q=G[1];n.useEffect((function(){J&&(h.initI18n(),M(!1))}),[J]);var X=d.store.getState().player.remoteAudio;return n.useEffect((function(){var e;if(K&&X){var n=null===(e=u.getJSONItem("phone-island-audio-output-device"))||void 0===e?void 0:e.deviceId;c.eventDispatch("phone-island-audio-output-change",{deviceId:n}),Q(!1)}}),[K,X]),n.useEffect((function(){f.checkDarkTheme()}),[]),r.useEventListener("phone-island-theme-change",(function(e){f.setTheme(null==e?void 0:e.selectedTheme)})),r.useEventListener("phone-island-default-device-change",(function(e){d.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),c.eventDispatch("phone-island-default-device-changed",{})})),r.useEventListener("phone-island-alert",(function(e){d.store.dispatch.alerts.setAlert(e.toString())})),r.useEventListener("phone-island-check-connection",(function(){E.checkInternetConnection().then((function(e){e?c.eventDispatch("phone-island-internet-connected",{}):c.eventDispatch("phone-island-internet-disconnected",{})}))})),n.useEffect((function(){var e=setInterval((function(){E.checkInternetConnection().then((function(e){e?c.eventDispatch("phone-island-internet-connected",{}):c.eventDispatch("phone-island-internet-disconnected",{})}))}),5e3);return function(){return clearInterval(e)}}),[]),r.useEventListener("phone-island-main-presence",(function(e){var n,t,s,i,o=null===(n=d.store.getState().currentUser)||void 0===n?void 0:n.username,a=d.store.getState().currentUser,r=null==a?void 0:a.mainPresence;if(void 0!==o&&""!==o&&!g.isEmpty(e[o])&&void 0!==(null===(t=e[o])||void 0===t?void 0:t.mainPresence)){var u=null===(s=e[o])||void 0===s?void 0:s.mainPresence;d.store.dispatch.currentUser.updateMainPresence(null===(i=e[o])||void 0===i?void 0:i.mainPresence),"online"===u&&"online"!==r&&c.eventDispatch("phone-island-call-ended",{})}})),r.useEventListener("phone-island-call-status",(function(){var e=d.store.getState().currentCall;console.log("Call status debug informations: ",e)})),r.useEventListener("phone-island-user-status",(function(){var e=d.store.getState().currentUser;console.log("User status debug informations: ",e)})),r.useEventListener("phone-island-all-users-status",(function(){var e=d.store.getState().users;console.log("Users status debug informations: ",e)})),r.useEventListener("phone-island-status",(function(){var e=d.store.getState().island;console.log("Phone island status debug informations: ",e)})),r.useEventListener("phone-island-webrtc-status",(function(){var e=d.store.getState().webrtc;console.log("Webrtc status debug informations: ",e)})),r.useEventListener("phone-island-player-status",(function(){var e=d.store.getState().player;console.log("Player status debug informations: ",e)})),r.useEventListener("phone-island-player-force-stop",(function(){d.store.dispatch.player.reset(),console.log("Audio player is interrupted")})),r.useEventListener("phone-island-sideview-open",(function(){d.store.dispatch.island.toggleSideViewVisible(!0),c.eventDispatch("phone-island-sideview-opened",{})})),r.useEventListener("phone-island-sideview-close",(function(){d.store.dispatch.island.toggleSideViewVisible(!1),c.eventDispatch("phone-island-sideview-closed",{})})),r.useEventListener("phone-island-size-change",(function(n){var t=d.store.getState().island.sideViewIsVisible,s=n.sizeInformation,i={right:"".concat(t?42:0,"px"),top:"".concat(j.isBackCallActive()?40:0,"px")},o=e.__assign(e.__assign({},s),{extraDimension:i});c.eventDispatch("phone-island-size-changed",{sizes:o})})),r.useEventListener("phone-island-call-ended",(function(){c.eventDispatch("phone-island-size-change",{sizeInformation:{width:"0px",height:"0px"}})})),q.default.createElement(q.default.Fragment,null,q.default.createElement(I.default,{store:d.store},q.default.createElement(i.WebRTC,{hostName:k,sipExten:C,sipSecret:P,sipHost:T,sipPort:V,reload:O,reloadedCallback:function(){return F(!0)},uaType:S},q.default.createElement(a.RestAPI,{hostName:k,username:x,authToken:_},q.default.createElement(s.Socket,{hostName:k,username:x,authToken:_,reload:O,reloadedCallback:function(){return B(!0)},uaType:S},q.default.createElement(t.Events,{sipHost:T},q.default.createElement(o.Island,{showAlways:L})))))))};w.displayName="PhoneIsland",exports.PhoneIsland=w;
2
2
  //# sourceMappingURL=App.js.map
package/dist/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import React, { type FC, useState, useEffect } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\nimport wakeUpWorker from './workers/wake_up'\nimport loadI18n from './lib/i18n'\nimport i18next, { i18n } from 'i18next'\n\nimport 'react-tooltip/dist/react-tooltip.css'\nimport { useEventListener, eventDispatch, setJSONItem, getJSONItem } from './utils'\nimport { detach } from './lib/webrtc/messages'\nimport { checkDarkTheme, setTheme } from './lib/darkTheme'\nimport { changeOperatorStatus } from './services/user'\nimport { isEmpty } from './utils/genericFunctions/isEmpty'\nimport { checkInternetConnection } from './utils/genericFunctions/checkConnection'\n\ninterface PhoneIslandProps {\n dataConfig: string\n i18nLoadPath?: string\n showAlways?: boolean\n uaType: string\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({\n dataConfig,\n i18nLoadPath = undefined,\n showAlways = false,\n uaType,\n}: PhoneIslandProps) => {\n const CONFIG: string[] = Base64.atob(dataConfig || '').split(':')\n const HOST_NAME: string = CONFIG[0]\n const USERNAME: string = CONFIG[1]\n const AUTH_TOKEN: string = CONFIG[2]\n const SIP_EXTEN: string = CONFIG[3]\n const SIP_SECRET: string = CONFIG[4]\n const SIP_HOST: string = CONFIG[5]\n const SIP_PORT: string = CONFIG[6]\n\n // Initialize the state to manage the reload events\n const [reload, setReload] = useState<boolean>(false)\n const [reloadedWebRTC, setReloadedWebRTC] = useState<boolean>(false)\n const [reloadedSocket, setReloadedSocket] = useState<boolean>(false)\n\n useEffect(() => {\n const worker = new Worker(wakeUpWorker, { type: 'module' })\n worker.onmessage = (event: MessageEvent<string>) => {\n // Handle wakeup message\n if (event.data === 'wakeup') {\n setReload(true)\n }\n }\n\n return () => {\n worker.terminate()\n }\n }, [])\n\n useEffect(() => {\n if (reloadedSocket && reloadedWebRTC) {\n setReload(false)\n setReloadedWebRTC(false)\n setReloadedSocket(false)\n }\n }, [reloadedSocket, reloadedWebRTC])\n\n useEventListener('phone-island-expand', () => {\n store.dispatch.island.toggleIsOpen(true)\n eventDispatch('phone-island-expanded', {})\n })\n useEventListener('phone-island-compress', () => {\n store.dispatch.island.toggleIsOpen(false)\n eventDispatch('phone-island-compressed', {})\n })\n\n useEventListener('phone-island-call-keypad-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-keypad-closed', {})\n })\n useEventListener('phone-island-call-transfer-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-transfer-closed', {})\n })\n useEventListener('phone-island-recording-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-recording-closed', {})\n })\n useEventListener('phone-island-audio-player-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-audio-player-closed', {})\n })\n\n useEventListener('phone-island-detach', (data) => {\n detach()\n eventDispatch('phone-island-detached', {})\n })\n\n useEventListener('phone-island-audio-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-audio-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-audio-input-changed', {})\n })\n\n useEventListener('phone-island-audio-output-change', (data: DeviceInputOutputTypes) => {\n const remoteAudioElement: any = store.getState().player.remoteAudio\n // set audio output\n remoteAudioElement?.current\n .setSinkId(data.deviceId)\n .then(function () {\n console.info('Default audio output device change with success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: data.deviceId })\n\n // dispatch event\n eventDispatch('phone-island-audio-output-changed', {})\n })\n .catch(function (err) {\n console.error('Default audio output device change error:', err)\n })\n })\n\n // Listen for the operator status change\n useEventListener('phone-island-presence-change', (data: any) => {\n changeOperatorStatus(data)\n eventDispatch('phone-island-presence-changed', {})\n })\n\n useEventListener('phone-island-view-changed', (data) => {\n const viewType = data?.viewType\n store.dispatch.island.setIslandView(viewType)\n })\n\n const [firstRenderI18n, setFirstRenderI18n] = useState(true)\n const [firstAudioOutputInit, setFirstAudioOutputInit] = useState(true)\n\n //initialize i18n\n useEffect(() => {\n if (firstRenderI18n) {\n loadI18n(i18nLoadPath)\n setFirstRenderI18n(false)\n }\n }, [firstRenderI18n])\n\n const remoteAudioElement: any = store.getState().player.remoteAudio\n\n //get output device from localstorage\n useEffect(() => {\n if (firstAudioOutputInit && remoteAudioElement) {\n const defaultAudioOutputDevice: any = getJSONItem(\n `phone-island-audio-output-device`,\n )?.deviceId\n eventDispatch('phone-island-audio-output-change', { deviceId: defaultAudioOutputDevice })\n setFirstAudioOutputInit(false)\n }\n }, [firstAudioOutputInit, remoteAudioElement])\n\n useEffect(() => {\n checkDarkTheme()\n }, [])\n\n useEventListener('phone-island-theme-change', (theme: any) => {\n setTheme(theme?.selectedTheme)\n })\n\n useEventListener('phone-island-default-device-change', (data) => {\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-default-device-changed', {})\n })\n\n useEventListener('phone-island-alert', (alertType: any) => {\n store.dispatch.alerts.setAlert(alertType.toString())\n })\n\n // Manually check if internet connection is enabled or not\n useEventListener('phone-island-check-connection', () => {\n checkInternetConnection().then((internetIsActive) => {\n if (internetIsActive) {\n eventDispatch('phone-island-internet-connected', {})\n } else {\n eventDispatch('phone-island-internet-disconnected', {})\n }\n })\n })\n\n // Check internet connection every 5 seconds\n useEffect(() => {\n const intervalId = setInterval(() => {\n checkInternetConnection().then((internetIsActive) => {\n if (internetIsActive) {\n eventDispatch('phone-island-internet-connected', {})\n } else {\n eventDispatch('phone-island-internet-disconnected', {})\n }\n })\n }, 5000)\n\n return () => clearInterval(intervalId)\n }, [])\n\n useEventListener('phone-island-main-presence', (data: any) => {\n const currentUsernameInformation: any = store.getState().currentUser?.username\n const currentUserObject: any = store.getState().currentUser\n let mainPresenceValueBeforeUpdate = currentUserObject?.mainPresence\n if (\n currentUsernameInformation !== undefined &&\n currentUsernameInformation !== '' &&\n !isEmpty(data[currentUsernameInformation]) &&\n data[currentUsernameInformation]?.mainPresence !== undefined\n ) {\n let newMainPresenceValue = data[currentUsernameInformation]?.mainPresence\n store.dispatch.currentUser.updateMainPresence(data[currentUsernameInformation]?.mainPresence)\n let mainPresenceValueAfterUpdate = newMainPresenceValue\n if (mainPresenceValueAfterUpdate === 'online' && mainPresenceValueBeforeUpdate !== 'online') {\n eventDispatch('phone-island-call-ended', {})\n }\n }\n })\n\n useEventListener('phone-island-call-status', () => {\n const callInformation = store.getState().currentCall\n console.log('Call status debug informations: ', callInformation)\n })\n\n useEventListener('phone-island-user-status', () => {\n const userInformation = store.getState().currentUser\n console.log('User status debug informations: ', userInformation)\n })\n\n useEventListener('phone-island-status', () => {\n const phoneIslandInformation = store.getState().island\n console.log('Phone island status debug informations: ', phoneIslandInformation)\n })\n\n useEventListener('phone-island-webrtc-status', () => {\n const webrtcInformation = store.getState().webrtc\n console.log('Webrtc status debug informations: ', webrtcInformation)\n })\n\n useEventListener('phone-island-player-status', () => {\n const playerInformation = store.getState().player\n console.log('Player status debug informations: ', playerInformation)\n })\n\n useEventListener('phone-island-player-force-stop', () => {\n store.dispatch.player.reset()\n console.log('Audio player is interrupted')\n })\n\n return (\n <>\n <Provider store={store}>\n <WebRTC\n hostName={HOST_NAME}\n sipExten={SIP_EXTEN}\n sipSecret={SIP_SECRET}\n sipHost={SIP_HOST}\n sipPort={SIP_PORT}\n reload={reload}\n reloadedCallback={() => setReloadedWebRTC(true)}\n uaType={uaType}\n >\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket\n hostName={HOST_NAME}\n username={USERNAME}\n authToken={AUTH_TOKEN}\n reload={reload}\n reloadedCallback={() => setReloadedSocket(true)}\n uaType={uaType}\n >\n <Events sipHost={SIP_HOST}>\n <Island showAlways={showAlways} />\n </Events>\n </Socket>\n </RestAPI>\n </WebRTC>\n </Provider>\n </>\n )\n}\n\nPhoneIsland.displayName = 'PhoneIsland'\n"],"names":["PhoneIsland","_a","dataConfig","_b","i18nLoadPath","undefined","_c","showAlways","uaType","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","SIP_HOST","SIP_PORT","_d","useState","reload","setReload","_e","reloadedWebRTC","setReloadedWebRTC","_f","reloadedSocket","setReloadedSocket","useEffect","worker","Worker","wakeUpWorker","type","onmessage","event","data","terminate","useEventListener","store","dispatch","island","toggleIsOpen","eventDispatch","setIslandView","detach","setJSONItem","deviceId","remoteAudioElement","getState","player","remoteAudio","current","setSinkId","then","console","info","catch","err","error","changeOperatorStatus","viewType","_g","firstRenderI18n","setFirstRenderI18n","_h","firstAudioOutputInit","setFirstAudioOutputInit","loadI18n","defaultAudioOutputDevice","getJSONItem","checkDarkTheme","theme","setTheme","selectedTheme","currentUser","updateCurrentDefaultDevice","deviceInformationObject","alertType","alerts","setAlert","toString","checkInternetConnection","internetIsActive","intervalId","setInterval","clearInterval","currentUsernameInformation","username","currentUserObject","mainPresenceValueBeforeUpdate","mainPresence","isEmpty","newMainPresenceValue","updateMainPresence","callInformation","currentCall","log","userInformation","phoneIslandInformation","webrtcInformation","webrtc","playerInformation","reset","React","createElement","Fragment","Provider","WebRTC","hostName","sipExten","sipSecret","sipHost","sipPort","reloadedCallback","RestAPI","authToken","Socket","Events","Island","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import React, { type FC, useState, useEffect } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\nimport wakeUpWorker from './workers/wake_up'\nimport { initI18n } from './lib/i18n'\n\nimport 'react-tooltip/dist/react-tooltip.css'\nimport { useEventListener, eventDispatch, setJSONItem, getJSONItem } from './utils'\nimport { detach } from './lib/webrtc/messages'\nimport { checkDarkTheme, setTheme } from './lib/darkTheme'\nimport { changeOperatorStatus } from './services/user'\nimport { isEmpty } from './utils/genericFunctions/isEmpty'\nimport { checkInternetConnection } from './utils/genericFunctions/checkConnection'\nimport { isBackCallActive } from './utils/genericFunctions/isBackCallVisible'\n\ninterface PhoneIslandProps {\n dataConfig: string\n showAlways?: boolean\n uaType: string\n}\n\ninterface DeviceInputOutputTypes {\n deviceId: string\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({\n dataConfig,\n showAlways = false,\n uaType,\n}: PhoneIslandProps) => {\n const CONFIG: string[] = Base64.atob(dataConfig || '').split(':')\n const HOST_NAME: string = CONFIG[0]\n const USERNAME: string = CONFIG[1]\n const AUTH_TOKEN: string = CONFIG[2]\n const SIP_EXTEN: string = CONFIG[3]\n const SIP_SECRET: string = CONFIG[4]\n const SIP_HOST: string = CONFIG[5]\n const SIP_PORT: string = CONFIG[6]\n\n // Initialize the state to manage the reload events\n const [reload, setReload] = useState<boolean>(false)\n const [reloadedWebRTC, setReloadedWebRTC] = useState<boolean>(false)\n const [reloadedSocket, setReloadedSocket] = useState<boolean>(false)\n\n useEffect(() => {\n const worker = new Worker(wakeUpWorker, { type: 'module' })\n worker.onmessage = (event: MessageEvent<string>) => {\n // Handle wakeup message\n if (event.data === 'wakeup') {\n setReload(true)\n }\n }\n\n return () => {\n worker.terminate()\n }\n }, [])\n\n useEffect(() => {\n if (reloadedSocket && reloadedWebRTC) {\n setReload(false)\n setReloadedWebRTC(false)\n setReloadedSocket(false)\n }\n }, [reloadedSocket, reloadedWebRTC])\n\n useEventListener('phone-island-expand', () => {\n store.dispatch.island.toggleIsOpen(true)\n eventDispatch('phone-island-expanded', {})\n })\n useEventListener('phone-island-compress', () => {\n store.dispatch.island.toggleIsOpen(false)\n eventDispatch('phone-island-compressed', {})\n })\n\n useEventListener('phone-island-call-keypad-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-keypad-closed', {})\n })\n useEventListener('phone-island-call-transfer-close', () => {\n store.dispatch.island.setIslandView('call')\n eventDispatch('phone-island-call-transfer-closed', {})\n })\n useEventListener('phone-island-recording-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-recording-closed', {})\n })\n useEventListener('phone-island-audio-player-close', () => {\n store.dispatch.island.setIslandView(null)\n eventDispatch('phone-island-audio-player-closed', {})\n })\n\n useEventListener('phone-island-detach', (data) => {\n detach()\n eventDispatch('phone-island-detached', {})\n })\n\n useEventListener('phone-island-audio-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-audio-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-audio-input-changed', {})\n })\n\n useEventListener('phone-island-audio-output-change', (data: DeviceInputOutputTypes) => {\n const remoteAudioElement: any = store.getState().player.remoteAudio\n // set audio output\n remoteAudioElement?.current\n .setSinkId(data.deviceId)\n .then(function () {\n console.info('Default audio output device change with success!')\n // set device to localstorage\n setJSONItem('phone-island-audio-output-device', { deviceId: data.deviceId })\n\n // dispatch event\n eventDispatch('phone-island-audio-output-changed', {})\n })\n .catch(function (err) {\n console.error('Default audio output device change error:', err)\n })\n })\n\n // Listen for the operator status change\n useEventListener('phone-island-presence-change', (data: any) => {\n changeOperatorStatus(data)\n eventDispatch('phone-island-presence-changed', {})\n })\n\n useEventListener('phone-island-view-changed', (data) => {\n const viewType = data?.viewType\n store.dispatch.island.setIslandView(viewType)\n })\n\n const [firstRenderI18n, setFirstRenderI18n] = useState(true)\n const [firstAudioOutputInit, setFirstAudioOutputInit] = useState(true)\n\n //initialize i18n\n useEffect(() => {\n if (firstRenderI18n) {\n initI18n()\n setFirstRenderI18n(false)\n }\n }, [firstRenderI18n])\n\n const remoteAudioElement: any = store.getState().player.remoteAudio\n\n //get output device from localstorage\n useEffect(() => {\n if (firstAudioOutputInit && remoteAudioElement) {\n const defaultAudioOutputDevice: any = getJSONItem(\n `phone-island-audio-output-device`,\n )?.deviceId\n eventDispatch('phone-island-audio-output-change', { deviceId: defaultAudioOutputDevice })\n setFirstAudioOutputInit(false)\n }\n }, [firstAudioOutputInit, remoteAudioElement])\n\n useEffect(() => {\n checkDarkTheme()\n }, [])\n\n useEventListener('phone-island-theme-change', (theme: any) => {\n setTheme(theme?.selectedTheme)\n })\n\n useEventListener('phone-island-default-device-change', (data) => {\n store.dispatch.currentUser.updateCurrentDefaultDevice(data?.deviceInformationObject)\n eventDispatch('phone-island-default-device-changed', {})\n })\n\n useEventListener('phone-island-alert', (alertType: any) => {\n store.dispatch.alerts.setAlert(alertType.toString())\n })\n\n // Manually check if internet connection is enabled or not\n useEventListener('phone-island-check-connection', () => {\n checkInternetConnection().then((internetIsActive) => {\n if (internetIsActive) {\n eventDispatch('phone-island-internet-connected', {})\n } else {\n eventDispatch('phone-island-internet-disconnected', {})\n }\n })\n })\n\n // Check internet connection every 5 seconds\n useEffect(() => {\n const intervalId = setInterval(() => {\n checkInternetConnection().then((internetIsActive) => {\n if (internetIsActive) {\n eventDispatch('phone-island-internet-connected', {})\n } else {\n eventDispatch('phone-island-internet-disconnected', {})\n }\n })\n }, 5000)\n\n return () => clearInterval(intervalId)\n }, [])\n\n useEventListener('phone-island-main-presence', (data: any) => {\n const currentUsernameInformation: any = store.getState().currentUser?.username\n const currentUserObject: any = store.getState().currentUser\n let mainPresenceValueBeforeUpdate = currentUserObject?.mainPresence\n if (\n currentUsernameInformation !== undefined &&\n currentUsernameInformation !== '' &&\n !isEmpty(data[currentUsernameInformation]) &&\n data[currentUsernameInformation]?.mainPresence !== undefined\n ) {\n let newMainPresenceValue = data[currentUsernameInformation]?.mainPresence\n store.dispatch.currentUser.updateMainPresence(data[currentUsernameInformation]?.mainPresence)\n let mainPresenceValueAfterUpdate = newMainPresenceValue\n if (mainPresenceValueAfterUpdate === 'online' && mainPresenceValueBeforeUpdate !== 'online') {\n eventDispatch('phone-island-call-ended', {})\n }\n }\n })\n\n useEventListener('phone-island-call-status', () => {\n const callInformation = store.getState().currentCall\n console.log('Call status debug informations: ', callInformation)\n })\n\n useEventListener('phone-island-user-status', () => {\n const userInformation = store.getState().currentUser\n console.log('User status debug informations: ', userInformation)\n })\n\n useEventListener('phone-island-all-users-status', () => {\n const allUsersInformation = store.getState().users\n console.log('Users status debug informations: ', allUsersInformation)\n })\n\n useEventListener('phone-island-status', () => {\n const phoneIslandInformation = store.getState().island\n console.log('Phone island status debug informations: ', phoneIslandInformation)\n })\n\n useEventListener('phone-island-webrtc-status', () => {\n const webrtcInformation = store.getState().webrtc\n console.log('Webrtc status debug informations: ', webrtcInformation)\n })\n\n useEventListener('phone-island-player-status', () => {\n const playerInformation = store.getState().player\n console.log('Player status debug informations: ', playerInformation)\n })\n\n useEventListener('phone-island-player-force-stop', () => {\n store.dispatch.player.reset()\n console.log('Audio player is interrupted')\n })\n\n useEventListener('phone-island-sideview-open', () => {\n store.dispatch.island.toggleSideViewVisible(true)\n eventDispatch('phone-island-sideview-opened', {})\n })\n\n useEventListener('phone-island-sideview-close', () => {\n store.dispatch.island.toggleSideViewVisible(false)\n eventDispatch('phone-island-sideview-closed', {})\n })\n\n useEventListener('phone-island-size-change', (args: any) => {\n const { sideViewIsVisible } = store.getState().island\n\n // Get current dimensions from args\n const { sizeInformation } = args\n\n // Calculate extra row dimension ( side view and back call )\n const extraDimension = {\n right: `${sideViewIsVisible ? 42 : 0}px`,\n top: `${isBackCallActive() ? 40 : 0}px`,\n }\n\n // Create the resize information object\n const sizes = {\n ...sizeInformation,\n extraDimension,\n }\n\n eventDispatch('phone-island-size-changed', { sizes })\n })\n\n // Listen for the call end event and set the island size to 0\n useEventListener('phone-island-call-ended', () => {\n const sizeInformation: any = {\n width: '0px',\n height: '0px',\n }\n eventDispatch('phone-island-size-change', { sizeInformation })\n })\n\n return (\n <>\n <Provider store={store}>\n <WebRTC\n hostName={HOST_NAME}\n sipExten={SIP_EXTEN}\n sipSecret={SIP_SECRET}\n sipHost={SIP_HOST}\n sipPort={SIP_PORT}\n reload={reload}\n reloadedCallback={() => setReloadedWebRTC(true)}\n uaType={uaType}\n >\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket\n hostName={HOST_NAME}\n username={USERNAME}\n authToken={AUTH_TOKEN}\n reload={reload}\n reloadedCallback={() => setReloadedSocket(true)}\n uaType={uaType}\n >\n <Events sipHost={SIP_HOST}>\n <Island showAlways={showAlways} />\n </Events>\n </Socket>\n </RestAPI>\n </WebRTC>\n </Provider>\n </>\n )\n}\n\nPhoneIsland.displayName = 'PhoneIsland'\n"],"names":["PhoneIsland","_a","dataConfig","_b","showAlways","uaType","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","SIP_HOST","SIP_PORT","_c","useState","reload","setReload","_d","reloadedWebRTC","setReloadedWebRTC","_e","reloadedSocket","setReloadedSocket","useEffect","worker","Worker","wakeUpWorker","type","onmessage","event","data","terminate","useEventListener","store","dispatch","island","toggleIsOpen","eventDispatch","setIslandView","detach","setJSONItem","deviceId","remoteAudioElement","getState","player","remoteAudio","current","setSinkId","then","console","info","catch","err","error","changeOperatorStatus","viewType","_f","firstRenderI18n","setFirstRenderI18n","_g","firstAudioOutputInit","setFirstAudioOutputInit","initI18n","defaultAudioOutputDevice","getJSONItem","checkDarkTheme","theme","setTheme","selectedTheme","currentUser","updateCurrentDefaultDevice","deviceInformationObject","alertType","alerts","setAlert","toString","checkInternetConnection","internetIsActive","intervalId","setInterval","clearInterval","currentUsernameInformation","username","currentUserObject","mainPresenceValueBeforeUpdate","mainPresence","undefined","isEmpty","newMainPresenceValue","updateMainPresence","callInformation","currentCall","log","userInformation","allUsersInformation","users","phoneIslandInformation","webrtcInformation","webrtc","playerInformation","reset","toggleSideViewVisible","args","sideViewIsVisible","sizeInformation","extraDimension","right","concat","top","isBackCallActive","sizes","__assign","width","height","React","createElement","Fragment","Provider","WebRTC","hostName","sipExten","sipSecret","sipHost","sipPort","reloadedCallback","RestAPI","authToken","Socket","Events","Island","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),i=require("../Button.js"),a=require("../../node_modules/i18next/dist/esm/i18next.js"),n=require("../../utils/genericFunctions/eventDispatch.js"),l=require("../../node_modules/react-redux/es/hooks/useSelector.js"),s=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(e);exports.default=function(){var e=l.useSelector((function(e){return e.alerts})).data,o=l.useSelector((function(e){return e.currentUser})).default_device,u=s.useDispatch(),c=Object.values(e).filter((function(e){return e.active})),p=c.length>0?c[c.length-1]:null;return p&&d.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},d.default.createElement("div",{className:"pi-flex pi-items-center"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ".concat("call_transfered"===(null==p?void 0:p.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},d.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==p?void 0:p.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-[1.1rem] pi-w-10 ".concat("call_transfered"===(null==p?void 0:p.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),d.default.createElement("div",{className:"ml-3"},d.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property"},a.t("Errors.".concat("nethlink"===(null==o?void 0:o.type)&&"webrtc_down"===(null==p?void 0:p.type)?null==p?void 0:p.nethlink_message:null==p?void 0:p.type))),d.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},a.t("Errors.".concat(null==p?void 0:p.message))))),d.default.createElement(i.Button,{variant:"transparent",onClick:function(){return u.alerts.removeAllAlerts(),void n.eventDispatch("phone-island-all-alerts-removed",{})},className:"pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]"},d.default.createElement(t.FontAwesomeIcon,{icon:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),l=require("../Button.js"),i=require("../../node_modules/i18next/dist/esm/i18next.js"),a=require("../../utils/genericFunctions/eventDispatch.js"),n=require("../CustomThemedTooltip.js"),o=require("../../node_modules/react-redux/es/hooks/useSelector.js"),s=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=d(e);exports.default=function(){var e=o.useSelector((function(e){return e.alerts})).data,d=o.useSelector((function(e){return e.currentUser})).default_device,c=s.useDispatch(),p=Object.values(e).filter((function(e){return e.active})),m=p.length>0?p[p.length-1]:null;return m&&u.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},u.default.createElement("div",{className:"pi-flex pi-items-center"},u.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ".concat("call_transfered"===(null==m?void 0:m.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},u.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==m?void 0:m.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-5 pi-w-10 ".concat("call_transfered"===(null==m?void 0:m.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),u.default.createElement("div",{className:"ml-3"},u.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property"},i.t("Errors.".concat("nethlink"===(null==d?void 0:d.type)&&"webrtc_down"===(null==m?void 0:m.type)?null==m?void 0:m.nethlink_message:null==m?void 0:m.type))),u.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},i.t("Errors.".concat(null==m?void 0:m.message))))),u.default.createElement(l.Button,{variant:"transparent",onClick:function(){return"nethlink"===(null==d?void 0:d.type)&&"call_transfered"!==(null==m?void 0:m.type)?void window.location.reload():(c.alerts.removeAllAlerts(),void a.eventDispatch("phone-island-all-alerts-removed",{}))},className:"pi-absolute pi--right-6 pi-transform pi--translate-y-1/2","data-tooltip-id":"tooltip-close-alert","data-tooltip-content":"nethlink"===(null==d?void 0:d.type)&&"call_transfered"!==(null==m?void 0:m.type)?"".concat(i.t("Tooltip.Reload")):"".concat(i.t("Tooltip.Close alert"))},u.default.createElement(t.FontAwesomeIcon,{icon:"nethlink"===(null==d?void 0:d.type)&&"call_transfered"!==(null==m?void 0:m.type)?r.faArrowRotateRight:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})),u.default.createElement(n.CustomThemedTooltip,{id:"tooltip-close-alert",place:"left"}))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCircleXmark, faCircleCheck } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\nimport { store } from '../../store'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const { default_device } = useSelector((state: RootState) => state.currentUser)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-[1.1rem] pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property'>\n {t(\n `Errors.${\n default_device?.type === 'nethlink' && latestAlert?.type === 'webrtc_down'\n ? latestAlert?.nethlink_message\n : latestAlert?.type\n }`,\n )}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() => handleClearAllAlerts()}\n className='pi-absolute pi-right-[-1.28rem] pi-top-[8%] pi-transform pi--translate-y-[57%]'\n >\n <FontAwesomeIcon\n icon={faTimes}\n className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4'\n />\n </Button>\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","default_device","currentUser","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","nethlink_message","message","Button","variant","onClick","removeAllAlerts","eventDispatch","faTimes"],"mappings":"2qBAgBsB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACjDC,EAAmBH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,8BAC7DC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOV,GAAMW,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAOtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sGACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,yBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAAA,QAAIC,cAAA,KAAA,CAAAC,UAAU,+GACXO,IACC,UAAAN,OAC2B,cAAzBf,aAAA,EAAAA,EAAgBgB,OAA6C,iBAAtBN,aAAW,EAAXA,EAAaM,MAChDN,aAAA,EAAAA,EAAaY,iBACbZ,aAAW,EAAXA,EAAaM,QAIvBJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaa,aAMhCX,EAAAA,QAAAC,cAACW,EAAAA,OACC,CAAAC,QAAQ,cACRC,QAAS,WAAM,OA9CrBxB,EAASH,OAAO4B,uBAChBC,gBAAc,kCAAmC,CAAA,IA8C3Cd,UAAU,kFAEVF,UAAAC,cAACI,EAAeA,gBAAA,CACdC,KAAMW,UACNf,UAAU,yDAMtB"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faTimes,\n faCircleXmark,\n faCircleCheck,\n faArrowRotateRight,\n} from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const { default_device } = useSelector((state: RootState) => state.currentUser)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n const reloadPhoneIsland = () => {\n window.location.reload()\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-5 pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100 margin-block-property'>\n {t(\n `Errors.${\n default_device?.type === 'nethlink' && latestAlert?.type === 'webrtc_down'\n ? latestAlert?.nethlink_message\n : latestAlert?.type\n }`,\n )}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() =>\n default_device?.type === 'nethlink' && latestAlert?.type !== 'call_transfered'\n ? reloadPhoneIsland()\n : handleClearAllAlerts()\n }\n className='pi-absolute pi--right-6 pi-transform pi--translate-y-1/2'\n data-tooltip-id='tooltip-close-alert'\n data-tooltip-content={\n default_device?.type === 'nethlink' && latestAlert?.type !== 'call_transfered'\n ? `${t('Tooltip.Reload')}`\n : `${t('Tooltip.Close alert')}`\n }\n >\n <FontAwesomeIcon\n icon={\n default_device?.type === 'nethlink' && latestAlert?.type !== 'call_transfered'\n ? faArrowRotateRight\n : faTimes\n }\n className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4'\n />\n </Button>\n <CustomThemedTooltip id='tooltip-close-alert' place='left' />\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","default_device","currentUser","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","nethlink_message","message","Button","variant","onClick","window","location","reload","removeAllAlerts","eventDispatch","faArrowRotateRight","faTimes","CustomThemedTooltip","id","place"],"mappings":"ktBAqBsB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACjDC,EAAmBH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,8BAC7DC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOV,GAAMW,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAWtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sGACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,kBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAAA,QAAIC,cAAA,KAAA,CAAAC,UAAU,+GACXO,IACC,UAAAN,OAC2B,cAAzBf,aAAA,EAAAA,EAAgBgB,OAA6C,iBAAtBN,aAAW,EAAXA,EAAaM,MAChDN,aAAA,EAAAA,EAAaY,iBACbZ,aAAW,EAAXA,EAAaM,QAIvBJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaa,aAMhCX,EAAA,QAAAC,cAACW,EAAMA,OACL,CAAAC,QAAQ,cACRC,QAAS,WACP,MAAyB,cAAzB1B,eAAAA,EAAgBgB,OAA6C,qBAAtBN,aAAW,EAAXA,EAAaM,WA9C5DW,OAAOC,SAASC,UALhB3B,EAASH,OAAO+B,uBAChBC,gBAAc,kCAAmC,CAAA,GAoDf,EAE5BjB,UAAU,2DAA0D,kBACpD,sBAAqB,uBAEV,cAAzBd,aAAA,EAAAA,EAAgBgB,OAA6C,qBAAtBN,aAAW,EAAXA,EAAaM,MAChD,GAAGD,OAAAM,IAAE,mBACL,GAAGN,OAAAM,IAAE,yBAGXT,EAAAA,QAACC,cAAAI,kBACC,CAAAC,KAC2B,cAAzBlB,aAAA,EAAAA,EAAgBgB,OAA6C,qBAAtBN,eAAAA,EAAaM,MAChDgB,EAAkBA,mBAClBC,UAENnB,UAAU,yDAGdF,UAAAC,cAACqB,EAAmBA,oBAAA,CAACC,GAAG,sBAAsBC,MAAM,SAI5D"}
@@ -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"),a=require("../AudioBars.js"),r=require("./Progress.js"),i=require("../Button.js"),s=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),l=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),o=require("../../node_modules/react-tooltip/dist/react-tooltip.min.mjs.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 n=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var u=require("../../utils/customHooks/useEventListener.js"),d=require("../../utils/genericFunctions/eventDispatch.js"),p=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=m(e),y=function(){var e=p.useSelector((function(e){return e.player})),m=e.audioPlayerTrackType,y=e.audioPlayerTrackName,j=e.audioPlayer,v=e.audioPlayerPlaying,h=p.useSelector((function(e){return e.island})).isOpen,x=c.useDispatch();function q(){x.player.startAudioPlayer((function(){})),d.eventDispatch("phone-island-audio-player-played",{})}function E(){x.player.pauseAudioPlayer(),d.eventDispatch("phone-island-audio-player-paused",{})}u.useEventListener("phone-island-audio-player-play",(function(e){q()})),u.useEventListener("phone-island-audio-player-pause",(function(e){E()}));var P=n.useTranslation().t;return f.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},f.default.createElement("div",{className:"pi-flex pi-gap-4"},f.default.createElement(t.Avatar,{type:m}),f.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},f.default.createElement("div",{style:{width:h?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},y)),f.default.createElement(a.AudioBars,{audioElement:j&&j.current,size:h?"large":"small"})),h&&f.default.createElement("div",null,f.default.createElement(r.Progress,null),f.default.createElement("div",{className:"pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7"},f.default.createElement(i.Button,{onClick:v?E:q,variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip-pause-audio-player","data-tooltip-content":"".concat(P(v?"Tooltip.Pause":"Tooltip.Play"))},v?f.default.createElement(s.FontAwesomeIcon,{icon:l.faPause,className:"pi-h-6 pi-w-6"}):f.default.createElement(s.FontAwesomeIcon,{icon:l.faPlay,className:"pi-h-6 pi-w-6"})))),f.default.createElement(o.Tooltip,{className:"pi-z-20",id:"tooltip-pause-audio-player",place:"bottom"}))};exports.KeypadView=y,exports.default=y;
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"),a=require("../AudioBars.js"),r=require("./Progress.js"),i=require("../Button.js"),s=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),l=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.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("../../utils/customHooks/useEventListener.js"),n=require("../../utils/genericFunctions/eventDispatch.js"),d=require("../CustomThemedTooltip.js"),p=require("../../node_modules/react-redux/es/hooks/useSelector.js"),c=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=m(e),y=function(){var e=p.useSelector((function(e){return e.player})),m=e.audioPlayerTrackType,y=e.audioPlayerTrackName,h=e.audioPlayer,v=e.audioPlayerPlaying,j=p.useSelector((function(e){return e.island})).isOpen,x=c.useDispatch();function q(){x.player.startAudioPlayer((function(){})),n.eventDispatch("phone-island-audio-player-played",{})}function E(){x.player.pauseAudioPlayer(),n.eventDispatch("phone-island-audio-player-paused",{})}u.useEventListener("phone-island-audio-player-play",(function(e){q()})),u.useEventListener("phone-island-audio-player-pause",(function(e){E()}));var P=o.useTranslation().t;return f.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},f.default.createElement("div",{className:"pi-flex pi-gap-4"},f.default.createElement(t.Avatar,{type:m}),f.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},f.default.createElement("div",{style:{width:j?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},y)),f.default.createElement(a.AudioBars,{audioElement:h&&h.current,size:j?"large":"small"})),j&&f.default.createElement("div",null,f.default.createElement(r.Progress,null),f.default.createElement("div",{className:"pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7"},f.default.createElement(i.Button,{onClick:v?E:q,variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip-pause-audio-player","data-tooltip-content":"".concat(P(v?"Tooltip.Pause":"Tooltip.Play"))},v?f.default.createElement(s.FontAwesomeIcon,{icon:l.faPause,className:"pi-h-6 pi-w-6"}):f.default.createElement(s.FontAwesomeIcon,{icon:l.faPlay,className:"pi-h-6 pi-w-6"})))),f.default.createElement(d.CustomThemedTooltip,{id:"tooltip-pause-audio-player",place:"bottom"}))};exports.KeypadView=y,exports.default=y;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Avatar } from './Avatar'\nimport { AudioBars } from '../AudioBars'\nimport Progress from './Progress'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPause, faPlay } from '@fortawesome/free-solid-svg-icons'\nimport { Tooltip } from 'react-tooltip'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\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 const dispatch = useDispatch<Dispatch>()\n\n function startPlaying() {\n dispatch.player.startAudioPlayer(() => {})\n eventDispatch('phone-island-audio-player-played', {})\n }\n useEventListener('phone-island-audio-player-play', (data: {}) => {\n startPlaying()\n })\n\n function pausePlaying() {\n dispatch.player.pauseAudioPlayer()\n eventDispatch('phone-island-audio-player-paused', {})\n }\n useEventListener('phone-island-audio-player-pause', (data: {}) => {\n pausePlaying()\n })\n\n const { t } = useTranslation()\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 <AudioBars\n audioElement={audioPlayer && audioPlayer.current}\n size={isOpen ? 'large' : 'small'}\n />\n </div>\n {isOpen && (\n <div>\n <Progress />\n <div className='pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7'>\n <Button\n onClick={audioPlayerPlaying ? pausePlaying : startPlaying}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip-pause-audio-player'\n data-tooltip-content={audioPlayerPlaying ? `${t('Tooltip.Pause')}` : `${t('Tooltip.Play')}`}\n >\n {audioPlayerPlaying ? (\n <FontAwesomeIcon icon={faPause} className='pi-h-6 pi-w-6' />\n ) : (\n <FontAwesomeIcon icon={faPlay} className='pi-h-6 pi-w-6' />\n )}\n </Button>\n </div>\n </div>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip-pause-audio-player' place='bottom' />\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","dispatch","useDispatch","startPlaying","startAudioPlayer","eventDispatch","pausePlaying","pauseAudioPlayer","useEventListener","data","t","useTranslation","React","createElement","className","Avatar","type","style","width","AudioBars","audioElement","current","size","Progress","Button","onClick","variant","transform","concat","FontAwesomeIcon","icon","faPause","faPlay","Tooltip","id","place"],"mappings":"gzCAgBaA,EAAkC,WACvC,IAAAC,EACJC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,UADlCC,EAAoBJ,EAAAI,qBAAEC,EAAoBL,EAAAK,qBAAEC,EAAWN,EAAAM,YAAEC,EAAkBP,EAAAO,mBAE3EC,EAAWP,eAAY,SAACC,GAAqB,OAAAA,EAAMO,iBACrDC,EAAWC,EAAAA,cAEjB,SAASC,IACPF,EAASP,OAAOU,kBAAiB,WAAQ,IACzCC,gBAAc,mCAAoC,CAAA,EACnD,CAKD,SAASC,IACPL,EAASP,OAAOa,mBAChBF,gBAAc,mCAAoC,CAAA,EACnD,CAPDG,mBAAiB,kCAAkC,SAACC,GAClDN,GACF,IAMAK,mBAAiB,mCAAmC,SAACC,GACnDH,GACF,IAEQ,IAAAI,EAAMC,qBAEd,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,oBACbF,EAAAA,QAAAC,cAACE,EAAAA,OAAM,CAACC,KAAMrB,IACdiB,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,qCACbF,EAAAA,QAAAC,cAAA,MAAA,CACEI,MAAO,CACLC,MAAOnB,EAAS,QAAU,QAE5Be,UAAW,yFAEVlB,IAGLgB,EAAAA,QAACC,cAAAM,EAAAA,WACCC,aAAcvB,GAAeA,EAAYwB,QACzCC,KAAMvB,EAAS,QAAU,WAG5BA,GACCa,EAAA,QAAAC,cAAA,MAAA,KACED,UAAAC,cAACU,EAAQA,SAAG,MACZX,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+DACbF,EAAAA,QAAAC,cAACW,SACC,CAAAC,QAAS3B,EAAqBQ,EAAeH,EAC7CuB,QAAQ,UACRT,MAAO,CAAEU,UAAW,iCACJ,6BAA4B,uBACD,GAAAC,OAAGlB,EAAxBZ,EAA0B,gBAA0B,kBAEzEA,EACCc,EAAAA,QAACC,cAAAgB,mBAAgBC,KAAMC,EAAAA,QAASjB,UAAU,kBAE1CF,wBAACiB,EAAeA,gBAAA,CAACC,KAAME,SAAQlB,UAAU,qBAOnDF,EAAAA,QAAAC,cAACoB,UAAQ,CAAAnB,UAAU,UAAUoB,GAAG,6BAA6BC,MAAM,WAGzE"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Avatar } from './Avatar'\nimport { AudioBars } from '../AudioBars'\nimport Progress from './Progress'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPause, faPlay } from '@fortawesome/free-solid-svg-icons'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\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 const dispatch = useDispatch<Dispatch>()\n\n function startPlaying() {\n dispatch.player.startAudioPlayer(() => {})\n eventDispatch('phone-island-audio-player-played', {})\n }\n useEventListener('phone-island-audio-player-play', (data: {}) => {\n startPlaying()\n })\n\n function pausePlaying() {\n dispatch.player.pauseAudioPlayer()\n eventDispatch('phone-island-audio-player-paused', {})\n }\n useEventListener('phone-island-audio-player-pause', (data: {}) => {\n pausePlaying()\n })\n\n const { t } = useTranslation()\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 <AudioBars\n audioElement={audioPlayer && audioPlayer.current}\n size={isOpen ? 'large' : 'small'}\n />\n </div>\n {isOpen && (\n <div>\n <Progress />\n <div className='pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7'>\n <Button\n onClick={audioPlayerPlaying ? pausePlaying : startPlaying}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip-pause-audio-player'\n data-tooltip-content={\n audioPlayerPlaying ? `${t('Tooltip.Pause')}` : `${t('Tooltip.Play')}`\n }\n >\n {audioPlayerPlaying ? (\n <FontAwesomeIcon icon={faPause} className='pi-h-6 pi-w-6' />\n ) : (\n <FontAwesomeIcon icon={faPlay} className='pi-h-6 pi-w-6' />\n )}\n </Button>\n </div>\n </div>\n )}\n {/* Buttons tooltips */}\n <CustomThemedTooltip id='tooltip-pause-audio-player' place='bottom' />\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","dispatch","useDispatch","startPlaying","startAudioPlayer","eventDispatch","pausePlaying","pauseAudioPlayer","useEventListener","data","t","useTranslation","React","createElement","className","Avatar","type","style","width","AudioBars","audioElement","current","size","Progress","Button","onClick","variant","transform","concat","FontAwesomeIcon","icon","faPause","faPlay","CustomThemedTooltip","id","place"],"mappings":"2wCAgBaA,EAAkC,WACvC,IAAAC,EACJC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,UADlCC,EAAoBJ,EAAAI,qBAAEC,EAAoBL,EAAAK,qBAAEC,EAAWN,EAAAM,YAAEC,EAAkBP,EAAAO,mBAE3EC,EAAWP,eAAY,SAACC,GAAqB,OAAAA,EAAMO,iBACrDC,EAAWC,EAAAA,cAEjB,SAASC,IACPF,EAASP,OAAOU,kBAAiB,WAAQ,IACzCC,gBAAc,mCAAoC,CAAA,EACnD,CAKD,SAASC,IACPL,EAASP,OAAOa,mBAChBF,gBAAc,mCAAoC,CAAA,EACnD,CAPDG,mBAAiB,kCAAkC,SAACC,GAClDN,GACF,IAMAK,mBAAiB,mCAAmC,SAACC,GACnDH,GACF,IAEQ,IAAAI,EAAMC,qBAEd,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,oBACbF,EAAAA,QAAAC,cAACE,EAAAA,OAAM,CAACC,KAAMrB,IACdiB,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,qCACbF,EAAAA,QAAAC,cAAA,MAAA,CACEI,MAAO,CACLC,MAAOnB,EAAS,QAAU,QAE5Be,UAAW,yFAEVlB,IAGLgB,EAAAA,QAACC,cAAAM,EAAAA,WACCC,aAAcvB,GAAeA,EAAYwB,QACzCC,KAAMvB,EAAS,QAAU,WAG5BA,GACCa,EAAA,QAAAC,cAAA,MAAA,KACED,UAAAC,cAACU,EAAQA,SAAG,MACZX,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+DACbF,EAAAA,QAAAC,cAACW,SACC,CAAAC,QAAS3B,EAAqBQ,EAAeH,EAC7CuB,QAAQ,UACRT,MAAO,CAAEU,UAAW,iCACJ,6BAA4B,uBAErB,GAAAC,OAAGlB,EAAxBZ,EAA0B,gBAA0B,kBAGrDA,EACCc,EAAAA,QAACC,cAAAgB,mBAAgBC,KAAMC,EAAAA,QAASjB,UAAU,kBAE1CF,wBAACiB,EAAeA,gBAAA,CAACC,KAAME,SAAQlB,UAAU,qBAOnDF,UAAAC,cAACoB,EAAAA,oBAAmB,CAACC,GAAG,6BAA6BC,MAAM,WAGjE"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("../node_modules/tslib/tslib.es6.js"),e=require("react"),i=require("../utils/genericFunctions/classNames.js");function a(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var t=a(e);exports.Button=function(e){var a=e.children,p=e.variant,n=e.active,g=void 0!==n&&n,o=e.className,d=void 0===o?"":o,s=r.__rest(e,["children","variant","active","className"]),u={base:"pi-flex pi-font-light pi-content-center pi-items-center pi-justify-center pi-tracking-wide pi-duration-200 pi-transform pi-outline-none focus:pi-ring-2 focus:pi-z-20 focus:pi-ring-offset-2 disabled:pi-opacity-75 pi-border pi-border-transparent focus:pi-ring-offset-white dark:focus:pi-ring-offset-black pi-text-sm pi-leading-4 pi-col-start-auto pi-transition-color pi-shrink-0",variant:{red:"dark:pi-bg-red-500 pi-bg-red-700 hover:pi-bg-red-700 dark:hover:pi-bg-red-300 focus:pi-ring-emerald-500 dark:focus:ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",green:"pi-bg-green-700 dark:pi-bg-green-500 hover:pi-bg-green-600 dark:hover:pi-bg-green-300 focus:pi-ring-green-500 focus:dark:pi-ring-200 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",default:"hover:pi-bg-gray-500 dark:hover:pi-bg-gray-50 focus:pi-ring-emerald-500 dark:focus:pi-ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",neutral:"pi-bg-transparent enabled:hover:pi-bg-gray-500 enabled:hover:pi-border-gray-500 pi-border pi-border-gray-700 focus:pi-ring-0 pi-h-12 pi-w-12 pi-rounded-full",transparent:"pi-bg-transparent dark:enabled:hover:pi-bg-gray-600/30 enabled:hover:pi-bg-gray-200/70 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-12 pi-w-12 pi-rounded-full",transparentSideView:"pi-bg-transparent dark:enabled:hover:pi-bg-gray-600 enabled:hover:pi-bg-gray-600 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded",transparentSettings:"pi-bg-transparent dark:hover:pi-bg-gray-600 hover:pi-bg-gray-300 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded"},background:{base:{default:"pi-bg-gray-700 dark:pi-bg-gray-300"},active:{default:"pi-bg-gray-500 dark:pi-bg-gray-50"}}};return t.default.createElement(t.default.Fragment,null,t.default.createElement("button",r.__assign({"data-stop-propagation":!0,className:i.classNames(g&&u.background.active[p]?u.background.active[p]:u.background.base[p]&&u.background.base[p],u.base,p&&u.variant[p],d&&d)},s),a))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("../node_modules/tslib/tslib.es6.js"),i=require("react"),e=require("../utils/genericFunctions/classNames.js");function a(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var p=a(i);exports.Button=function(i){var a=i.children,t=i.variant,g=i.active,n=void 0!==g&&g,o=i.className,d=void 0===o?"":o,s=r.__rest(i,["children","variant","active","className"]),u={base:"pi-flex pi-font-light pi-content-center pi-items-center pi-justify-center pi-tracking-wide pi-duration-200 pi-transform pi-outline-none focus:pi-ring-2 focus:pi-z-20 focus:pi-ring-offset-2 disabled:pi-opacity-75 pi-border pi-border-transparent focus:pi-ring-offset-white dark:focus:pi-ring-offset-black pi-text-sm pi-leading-4 pi-col-start-auto pi-transition-color pi-shrink-0",variant:{red:"dark:pi-bg-red-500 pi-bg-red-700 hover:pi-bg-red-700 dark:hover:pi-bg-red-300 focus:pi-ring-emerald-500 dark:focus:ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",green:"pi-bg-green-700 dark:pi-bg-green-500 hover:pi-bg-green-600 dark:hover:pi-bg-green-300 focus:pi-ring-green-500 focus:dark:pi-ring-200 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",default:"hover:pi-bg-gray-500 dark:hover:pi-bg-gray-50 focus:pi-ring-emerald-500 dark:focus:pi-ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full",neutral:"pi-bg-transparent enabled:hover:pi-bg-gray-500 enabled:hover:pi-border-gray-500 pi-border pi-border-gray-700 focus:pi-ring-0 pi-h-12 pi-w-12 pi-rounded-full",transparent:"pi-bg-transparent dark:enabled:hover:pi-bg-gray-600/30 enabled:hover:pi-bg-gray-200/70 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-12 pi-w-12 pi-rounded-full",transparentSideView:"pi-bg-transparent dark:enabled:hover:pi-bg-gray-600 enabled:hover:pi-bg-gray-600 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded",transparentSettings:"pi-bg-transparent dark:hover:pi-bg-gray-600 hover:pi-bg-gray-300 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded",gray:"dark:pi-bg-gray-300 pi-bg-gray-700 hover:pi-bg-gray-800 dark:hover:pi-bg-gray-50 focus:pi-ring-gray-500 dark:focus:ring-gray-300 pi-text-gray-50 dark:pi-text-gray-900 pi-rounded-full pi-py-4 pi-px-4 pi-max-w-44"},background:{base:{default:"pi-bg-gray-700 dark:pi-bg-gray-300"},active:{default:"pi-bg-gray-500 dark:pi-bg-gray-50"}}};return p.default.createElement(p.default.Fragment,null,p.default.createElement("button",r.__assign({"data-stop-propagation":!0,className:e.classNames(n&&u.background.active[t]?u.background.active[t]:u.background.base[t]&&u.background.base[t],u.base,t&&u.variant[t],d&&d)},s),a))};
2
2
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../src/components/Button.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC, ReactNode, ComponentPropsWithRef } from 'react'\nimport { classNames } from '../utils'\n\ninterface ButtonProps extends ComponentPropsWithRef<'button'> {\n children: ReactNode\n variant:\n | 'red'\n | 'green'\n | 'default'\n | 'neutral'\n | 'transparent'\n | 'transparentSideView'\n | 'transparentSettings'\n active?: boolean\n}\n\nexport const Button: FC<ButtonProps> = ({\n children,\n variant,\n active = false,\n className = '',\n ...props\n}) => {\n const classes = {\n base: 'pi-flex pi-font-light pi-content-center pi-items-center pi-justify-center pi-tracking-wide pi-duration-200 pi-transform pi-outline-none focus:pi-ring-2 focus:pi-z-20 focus:pi-ring-offset-2 disabled:pi-opacity-75 pi-border pi-border-transparent focus:pi-ring-offset-white dark:focus:pi-ring-offset-black pi-text-sm pi-leading-4 pi-col-start-auto pi-transition-color pi-shrink-0',\n variant: {\n red: 'dark:pi-bg-red-500 pi-bg-red-700 hover:pi-bg-red-700 dark:hover:pi-bg-red-300 focus:pi-ring-emerald-500 dark:focus:ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n green:\n 'pi-bg-green-700 dark:pi-bg-green-500 hover:pi-bg-green-600 dark:hover:pi-bg-green-300 focus:pi-ring-green-500 focus:dark:pi-ring-200 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n default:\n 'hover:pi-bg-gray-500 dark:hover:pi-bg-gray-50 focus:pi-ring-emerald-500 dark:focus:pi-ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n neutral:\n 'pi-bg-transparent enabled:hover:pi-bg-gray-500 enabled:hover:pi-border-gray-500 pi-border pi-border-gray-700 focus:pi-ring-0 pi-h-12 pi-w-12 pi-rounded-full',\n transparent:\n 'pi-bg-transparent dark:enabled:hover:pi-bg-gray-600/30 enabled:hover:pi-bg-gray-200/70 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-12 pi-w-12 pi-rounded-full',\n transparentSideView:\n 'pi-bg-transparent dark:enabled:hover:pi-bg-gray-600 enabled:hover:pi-bg-gray-600 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded',\n transparentSettings:\n 'pi-bg-transparent dark:hover:pi-bg-gray-600 hover:pi-bg-gray-300 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded',\n },\n background: {\n base: {\n default: 'pi-bg-gray-700 dark:pi-bg-gray-300',\n },\n active: {\n default: 'pi-bg-gray-500 dark:pi-bg-gray-50',\n },\n },\n }\n\n return (\n <>\n <button\n data-stop-propagation={true}\n className={classNames(\n active && classes.background.active[variant]\n ? classes.background.active[variant]\n : classes.background.base[variant] && classes.background.base[variant],\n classes.base,\n variant && classes.variant[variant],\n className && className,\n )}\n {...props}\n >\n {children}\n </button>\n </>\n )\n}\n"],"names":["_a","children","variant","_b","active","_c","className","props","__rest","classes","base","red","green","default","neutral","transparent","transparentSideView","transparentSettings","background","React","createElement","Fragment","__assign","classNames"],"mappings":"kSAmBuC,SAACA,GACtC,IAAAC,aACAC,YACAC,EAAAH,EAAAI,OAAAA,OAAS,IAAAD,KACTE,EAAAL,EAAAM,UAAAA,OAAY,IAAAD,EAAA,KACTE,EALmCC,EAAAA,OAAAR,EAAA,CAAA,WAAA,UAAA,SAAA,cAOhCS,EAAU,CACdC,KAAM,2XACNR,QAAS,CACPS,IAAK,0MACLC,MACE,2MACFC,QACE,6KACFC,QACE,+JACFC,YACE,yPACFC,oBACE,4OACFC,oBACE,6NAEJC,WAAY,CACVR,KAAM,CACJG,QAAS,sCAEXT,OAAQ,CACNS,QAAS,uCAKf,OACEM,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAAC,cAAA,SAAAE,EAAAA,SAAA,CAAA,yBACyB,EACvBhB,UAAWiB,EAAAA,WACTnB,GAAUK,EAAQS,WAAWd,OAAOF,GAChCO,EAAQS,WAAWd,OAAOF,GAC1BO,EAAQS,WAAWR,KAAKR,IAAYO,EAAQS,WAAWR,KAAKR,GAChEO,EAAQC,KACRR,GAAWO,EAAQP,QAAQA,GAC3BI,GAAaA,IAEXC,GAEHN,GAIT"}
1
+ {"version":3,"file":"Button.js","sources":["../../src/components/Button.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC, ReactNode, ComponentPropsWithRef } from 'react'\nimport { classNames } from '../utils'\n\ninterface ButtonProps extends ComponentPropsWithRef<'button'> {\n children: ReactNode\n variant:\n | 'red'\n | 'green'\n | 'default'\n | 'neutral'\n | 'transparent'\n | 'transparentSideView'\n | 'transparentSettings'\n | 'gray'\n active?: boolean\n}\n\nexport const Button: FC<ButtonProps> = ({\n children,\n variant,\n active = false,\n className = '',\n ...props\n}) => {\n const classes = {\n base: 'pi-flex pi-font-light pi-content-center pi-items-center pi-justify-center pi-tracking-wide pi-duration-200 pi-transform pi-outline-none focus:pi-ring-2 focus:pi-z-20 focus:pi-ring-offset-2 disabled:pi-opacity-75 pi-border pi-border-transparent focus:pi-ring-offset-white dark:focus:pi-ring-offset-black pi-text-sm pi-leading-4 pi-col-start-auto pi-transition-color pi-shrink-0',\n variant: {\n red: 'dark:pi-bg-red-500 pi-bg-red-700 hover:pi-bg-red-700 dark:hover:pi-bg-red-300 focus:pi-ring-emerald-500 dark:focus:ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n green:\n 'pi-bg-green-700 dark:pi-bg-green-500 hover:pi-bg-green-600 dark:hover:pi-bg-green-300 focus:pi-ring-green-500 focus:dark:pi-ring-200 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n default:\n 'hover:pi-bg-gray-500 dark:hover:pi-bg-gray-50 focus:pi-ring-emerald-500 dark:focus:pi-ring-emerald-300 pi-text-white dark:pi-text-gray-950 pi-h-12 pi-w-12 pi-rounded-full',\n neutral:\n 'pi-bg-transparent enabled:hover:pi-bg-gray-500 enabled:hover:pi-border-gray-500 pi-border pi-border-gray-700 focus:pi-ring-0 pi-h-12 pi-w-12 pi-rounded-full',\n transparent:\n 'pi-bg-transparent dark:enabled:hover:pi-bg-gray-600/30 enabled:hover:pi-bg-gray-200/70 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-12 pi-w-12 pi-rounded-full',\n transparentSideView:\n 'pi-bg-transparent dark:enabled:hover:pi-bg-gray-600 enabled:hover:pi-bg-gray-600 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded',\n transparentSettings:\n 'pi-bg-transparent dark:hover:pi-bg-gray-600 hover:pi-bg-gray-300 focus:pi-ring-offset-gray-200 dark:focus:pi-ring-gray-500 dark:focus:pi-ring-gray-500 focus:pi-ring-gray-400 dark:pi-text-white pi-h-8 pi-w-8 pi-rounded',\n gray: 'dark:pi-bg-gray-300 pi-bg-gray-700 hover:pi-bg-gray-800 dark:hover:pi-bg-gray-50 focus:pi-ring-gray-500 dark:focus:ring-gray-300 pi-text-gray-50 dark:pi-text-gray-900 pi-rounded-full pi-py-4 pi-px-4 pi-max-w-44',\n },\n background: {\n base: {\n default: 'pi-bg-gray-700 dark:pi-bg-gray-300',\n },\n active: {\n default: 'pi-bg-gray-500 dark:pi-bg-gray-50',\n },\n },\n }\n\n return (\n <>\n <button\n data-stop-propagation={true}\n className={classNames(\n active && classes.background.active[variant]\n ? classes.background.active[variant]\n : classes.background.base[variant] && classes.background.base[variant],\n classes.base,\n variant && classes.variant[variant],\n className && className,\n )}\n {...props}\n >\n {children}\n </button>\n </>\n )\n}\n"],"names":["_a","children","variant","_b","active","_c","className","props","__rest","classes","base","red","green","default","neutral","transparent","transparentSideView","transparentSettings","gray","background","React","createElement","Fragment","__assign","classNames"],"mappings":"kSAoBuC,SAACA,GACtC,IAAAC,aACAC,YACAC,EAAAH,EAAAI,OAAAA,OAAS,IAAAD,KACTE,EAAAL,EAAAM,UAAAA,OAAY,IAAAD,EAAA,KACTE,EALmCC,EAAAA,OAAAR,EAAA,CAAA,WAAA,UAAA,SAAA,cAOhCS,EAAU,CACdC,KAAM,2XACNR,QAAS,CACPS,IAAK,0MACLC,MACE,2MACFC,QACE,6KACFC,QACE,+JACFC,YACE,yPACFC,oBACE,4OACFC,oBACE,4NACFC,KAAM,sNAERC,WAAY,CACVT,KAAM,CACJG,QAAS,sCAEXT,OAAQ,CACNS,QAAS,uCAKf,OACEO,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAAC,cAAA,SAAAE,EAAAA,SAAA,CAAA,yBACyB,EACvBjB,UAAWkB,EAAAA,WACTpB,GAAUK,EAAQU,WAAWf,OAAOF,GAChCO,EAAQU,WAAWf,OAAOF,GAC1BO,EAAQU,WAAWT,KAAKR,IAAYO,EAAQU,WAAWT,KAAKR,GAChEO,EAAQC,KACRR,GAAWO,EAAQP,QAAQA,GAC3BI,GAAaA,IAEXC,GAEHN,GAIT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../lib/phone/call.js"),a=require("../../utils/customHooks/useEventListener.js"),i=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/react-redux/es/index.js");var o=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js");var n=require("../../lib/user/default_device.js");require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../lib/webrtc/janus.js");var l=require("../../lib/webrtc/messages.js");require("../../node_modules/mic-check/lib/index.js");var r=require("../../static/outgoing_ringtone.js");require("../Island.js");var s=require("../../services/astproxy.js"),c=require("../Button.js"),d=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),u=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js");require("../../node_modules/i18next/dist/esm/i18next.js");var p=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),m=require("../../node_modules/react-tooltip/dist/react-tooltip.min.mjs.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 f=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var h=require("../../node_modules/react-redux/es/hooks/useSelector.js"),v=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function g(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var E=g(e);exports.default=function(){var e=h.useSelector((function(e){return e.currentCall})),g=e.paused,w=e.muted,j=e.isRecording,y=h.useSelector((function(e){return e.currentCall.parked})),b=h.useSelector((function(e){return e.island})),x=b.view,T=b.actionsExpanded,C=b.sideViewIsVisible;b.isConferenceList;var q=h.useSelector((function(e){return e.currentCall.transferring})),k=h.useSelector((function(e){return e.listen})),N=v.useDispatch();function A(){N.island.setIslandView("keypad"!==x?"keypad":"call"),C&&N.island.toggleSideViewVisible(!1),i.eventDispatch("phone-island-call-keypad-opened",{})}function _(){N.island.setIslandView("transfer"!==x?"transfer":"call"),C&&N.island.toggleSideViewVisible(!1),i.eventDispatch("phone-island-call-transfer-opened",{})}function I(){n.isWebRTC()?l.sendDTMF("*"):s.sendPhysicalDTMF("*"),o.store.getState().player.audioPlayerPlaying||N.player.updateStartAudioPlayer({src:r.default,loop:!0}),setTimeout((function(){n.isWebRTC()?l.sendDTMF("1"):s.sendPhysicalDTMF("1"),N.player.stopAudioPlayer(),q&&setTimeout((function(){N.currentCall.updateTransferring(!1)}),500),i.eventDispatch("phone-island-call-transfer-canceled",{})}),500)}a.useEventListener("phone-island-call-keypad-open",(function(){A()})),a.useEventListener("phone-island-call-transfer-open",(function(){_()})),a.useEventListener("phone-island-call-transfer-cancel",(function(){I()})),a.useEventListener("phone-island-call-actions-open",(function(){N.island.toggleActionsExpanded(!0),i.eventDispatch("phone-island-call-actions-opened",{})})),a.useEventListener("phone-island-call-actions-close",(function(){N.island.toggleActionsExpanded(!1),i.eventDispatch("phone-island-call-actions-closed",{})}));var F=f.useTranslation().t;return E.default.createElement(E.default.Fragment,null,E.default.createElement("div",{className:"".concat((null==k?void 0:k.isListen)||(null==k?void 0:k.isIntrude)?k.isIntrude?"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":"pi-hidden":"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"," ")},!((null==k?void 0:k.isIntrude)||(null==k?void 0:k.isListen))&&E.default.createElement(c.Button,{variant:"default",active:!!g,onClick:function(){return g?t.unpauseCurrentCall():t.pauseCurrentCall()},"data-tooltip-id":"tooltip-pause","data-tooltip-content":"".concat(F(g?"Tooltip.Play":"Tooltip.Pause"))},g?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faPlay}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faPause})),!(null==k?void 0:k.isListen)&&E.default.createElement(c.Button,{variant:"default",active:!!w,onClick:function(){return w?t.unmuteCurrentCall():t.muteCurrentCall()},"data-tooltip-id":"tooltip-mute","data-tooltip-content":"".concat(F(w?"Tooltip.Unmute":"Tooltip.Mute"))},w?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faMicrophoneSlash}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faMicrophone})),!(k.isIntrude||k.isListen)&&E.default.createElement(c.Button,{active:q,onClick:q?I:_,variant:"default","data-tooltip-id":"tooltip-transfer","data-tooltip-content":"".concat(F(q?"Tooltip.Cancel transfer":"Tooltip.Transfer"))},q?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faArrowDownUpAcrossLine}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-rotate-90 pi-h-6 pi-w-6",icon:u.faArrowRightArrowLeft})),!(k.isIntrude||k.isListen)&&E.default.createElement(c.Button,{active:T,variant:"transparent",onClick:function(){T?(N.island.toggleActionsExpanded(!1),i.eventDispatch("phone-island-call-actions-closed",{})):(N.island.toggleActionsExpanded(!0),i.eventDispatch("phone-island-call-actions-opened",{}))},"data-tooltip-id":"tooltip-expand","data-tooltip-content":"".concat(F(T?"Tooltip.Collapse":"Tooltip.Expand"))},T?E.default.createElement(d.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:u.faChevronUp}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:u.faChevronDown}))),T?E.default.createElement(E.default.Fragment,null," ",E.default.createElement("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"},E.default.createElement(c.Button,{active:"keypad"===x,variant:"default",onClick:A,"data-tooltip-id":"tooltip-keyboard","data-tooltip-content":F("Tooltip.Keyboard")||""},E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faGridRound})),E.default.createElement(c.Button,{active:y,variant:"default",onClick:t.parkCurrentCall,"data-tooltip-id":"tooltip-park","data-tooltip-content":F("Tooltip.Park")||""},E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faSquareParking})),E.default.createElement(c.Button,{active:j,"data-stop-propagation":!0,variant:"default",onClick:function(){return t.recordCurrentCall(j)},"data-tooltip-id":"tooltip-record","data-tooltip-content":j?F("Tooltip.Stop recording")||"":F("Tooltip.Record")||""},j?E.default.createElement(d.FontAwesomeIcon,{icon:u.faStop,className:"pi-h-6 pi-w-6"}):E.default.createElement("div",{className:"custom-circle-dot-wrapper","data-stop-propagation":!0},E.default.createElement(d.FontAwesomeIcon,{icon:u.faCircleDot,className:"fa-circle-dot pi-text-white dark:pi-text-red-700"}),E.default.createElement(d.FontAwesomeIcon,{icon:u.faCircle,className:"inner-dot pi-text-red-700 dark:pi-text-white"}))))):E.default.createElement(E.default.Fragment,null),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-transfer",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-pause",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-mute",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-expand",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-keyboard",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-record",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-conference",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-park",place:"bottom"}),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip-sideView",place:"left"}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../lib/phone/call.js"),n=require("../../utils/customHooks/useEventListener.js"),i=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/react-redux/es/index.js");var o=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js");var a=require("../../lib/user/default_device.js");require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../lib/webrtc/janus.js");var l=require("../../lib/webrtc/messages.js");require("../../node_modules/mic-check/lib/index.js");var s=require("../../static/outgoing_ringtone.js");require("../Island.js");var r=require("../../services/astproxy.js"),c=require("../Button.js"),d=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),u=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js");require("../../node_modules/i18next/dist/esm/i18next.js");var p=require("../CustomThemedTooltip.js"),m=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.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 f=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var h=require("../../node_modules/react-redux/es/hooks/useSelector.js"),v=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function w(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var E=w(e);exports.default=function(){var e=h.useSelector((function(e){return e.currentCall})),w=e.paused,g=e.muted;e.isRecording;var T=h.useSelector((function(e){return e.currentCall.parked})),j=h.useSelector((function(e){return e.island})),C=j.view,y=j.actionsExpanded,b=j.sideViewIsVisible,x=j.isConferenceList,q=h.useSelector((function(e){return e.currentCall.transferring})),k=h.useSelector((function(e){return e.listen})),A=v.useDispatch();function D(){A.island.setIslandView("keypad"!==C?"keypad":"call"),b&&i.eventDispatch("phone-island-sideview-close",{}),i.eventDispatch("phone-island-call-keypad-opened",{})}function I(){A.island.setIslandView("transfer"!==C?"transfer":"call"),b&&i.eventDispatch("phone-island-sideview-close",{}),i.eventDispatch("phone-island-call-transfer-opened",{})}function _(){a.isWebRTC()?l.sendDTMF("*"):r.sendPhysicalDTMF("*"),o.store.getState().player.audioPlayerPlaying||A.player.updateStartAudioPlayer({src:s.default,loop:!0}),setTimeout((function(){a.isWebRTC()?l.sendDTMF("1"):r.sendPhysicalDTMF("1"),A.player.stopAudioPlayer(),q&&setTimeout((function(){A.currentCall.updateTransferring(!1)}),500),i.eventDispatch("phone-island-call-transfer-canceled",{})}),500)}n.useEventListener("phone-island-call-keypad-open",(function(){D()})),n.useEventListener("phone-island-call-transfer-open",(function(){I()})),n.useEventListener("phone-island-call-transfer-cancel",(function(){_()})),n.useEventListener("phone-island-call-actions-open",(function(){A.island.toggleActionsExpanded(!0),i.eventDispatch("phone-island-call-actions-opened",{})})),n.useEventListener("phone-island-call-actions-close",(function(){A.island.toggleActionsExpanded(!1),i.eventDispatch("phone-island-call-actions-closed",{})}));var F=f.useTranslation().t;return E.default.createElement(E.default.Fragment,null,E.default.createElement("div",{className:"".concat((null==k?void 0:k.isListen)||(null==k?void 0:k.isIntrude)?k.isIntrude?"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":"pi-hidden":"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"," ")},!((null==k?void 0:k.isIntrude)||(null==k?void 0:k.isListen))&&E.default.createElement(c.Button,{variant:"default",active:!!w,onClick:function(){return w?t.unpauseCurrentCall():t.pauseCurrentCall()},"data-tooltip-id":"tooltip-pause","data-tooltip-content":"".concat(F(w?"Tooltip.Play":"Tooltip.Pause"))},w?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faPlay}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faPause})),!(null==k?void 0:k.isListen)&&E.default.createElement(c.Button,{variant:"default",active:!!g,onClick:function(){return g?t.unmuteCurrentCall():t.muteCurrentCall()},"data-tooltip-id":"tooltip-mute","data-tooltip-content":"".concat(F(g?"Tooltip.Unmute":"Tooltip.Mute"))},g?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faMicrophoneSlash}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faMicrophone})),!(k.isIntrude||k.isListen)&&E.default.createElement(c.Button,{active:q,onClick:q?_:I,variant:"default","data-tooltip-id":"tooltip-transfer","data-tooltip-content":"".concat(F(q?"Tooltip.Cancel transfer":"Tooltip.Transfer"))},q?E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faArrowDownUpAcrossLine}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-rotate-90 pi-h-6 pi-w-6",icon:u.faArrowRightArrowLeft})),!(k.isIntrude||k.isListen)&&E.default.createElement(c.Button,{active:y,variant:"transparent",onClick:function(){y?(A.island.toggleActionsExpanded(!1),i.eventDispatch("phone-island-call-actions-closed",{}),i.eventDispatch("phone-island-sideview-close",{})):(A.island.toggleActionsExpanded(!0),i.eventDispatch("phone-island-call-actions-opened",{}))},"data-tooltip-id":"tooltip-expand","data-tooltip-content":"".concat(F(y?"Tooltip.Collapse":"Tooltip.Expand"))},y?E.default.createElement(d.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:u.faChevronUp}):E.default.createElement(d.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:u.faChevronDown}))),y?E.default.createElement(E.default.Fragment,null," ",E.default.createElement("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"},E.default.createElement(c.Button,{active:"keypad"===C,variant:"default",onClick:D,"data-tooltip-id":"tooltip-keyboard","data-tooltip-content":F("Tooltip.Keyboard")||""},E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:m.faGridRound})),E.default.createElement(c.Button,{active:T,variant:"default",onClick:t.parkCurrentCall,"data-tooltip-id":"tooltip-park","data-tooltip-content":F("Tooltip.Park")||""},E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:u.faSquareParking})),E.default.createElement(c.Button,{"data-stop-propagation":!0,disabled:!0,variant:"default",onClick:function(){return A.island.toggleConferenceList(!x),A.island.setIslandView("transfer"!==C?"transfer":"call"),b&&i.eventDispatch("phone-island-sideview-close",{}),void i.eventDispatch("phone-island-call-conference-list-opened",{})},"data-tooltip-id":"tooltip-conference","data-tooltip-content":F("Tooltip.Conference")||""},E.default.createElement(d.FontAwesomeIcon,{icon:u.faUserPlus,className:"pi-h-6 pi-w-6"})),E.default.createElement(c.Button,{variant:"default",onClick:function(){return b?i.eventDispatch("phone-island-sideview-close",{}):i.eventDispatch("phone-island-sideview-open",{})},"data-tooltip-id":"tooltip-sideView","data-tooltip-content":F("Tooltip.Other actions")||""},E.default.createElement(d.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:b?m.faClose:m.faOpen})))):E.default.createElement(E.default.Fragment,null),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-transfer",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-pause",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-mute",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-expand",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-keyboard",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-conference",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-park",place:"bottom"}),E.default.createElement(p.CustomThemedTooltip,{id:"tooltip-sideView",place:"left"}))};
2
2
  //# sourceMappingURL=Actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n recordCurrentCall,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faArrowDownUpAcrossLine,\n faSquareParking,\n faChevronDown,\n faChevronUp,\n faArrowRightArrowLeft,\n faUserPlus,\n faStop,\n faCircleDot,\n faCircle,\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 { Tooltip } from 'react-tooltip'\nimport { useTranslation } from 'react-i18next'\nimport { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\nimport { useEventListener, eventDispatch } from '../../utils'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted, isRecording } = useSelector((state: RootState) => state.currentCall)\n const parked = useSelector((state: RootState) => state.currentCall.parked)\n\n // Get isOpen and view from island store\n const { view, actionsExpanded, sideViewIsVisible, isConferenceList } = useSelector(\n (state: RootState) => state.island,\n )\n const transferring = useSelector((state: RootState) => state.currentCall.transferring)\n const intrudeListenStatus = useSelector((state: RootState) => state.listen)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n dispatch.island.toggleSideViewVisible(false)\n }\n eventDispatch('phone-island-call-keypad-opened', {})\n }\n useEventListener('phone-island-call-keypad-open', () => {\n openKeypad()\n })\n\n function transfer() {\n // Open the transfer view\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n dispatch.island.toggleSideViewVisible(false)\n }\n eventDispatch('phone-island-call-transfer-opened', {})\n }\n\n useEventListener('phone-island-call-transfer-open', () => {\n transfer()\n })\n useEventListener('phone-island-call-transfer-cancel', () => {\n cancelTransfer()\n })\n\n // Cancels the current transfer through dtmfs\n function cancelTransfer() {\n if (isWebRTC()) {\n sendDTMF('*')\n } else {\n sendPhysicalDTMF('*')\n }\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 setTimeout(() => {\n if (isWebRTC()) {\n sendDTMF('1')\n } else {\n sendPhysicalDTMF('1')\n }\n\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 }\n\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 function toggleActionsExpanded() {\n if (actionsExpanded) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n } else {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n }\n }\n\n const addUserConference = () => {\n // Update island store and set conference list view to true\n dispatch.island.toggleConferenceList(isConferenceList ? false : true)\n // Set the island view to transfer list\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n dispatch.island.toggleSideViewVisible(false)\n }\n eventDispatch('phone-island-call-conference-list-opened', {})\n }\n\n const { t } = useTranslation()\n // Phone island header section\n return (\n <>\n <div\n className={`${\n !intrudeListenStatus?.isListen && !intrudeListenStatus?.isIntrude\n ? '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.isIntrude\n ? '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 : 'pi-hidden'\n } `}\n >\n {!(intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen) && (\n <Button\n variant='default'\n active={paused ? true : false}\n onClick={() => (paused ? unpauseCurrentCall() : pauseCurrentCall())}\n data-tooltip-id='tooltip-pause'\n data-tooltip-content={paused ? `${t('Tooltip.Play')}` : `${t('Tooltip.Pause')}`}\n >\n {paused ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faPlay} />\n ) : (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faPause} />\n )}\n </Button>\n )}\n {!intrudeListenStatus?.isListen && (\n <Button\n variant='default'\n active={muted ? true : false}\n onClick={() => (muted ? unmuteCurrentCall() : muteCurrentCall())}\n data-tooltip-id='tooltip-mute'\n data-tooltip-content={muted ? `${t('Tooltip.Unmute')}` : `${t('Tooltip.Mute')}`}\n >\n {muted ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faMicrophoneSlash} />\n ) : (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faMicrophone} />\n )}\n </Button>\n )}\n\n {!(intrudeListenStatus.isIntrude || intrudeListenStatus.isListen) && (\n <Button\n active={transferring}\n onClick={transferring ? cancelTransfer : transfer}\n variant='default'\n data-tooltip-id='tooltip-transfer'\n data-tooltip-content={\n transferring ? `${t('Tooltip.Cancel transfer')}` : `${t('Tooltip.Transfer')}`\n }\n >\n {transferring ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faArrowDownUpAcrossLine} />\n ) : (\n <FontAwesomeIcon\n className='pi-rotate-90 pi-h-6 pi-w-6'\n icon={faArrowRightArrowLeft}\n />\n )}\n </Button>\n )}\n\n {!(intrudeListenStatus.isIntrude || intrudeListenStatus.isListen) && (\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={() => toggleActionsExpanded()}\n data-tooltip-id='tooltip-expand'\n data-tooltip-content={\n actionsExpanded ? `${t('Tooltip.Collapse')}` : `${t('Tooltip.Expand')}`\n }\n >\n {actionsExpanded ? (\n <FontAwesomeIcon\n className='pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6'\n icon={faChevronUp}\n />\n ) : (\n <FontAwesomeIcon\n className='pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6'\n icon={faChevronDown}\n />\n )}\n </Button>\n )}\n </div>\n {/* Actions expanded section */}\n {actionsExpanded ? (\n <>\n {' '}\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 <Button\n active={view === 'keypad'}\n variant='default'\n onClick={openKeypad}\n data-tooltip-id='tooltip-keyboard'\n data-tooltip-content={t('Tooltip.Keyboard') || ''}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faGridRound} />\n </Button>\n <Button\n active={parked}\n variant='default'\n onClick={parkCurrentCall}\n data-tooltip-id='tooltip-park'\n data-tooltip-content={t('Tooltip.Park') || ''}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faSquareParking} />\n </Button>\n <Button\n active={isRecording}\n data-stop-propagation={true}\n variant='default'\n onClick={() => recordCurrentCall(isRecording)}\n data-tooltip-id='tooltip-record'\n data-tooltip-content={\n isRecording ? t('Tooltip.Stop recording') || '' : t('Tooltip.Record') || ''\n }\n >\n {isRecording ? (\n <FontAwesomeIcon icon={faStop} className='pi-h-6 pi-w-6' />\n ) : (\n <div className='custom-circle-dot-wrapper' data-stop-propagation={true}>\n <FontAwesomeIcon\n icon={faCircleDot}\n className='fa-circle-dot pi-text-white dark:pi-text-red-700'\n />\n <FontAwesomeIcon\n icon={faCircle}\n className='inner-dot pi-text-red-700 dark:pi-text-white'\n />\n </div>\n )}\n </Button>\n {/* Hidden waiting for other actions to be implemented */}\n {/* <Button\n data-stop-propagation={true}\n variant='default'\n onClick={() => addUserConference()}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={t('Tooltip.Conference') || ''}\n >\n <FontAwesomeIcon icon={faUserPlus} className='pi-h-6 pi-w-6' />\n </Button> */}\n {/* <Button\n variant='default'\n onClick={() =>\n sideViewIsVisible\n ? dispatch.island.toggleSideViewVisible(false)\n : dispatch.island.toggleSideViewVisible(true)\n }\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 ) : (\n <></>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip-transfer' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-pause' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-mute' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-expand' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-keyboard' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-record' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-conference' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-park' place='bottom' />\n <Tooltip className='pi-z-20' id='tooltip-sideView' place='left' />\n </>\n )\n}\n\nexport default Actions\n"],"names":["_a","useSelector","state","currentCall","paused","muted","isRecording","parked","_b","island","view","actionsExpanded","sideViewIsVisible","isConferenceList","transferring","intrudeListenStatus","listen","dispatch","useDispatch","openKeypad","setIslandView","toggleSideViewVisible","eventDispatch","transfer","cancelTransfer","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","useEventListener","toggleActionsExpanded","t","useTranslation","React","createElement","Fragment","className","concat","isListen","isIntrude","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","icon","faPlay","faPause","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophone","faArrowDownUpAcrossLine","faArrowRightArrowLeft","faChevronUp","faChevronDown","faGridRound","parkCurrentCall","faSquareParking","recordCurrentCall","faStop","faCircleDot","faCircle","Tooltip","id","place"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faArrowDownUpAcrossLine,\n faSquareParking,\n faChevronDown,\n faChevronUp,\n faArrowRightArrowLeft,\n faUserPlus,\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 { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted, isRecording } = useSelector((state: RootState) => state.currentCall)\n const parked = useSelector((state: RootState) => state.currentCall.parked)\n\n // Get isOpen and view from island store\n const { view, actionsExpanded, sideViewIsVisible, isConferenceList } = useSelector(\n (state: RootState) => state.island,\n )\n const transferring = useSelector((state: RootState) => state.currentCall.transferring)\n const intrudeListenStatus = useSelector((state: RootState) => state.listen)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n eventDispatch('phone-island-call-keypad-opened', {})\n }\n useEventListener('phone-island-call-keypad-open', () => {\n openKeypad()\n })\n\n function transfer() {\n // Open the transfer view\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n eventDispatch('phone-island-call-transfer-opened', {})\n }\n\n useEventListener('phone-island-call-transfer-open', () => {\n transfer()\n })\n useEventListener('phone-island-call-transfer-cancel', () => {\n cancelTransfer()\n })\n\n // Cancels the current transfer through dtmfs\n function cancelTransfer() {\n if (isWebRTC()) {\n sendDTMF('*')\n } else {\n sendPhysicalDTMF('*')\n }\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 setTimeout(() => {\n if (isWebRTC()) {\n sendDTMF('1')\n } else {\n sendPhysicalDTMF('1')\n }\n\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 }\n\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 function toggleActionsExpanded() {\n if (actionsExpanded) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n eventDispatch('phone-island-sideview-close', {})\n } else {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n }\n }\n\n const addUserConference = () => {\n // Update island store and set conference list view to true\n dispatch.island.toggleConferenceList(isConferenceList ? false : true)\n // Set the island view to transfer list\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Check if sideView is visible and close it\n if (sideViewIsVisible) {\n eventDispatch('phone-island-sideview-close', {})\n }\n eventDispatch('phone-island-call-conference-list-opened', {})\n }\n\n const { t } = useTranslation()\n // Phone island header section\n return (\n <>\n <div\n className={`${\n !intrudeListenStatus?.isListen && !intrudeListenStatus?.isIntrude\n ? '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.isIntrude\n ? '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 : 'pi-hidden'\n } `}\n >\n {!(intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen) && (\n <Button\n variant='default'\n active={paused ? true : false}\n onClick={() => (paused ? unpauseCurrentCall() : pauseCurrentCall())}\n data-tooltip-id='tooltip-pause'\n data-tooltip-content={paused ? `${t('Tooltip.Play')}` : `${t('Tooltip.Pause')}`}\n >\n {paused ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faPlay} />\n ) : (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faPause} />\n )}\n </Button>\n )}\n {!intrudeListenStatus?.isListen && (\n <Button\n variant='default'\n active={muted ? true : false}\n onClick={() => (muted ? unmuteCurrentCall() : muteCurrentCall())}\n data-tooltip-id='tooltip-mute'\n data-tooltip-content={muted ? `${t('Tooltip.Unmute')}` : `${t('Tooltip.Mute')}`}\n >\n {muted ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faMicrophoneSlash} />\n ) : (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faMicrophone} />\n )}\n </Button>\n )}\n\n {!(intrudeListenStatus.isIntrude || intrudeListenStatus.isListen) && (\n <Button\n active={transferring}\n onClick={transferring ? cancelTransfer : transfer}\n variant='default'\n data-tooltip-id='tooltip-transfer'\n data-tooltip-content={\n transferring ? `${t('Tooltip.Cancel transfer')}` : `${t('Tooltip.Transfer')}`\n }\n >\n {transferring ? (\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faArrowDownUpAcrossLine} />\n ) : (\n <FontAwesomeIcon\n className='pi-rotate-90 pi-h-6 pi-w-6'\n icon={faArrowRightArrowLeft}\n />\n )}\n </Button>\n )}\n\n {!(intrudeListenStatus.isIntrude || intrudeListenStatus.isListen) && (\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={() => toggleActionsExpanded()}\n data-tooltip-id='tooltip-expand'\n data-tooltip-content={\n actionsExpanded ? `${t('Tooltip.Collapse')}` : `${t('Tooltip.Expand')}`\n }\n >\n {actionsExpanded ? (\n <FontAwesomeIcon\n className='pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6'\n icon={faChevronUp}\n />\n ) : (\n <FontAwesomeIcon\n className='pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6'\n icon={faChevronDown}\n />\n )}\n </Button>\n )}\n </div>\n {/* Actions expanded section */}\n {actionsExpanded ? (\n <>\n {' '}\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 <Button\n active={view === 'keypad'}\n variant='default'\n onClick={openKeypad}\n data-tooltip-id='tooltip-keyboard'\n data-tooltip-content={t('Tooltip.Keyboard') || ''}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faGridRound} />\n </Button>\n <Button\n active={parked}\n variant='default'\n onClick={parkCurrentCall}\n data-tooltip-id='tooltip-park'\n data-tooltip-content={t('Tooltip.Park') || ''}\n >\n <FontAwesomeIcon className='pi-h-6 pi-w-6' icon={faSquareParking} />\n </Button>\n <Button\n data-stop-propagation={true}\n disabled={true}\n variant='default'\n onClick={() => addUserConference()}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={t('Tooltip.Conference') || ''}\n >\n <FontAwesomeIcon icon={faUserPlus} className='pi-h-6 pi-w-6' />\n </Button>\n <Button\n variant='default'\n onClick={() =>\n sideViewIsVisible\n ? eventDispatch('phone-island-sideview-close', {})\n : eventDispatch('phone-island-sideview-open', {})\n }\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 ) : (\n <></>\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 Actions\n"],"names":["_a","useSelector","state","currentCall","paused","muted","isRecording","parked","_b","island","view","actionsExpanded","sideViewIsVisible","isConferenceList","transferring","intrudeListenStatus","listen","dispatch","useDispatch","openKeypad","setIslandView","eventDispatch","transfer","cancelTransfer","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","useEventListener","toggleActionsExpanded","t","useTranslation","React","createElement","Fragment","className","concat","isListen","isIntrude","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","icon","faPlay","faPause","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophone","faArrowDownUpAcrossLine","faArrowRightArrowLeft","faChevronUp","faChevronDown","faGridRound","parkCurrentCall","faSquareParking","disabled","toggleConferenceList","faUserPlus","faClose","faOpen","CustomThemedTooltip","id","place"],"mappings":"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"}
@@ -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 n=require("../../node_modules/framer-motion/dist/es/render/dom/motion.mjs.js"),t=require("../../node_modules/react-redux/es/hooks/useSelector.js");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=r(e),a={open:{width:"56px",height:"56px",borderRadius:"26px"},closed:{width:"24px",height:"24px",borderRadius:"26px"}};exports.default=function(){var e,r,o=t.useSelector((function(e){return e.currentCall})).username,u=t.useSelector((function(e){return e.avatars})).avatars,l=t.useSelector((function(e){return e.island})).isOpen,s=t.useSelector((function(e){return e.currentCall})),d=s.incoming,c=s.outgoing,p=s.accepted,m=s.transferring,v=t.useSelector((function(e){return e.currentCall})),g=t.useSelector((function(e){return e.users}));return i.default.createElement(i.default.Fragment,null,i.default.createElement(n.motion.div,{className:"pi-relative ".concat(l?"pi-mt-[-0.25rem]":""),animate:l?"open":"closed",variants:a},(d||c&&!p)&&i.default.createElement(n.motion.div,{style:{animationDuration:"2s"},animate:l?"open":"closed",variants:a,className:"pi-rounded-xl pi-bg-gray-600 pi-absolute pi-opacity-60 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12"}),m?i.default.createElement(n.motion.div,{className:"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover",style:{backgroundImage:"url(".concat(u&&g&&(null==g?void 0:g.extensions)&&u[null===(e=null==g?void 0:g.extensions[null==v?void 0:v.number])||void 0===e?void 0:e.username]&&u[null===(r=null==g?void 0:g.extensions[null==v?void 0:v.number])||void 0===r?void 0:r.username],")"),backgroundRepeat:"no-repeat",backgroundSize:"contain"},animate:l?"open":"closed",variants:a}):i.default.createElement(n.motion.div,{className:"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover",style:{backgroundImage:"url(".concat(u&&u[o]&&u[o],")"),backgroundRepeat:"no-repeat",backgroundSize:"contain"},animate:l?"open":"closed",variants:a})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var n=require("../../node_modules/framer-motion/dist/es/render/dom/motion.mjs.js"),t=require("../../node_modules/react-redux/es/hooks/useSelector.js");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=r(e),a={open:{width:"56px",height:"56px",borderRadius:"26px"},closed:{width:"24px",height:"24px",borderRadius:"26px"}};exports.default=function(){var e,r,o=t.useSelector((function(e){return e.currentCall})).username,u=t.useSelector((function(e){return e.avatars})).avatars,l=t.useSelector((function(e){return e.island})).isOpen,s=t.useSelector((function(e){return e.currentCall})),d=s.incoming,c=s.outgoing,p=s.accepted,m=s.transferring,v=t.useSelector((function(e){return e.currentCall})),g=t.useSelector((function(e){return e.users}));return i.default.createElement(i.default.Fragment,null,i.default.createElement(n.motion.div,{className:"pi-relative ".concat(l?"pi--mt-1":""),animate:l?"open":"closed",variants:a},(d||c&&!p)&&i.default.createElement(n.motion.div,{style:{animationDuration:"2s"},animate:l?"open":"closed",variants:a,className:"pi-rounded-xl pi-bg-gray-600 pi-absolute pi-opacity-60 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12"}),m?i.default.createElement(n.motion.div,{className:"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover",style:{backgroundImage:"url(".concat(u&&g&&(null==g?void 0:g.extensions)&&u[null===(e=null==g?void 0:g.extensions[null==v?void 0:v.number])||void 0===e?void 0:e.username]&&u[null===(r=null==g?void 0:g.extensions[null==v?void 0:v.number])||void 0===r?void 0:r.username],")"),backgroundRepeat:"no-repeat",backgroundSize:"contain"},animate:l?"open":"closed",variants:a}):i.default.createElement(n.motion.div,{className:"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover",style:{backgroundImage:"url(".concat(u&&u[o]&&u[o],")"),backgroundRepeat:"no-repeat",backgroundSize:"contain"},animate:l?"open":"closed",variants:a})))};
2
2
  //# sourceMappingURL=Avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../../src/components/CallView/Avatar.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { motion } from 'framer-motion'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\n\nconst iconVariants = {\n open: {\n width: '56px',\n height: '56px',\n borderRadius: '26px',\n },\n closed: {\n width: '24px',\n height: '24px',\n borderRadius: '26px',\n },\n}\n\nconst Avatar: FC = () => {\n // Get multiple values from currentCall store\n const { username } = useSelector((state: RootState) => state.currentCall)\n\n // Get avatars from avatars store\n const { avatars } = useSelector((state: RootState) => state.avatars)\n\n // Get isOpen from island store\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n // Get multiple values from currentCall store\n const { incoming, outgoing, accepted, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const currentCallDetails: any = useSelector((state: RootState) => state.currentCall)\n const user = useSelector((state: RootState) => state.users)\n\n return (\n <>\n <motion.div\n className={`pi-relative ${isOpen ? 'pi-mt-[-0.25rem]' : ''}`}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n >\n {(incoming || (outgoing && !accepted)) && (\n // The background pulse effect\n <motion.div\n style={{\n animationDuration: '2s',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n className={`pi-rounded-xl pi-bg-gray-600 pi-absolute pi-opacity-60 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12`}\n ></motion.div>\n )}\n {!transferring ? (\n <motion.div\n className='pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover'\n style={{\n backgroundImage: `url(${avatars && avatars[username] && avatars[username]})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n />\n ) : (\n <motion.div\n className='pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover'\n style={{\n backgroundImage: `url(${\n avatars &&\n user &&\n user?.extensions &&\n avatars[user?.extensions[currentCallDetails?.number]?.username] &&\n avatars[user?.extensions[currentCallDetails?.number]?.username]\n })`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n />\n )}\n </motion.div>\n </>\n )\n}\n\nexport default Avatar\n"],"names":["iconVariants","open","width","height","borderRadius","closed","username","useSelector","state","currentCall","avatars","isOpen","island","_c","incoming","outgoing","accepted","transferring","currentCallDetails","user","users","React","createElement","Fragment","motion","div","className","concat","animate","variants","style","animationDuration","backgroundImage","extensions","number","_a","_b","backgroundRepeat","backgroundSize"],"mappings":"2XAQMA,EAAe,CACnBC,KAAM,CACJC,MAAO,OACPC,OAAQ,OACRC,aAAc,QAEhBC,OAAQ,CACNH,MAAO,OACPC,OAAQ,OACRC,aAAc,yBAIC,mBAETE,EAAaC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,wBAGrDC,EAAYH,eAAY,SAACC,GAAqB,OAAAA,EAAME,mBAGpDC,EAAWJ,eAAY,SAACC,GAAqB,OAAAA,EAAMI,iBAGrDC,EAAiDN,eACrD,SAACC,GAAqB,OAAAA,EAAMC,eADtBK,EAAQD,EAAAC,SAAEC,EAAQF,EAAAE,SAAEC,EAAQH,EAAAG,SAAEC,EAAYJ,EAAAI,aAG5CC,EAA0BX,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMC,WAAN,IAC5DU,EAAOZ,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMY,KAAN,IAE/C,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAA,QAAAC,cAACE,SAAOC,IAAG,CACTC,UAAW,eAAAC,OAAehB,EAAS,mBAAqB,IACxDiB,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,IAERc,GAAaC,IAAaC,IAE1BK,EAAAA,QAAAC,cAACE,EAAAA,OAAOC,IAAG,CACTK,MAAO,CACLC,kBAAmB,MAErBH,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,EACV0B,UAAW,8GAGbT,EAYAI,EAAAA,sBAACG,EAAAA,OAAOC,IAAG,CACTC,UAAU,+EACVI,MAAO,CACLE,gBAAiB,cACftB,GACAS,IACAA,aAAI,EAAJA,EAAMc,aACNvB,EAAoD,UAA5CS,aAAA,EAAAA,EAAMc,WAAWf,eAAAA,EAAoBgB,eAAO,IAAAC,OAAA,EAAAA,EAAE7B,WACtDI,EAAoD,UAA5CS,aAAA,EAAAA,EAAMc,WAAWf,eAAAA,EAAoBgB,eAAO,IAAAE,OAAA,EAAAA,EAAE9B,UACrD,KACH+B,iBAAkB,YAClBC,eAAgB,WAElBV,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,IAzBZqB,EAAC,QAAAC,cAAAE,EAAAA,OAAOC,KACNC,UAAU,+EACVI,MAAO,CACLE,gBAAiB,OAAAL,OAAOjB,GAAWA,EAAQJ,IAAaI,EAAQJ,GAAY,KAC5E+B,iBAAkB,YAClBC,eAAgB,WAElBV,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,KAuBtB"}
1
+ {"version":3,"file":"Avatar.js","sources":["../../../src/components/CallView/Avatar.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 { motion } from 'framer-motion'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\n\nconst iconVariants = {\n open: {\n width: '56px',\n height: '56px',\n borderRadius: '26px',\n },\n closed: {\n width: '24px',\n height: '24px',\n borderRadius: '26px',\n },\n}\n\nconst Avatar: FC = () => {\n // Get multiple values from currentCall store\n const { username } = useSelector((state: RootState) => state.currentCall)\n\n // Get avatars from avatars store\n const { avatars } = useSelector((state: RootState) => state.avatars)\n\n // Get isOpen from island store\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n // Get multiple values from currentCall store\n const { incoming, outgoing, accepted, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const currentCallDetails: any = useSelector((state: RootState) => state.currentCall)\n const user = useSelector((state: RootState) => state.users)\n\n return (\n <>\n <motion.div\n className={`pi-relative ${isOpen ? 'pi--mt-1' : ''}`}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n >\n {(incoming || (outgoing && !accepted)) && (\n // The background pulse effect\n <motion.div\n style={{\n animationDuration: '2s',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n className={`pi-rounded-xl pi-bg-gray-600 pi-absolute pi-opacity-60 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12`}\n ></motion.div>\n )}\n {!transferring ? (\n <motion.div\n className='pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover'\n style={{\n backgroundImage: `url(${avatars && avatars[username] && avatars[username]})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n />\n ) : (\n <motion.div\n className='pi-relative pi-z-30 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover'\n style={{\n backgroundImage: `url(${\n avatars &&\n user &&\n user?.extensions &&\n avatars[user?.extensions[currentCallDetails?.number]?.username] &&\n avatars[user?.extensions[currentCallDetails?.number]?.username]\n })`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n />\n )}\n </motion.div>\n </>\n )\n}\n\nexport default Avatar\n"],"names":["iconVariants","open","width","height","borderRadius","closed","username","useSelector","state","currentCall","avatars","isOpen","island","_c","incoming","outgoing","accepted","transferring","currentCallDetails","user","users","React","createElement","Fragment","motion","div","className","concat","animate","variants","style","animationDuration","backgroundImage","extensions","number","_a","_b","backgroundRepeat","backgroundSize"],"mappings":"2XAQMA,EAAe,CACnBC,KAAM,CACJC,MAAO,OACPC,OAAQ,OACRC,aAAc,QAEhBC,OAAQ,CACNH,MAAO,OACPC,OAAQ,OACRC,aAAc,yBAIC,mBAETE,EAAaC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,wBAGrDC,EAAYH,eAAY,SAACC,GAAqB,OAAAA,EAAME,mBAGpDC,EAAWJ,eAAY,SAACC,GAAqB,OAAAA,EAAMI,iBAGrDC,EAAiDN,eACrD,SAACC,GAAqB,OAAAA,EAAMC,eADtBK,EAAQD,EAAAC,SAAEC,EAAQF,EAAAE,SAAEC,EAAQH,EAAAG,SAAEC,EAAYJ,EAAAI,aAG5CC,EAA0BX,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMC,WAAN,IAC5DU,EAAOZ,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMY,KAAN,IAE/C,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAA,QAAAC,cAACE,SAAOC,IAAG,CACTC,UAAW,eAAAC,OAAehB,EAAS,WAAa,IAChDiB,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,IAERc,GAAaC,IAAaC,IAE1BK,EAAAA,QAAAC,cAACE,EAAAA,OAAOC,IAAG,CACTK,MAAO,CACLC,kBAAmB,MAErBH,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,EACV0B,UAAW,8GAGbT,EAYAI,EAAAA,sBAACG,EAAAA,OAAOC,IAAG,CACTC,UAAU,+EACVI,MAAO,CACLE,gBAAiB,cACftB,GACAS,IACAA,aAAI,EAAJA,EAAMc,aACNvB,EAAoD,UAA5CS,aAAA,EAAAA,EAAMc,WAAWf,eAAAA,EAAoBgB,eAAO,IAAAC,OAAA,EAAAA,EAAE7B,WACtDI,EAAoD,UAA5CS,aAAA,EAAAA,EAAMc,WAAWf,eAAAA,EAAoBgB,eAAO,IAAAE,OAAA,EAAAA,EAAE9B,UACrD,KACH+B,iBAAkB,YAClBC,eAAgB,WAElBV,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,IAzBZqB,EAAC,QAAAC,cAAAE,EAAAA,OAAOC,KACNC,UAAU,+EACVI,MAAO,CACLE,gBAAiB,OAAAL,OAAOjB,GAAWA,EAAQJ,IAAaI,EAAQJ,GAAY,KAC5E+B,iBAAkB,YAClBC,eAAgB,WAElBV,QAASjB,EAAS,OAAS,SAC3BkB,SAAU7B,KAuBtB"}
@@ -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 r=require("../../styles/Island.styles.js"),t=require("../../node_modules/i18next/dist/esm/i18next.js"),s=require("../../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=u(e);exports.default=function(){var e=s.useSelector((function(e){return e.currentCall})).number,u=s.useSelector((function(e){return e.island})).isOpen;return n.default.createElement(r.StyledNumber,{isOpen:u,className:"dark:pi-text-gray-50 pi-text-gray-600"},e&&"<unknown>"!==e?e:t.t("Call.In progress...")||"-")};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var r=require("../../styles/Island.styles.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 t=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var s=require("../../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=u(e);exports.default=function(){var e=s.useSelector((function(e){return e.currentCall})).number,u=s.useSelector((function(e){return e.island})).isOpen,o=t.useTranslation().t;return n.default.createElement(r.StyledNumber,{isOpen:u,className:"dark:pi-text-gray-50 pi-text-gray-600"},e&&"<unknown>"!==e?e:o("Call.In progress...")||"-")};
2
2
  //# sourceMappingURL=Number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../../src/components/CallView/Number.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { StyledNumber } from '../../styles/Island.styles'\nimport { t } from 'i18next'\n\nconst Number: FC = () => {\n const { number } = useSelector((state: RootState) => state.currentCall)\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n return (\n <StyledNumber isOpen={isOpen} className='dark:pi-text-gray-50 pi-text-gray-600'>\n {number && number !== '<unknown>' ? number : t('Call.In progress...') || '-'}\n </StyledNumber>\n )\n}\n\nexport default Number\n"],"names":["number","useSelector","state","currentCall","isOpen","island","React","createElement","StyledNumber","className","t"],"mappings":"maASmB,WACT,IAAAA,EAAWC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,sBACnDC,EAAWH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,iBAE3D,OACEC,EAAAA,QAAAC,cAACC,EAAYA,aAAA,CAACJ,OAAQA,EAAQK,UAAU,yCACrCT,GAAqB,cAAXA,EAAyBA,EAASU,EAACA,EAAC,wBAA0B,IAG/E"}
1
+ {"version":3,"file":"Number.js","sources":["../../../src/components/CallView/Number.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { StyledNumber } from '../../styles/Island.styles'\nimport { useTranslation } from 'react-i18next'\n\nconst Number: FC = () => {\n const { number } = useSelector((state: RootState) => state.currentCall)\n const { isOpen } = useSelector((state: RootState) => state.island)\n const { t } = useTranslation()\n\n return (\n <StyledNumber isOpen={isOpen} className='dark:pi-text-gray-50 pi-text-gray-600'>\n {number && number !== '<unknown>' ? number : t('Call.In progress...') || '-'}\n </StyledNumber>\n )\n}\n\nexport default Number\n"],"names":["number","useSelector","state","currentCall","isOpen","island","t","useTranslation","React","createElement","StyledNumber","className"],"mappings":"k2BASmB,WACT,IAAAA,EAAWC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,sBACnDC,EAAWH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,iBACnDC,EAAMC,qBAEd,OACEC,EAAAA,QAAAC,cAACC,EAAYA,aAAA,CAACN,OAAQA,EAAQO,UAAU,yCACrCX,GAAqB,cAAXA,EAAyBA,EAASM,EAAE,wBAA0B,IAG/E"}