@nethesis/phone-island 0.13.1 → 0.13.2
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.
- package/dist/App.js +1 -1
- package/dist/App.js.map +1 -1
- package/dist/_virtual/index6.js +1 -1
- package/dist/_virtual/index7.js +1 -1
- package/dist/components/AlertGuard.js +1 -1
- package/dist/components/AlertGuard.js.map +1 -1
- package/dist/components/AlertView/index.js +1 -1
- package/dist/components/AlertView/index.js.map +1 -1
- package/dist/components/CallView/Actions.js +1 -1
- package/dist/components/CallView/Actions.js.map +1 -1
- package/dist/components/CallView/index.js +1 -1
- package/dist/components/Island.js +1 -1
- package/dist/components/Island.js.map +1 -1
- package/dist/components/Socket.js +1 -1
- package/dist/components/Socket.js.map +1 -1
- package/dist/components/WebRTC.js +1 -1
- package/dist/components/WebRTC.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/lib/devices/devices.js +1 -1
- package/dist/lib/devices/devices.js.map +1 -1
- package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js +1 -1
- package/dist/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +1 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js +1 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js +1 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +1 -1
- package/dist/services/user.js.map +1 -1
- package/package.json +1 -1
package/dist/App.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./node_modules/tslib/tslib.es6.js"),n=require("react"),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"),d=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var u=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"),g=require("./services/user.js"),m=require("./utils/genericFunctions/isEmpty.js"),E=require("./utils/genericFunctions/checkConnection.js"),I=require("./utils/genericFunctions/isBackCallVisible.js"),j=require("./node_modules/react-redux/es/components/Provider.js");function L(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 S=L(n),b=function(L){var b=L.dataConfig,D=L.showAlways,w=void 0!==D&&D,q=L.uaType,y=l.Base64.atob(b||"").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],W=n.useState(!1),J=W[0],R=W[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(){J&&z&&(N(!1),F(!1),R(!1))}),[J,z]),r.useEventListener("phone-island-expand",(function(){u.store.dispatch.island.toggleIsOpen(!0),c.eventDispatch("phone-island-expanded",{})})),r.useEventListener("phone-island-compress",(function(){u.store.dispatch.island.toggleIsOpen(!1),c.eventDispatch("phone-island-compressed",{})})),r.useEventListener("phone-island-call-keypad-close",(function(){u.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-keypad-closed",{})})),r.useEventListener("phone-island-call-transfer-close",(function(){u.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-transfer-closed",{})})),r.useEventListener("phone-island-recording-close",(function(){u.store.dispatch.island.setIslandView(null),c.eventDispatch("phone-island-recording-closed",{})})),r.useEventListener("phone-island-audio-player-close",(function(){u.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){d.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-audio-input-changed",{})})),r.useEventListener("phone-island-video-input-change",(function(e){d.setJSONItem("phone-island-video-input-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-video-input-changed",{})})),r.useEventListener("phone-island-audio-output-change",(function(e){var n=u.store.getState().player.remoteAudio;null==n||n.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),d.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){g.changeOperatorStatus(e),c.eventDispatch("phone-island-presence-changed",{})})),r.useEventListener("phone-island-view-changed",(function(e){var n=null==e?void 0:e.viewType;u.store.dispatch.island.setIslandView(n)}));var B=n.useState(!0),H=B[0],M=B[1],G=n.useState(!0),K=G[0],Q=G[1];n.useEffect((function(){H&&(h.initI18n(),M(!1))}),[H]);var X=u.store.getState().player.remoteAudio;return n.useEffect((function(){var e;if(K&&X){var n=null===(e=d.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){u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),c.eventDispatch("phone-island-default-device-changed",{})})),r.useEventListener("phone-island-alert",(function(e){u.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=u.store.getState().currentUser)||void 0===n?void 0:n.username,a=u.store.getState().currentUser,r=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;u.store.dispatch.currentUser.updateMainPresence(null===(i=e[o])||void 0===i?void 0:i.mainPresence),"online"===d&&"online"!==r&&c.eventDispatch("phone-island-call-ended",{})}})),r.useEventListener("phone-island-call-status",(function(){var e=u.store.getState().currentCall;console.log("Call status debug informations: ",e)})),r.useEventListener("phone-island-user-status",(function(){var e=u.store.getState().currentUser;console.log("User status debug informations: ",e)})),r.useEventListener("phone-island-all-users-status",(function(){var e=u.store.getState().users;console.log("Users status debug informations: ",e)})),r.useEventListener("phone-island-status",(function(){var e=u.store.getState().island;console.log("Phone island status debug informations: ",e)})),r.useEventListener("phone-island-webrtc-status",(function(){var e=u.store.getState().webrtc;console.log("Webrtc status debug informations: ",e)})),r.useEventListener("phone-island-player-status",(function(){var e=u.store.getState().player;console.log("Player status debug informations: ",e)})),r.useEventListener("phone-island-conference-status",(function(){var e=u.store.getState().conference;console.log("Webrtc status debug informations: ",e)})),r.useEventListener("phone-island-screen-share-status",(function(){var e=u.store.getState().screenShare;console.log("Screen share status debug information: ",e)})),r.useEventListener("phone-island-player-force-stop",(function(){u.store.dispatch.player.reset(),console.log("Audio player is interrupted")})),r.useEventListener("phone-island-sideview-open",(function(){u.store.dispatch.island.toggleSideViewVisible(!0),c.eventDispatch("phone-island-sideview-opened",{})})),r.useEventListener("phone-island-sideview-close",(function(){u.store.dispatch.island.toggleSideViewVisible(!1),c.eventDispatch("phone-island-sideview-closed",{})})),r.useEventListener("phone-island-size-change",(function(n){var t=u.store.getState().island.sideViewIsVisible,s=n.sizeInformation,i=e.__assign(e.__assign({},s),{right:t?"42px":"0px",top:I.isBackCallActive()?"40px":"0px"});c.eventDispatch("phone-island-size-changed",{sizes:i})})),r.useEventListener("phone-island-call-ended",(function(){c.eventDispatch("phone-island-size-change",{sizeInformation:{width:"0px",height:"0px"}}),c.eventDispatch("phone-island-sideview-close",{}),u.store.dispatch.island.resetIslandStore()})),r.useEventListener("phone-island-conference-list-open",(function(){u.store.dispatch.island.toggleConferenceList(!0),c.eventDispatch("phone-island-conference-list-opened",{})})),r.useEventListener("phone-island-conference-list-close",(function(){u.store.dispatch.island.toggleConferenceList(!1),c.eventDispatch("phone-island-conference-list-closed",{})})),S.default.createElement(S.default.Fragment,null,S.default.createElement(j.default,{store:u.store},S.default.createElement(i.WebRTC,{hostName:k,sipExten:C,sipSecret:P,sipHost:T,sipPort:V,reload:O,reloadedCallback:function(){return F(!0)},uaType:q},S.default.createElement(a.RestAPI,{hostName:k,username:x,authToken:_},S.default.createElement(s.Socket,{hostName:k,username:x,authToken:_,reload:O,reloadedCallback:function(){return R(!0)},uaType:q},S.default.createElement(t.Events,{sipHost:T},S.default.createElement(o.Island,{showAlways:w})))))))};b.displayName="PhoneIsland",exports.PhoneIsland=b;
|
|
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"),d=require("./utils/genericFunctions/localStorage.js");require("./node_modules/react-redux/es/index.js");var u=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"),g=require("./services/user.js"),m=require("./utils/genericFunctions/isEmpty.js"),E=require("./utils/genericFunctions/checkConnection.js"),I=require("./utils/genericFunctions/isBackCallVisible.js"),j=require("./node_modules/react-redux/es/components/Provider.js");function L(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 S=L(n),b=function(L){var b=L.dataConfig,D=L.showAlways,w=void 0!==D&&D,q=L.uaType,y=l.Base64.atob(b||"").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],W=n.useState(!1),J=W[0],R=W[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(){J&&z&&(N(!1),F(!1),R(!1))}),[J,z]),r.useEventListener("phone-island-expand",(function(){u.store.dispatch.island.toggleIsOpen(!0),c.eventDispatch("phone-island-expanded",{})})),r.useEventListener("phone-island-compress",(function(){u.store.dispatch.island.toggleIsOpen(!1),c.eventDispatch("phone-island-compressed",{})})),r.useEventListener("phone-island-call-keypad-close",(function(){u.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-keypad-closed",{})})),r.useEventListener("phone-island-call-transfer-close",(function(){u.store.dispatch.island.setIslandView("call"),c.eventDispatch("phone-island-call-transfer-closed",{})})),r.useEventListener("phone-island-recording-close",(function(){u.store.dispatch.island.setIslandView(null),c.eventDispatch("phone-island-recording-closed",{})})),r.useEventListener("phone-island-audio-player-close",(function(){u.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){d.setJSONItem("phone-island-audio-input-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-audio-input-changed",{})})),r.useEventListener("phone-island-video-input-change",(function(e){d.setJSONItem("phone-island-video-input-device",{deviceId:e.deviceId}),c.eventDispatch("phone-island-video-input-changed",{})})),r.useEventListener("phone-island-audio-output-change",(function(e){var n=u.store.getState().player.remoteAudio;null==n||n.current.setSinkId(e.deviceId).then((function(){console.info("Default audio output device change with success!"),d.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){g.changeOperatorStatus(e),c.eventDispatch("phone-island-presence-changed",{})})),r.useEventListener("phone-island-view-changed",(function(e){var n=null==e?void 0:e.viewType;u.store.dispatch.island.setIslandView(n)}));var B=n.useState(!0),H=B[0],M=B[1],G=n.useState(!0),K=G[0],Q=G[1];n.useEffect((function(){H&&(h.initI18n(),M(!1))}),[H]);var X=u.store.getState().player.remoteAudio;return n.useEffect((function(){var e;if(K&&X){var n=null===(e=d.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){u.store.dispatch.currentUser.updateCurrentDefaultDevice(null==e?void 0:e.deviceInformationObject),c.eventDispatch("phone-island-default-device-changed",{})})),r.useEventListener("phone-island-alert",(function(e){u.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=u.store.getState().currentUser)||void 0===n?void 0:n.username,a=u.store.getState().currentUser,r=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;u.store.dispatch.currentUser.updateMainPresence(null===(i=e[o])||void 0===i?void 0:i.mainPresence),"online"===d&&"online"!==r&&c.eventDispatch("phone-island-call-ended",{})}})),r.useEventListener("phone-island-call-status",(function(){var e=u.store.getState().currentCall;console.log("Call status debug informations: ",e)})),r.useEventListener("phone-island-user-status",(function(){var e=u.store.getState().currentUser;console.log("User status debug informations: ",e)})),r.useEventListener("phone-island-all-users-status",(function(){var e=u.store.getState().users;console.log("Users status debug informations: ",e)})),r.useEventListener("phone-island-status",(function(){var e=u.store.getState().island;console.log("Phone island status debug informations: ",e)})),r.useEventListener("phone-island-webrtc-status",(function(){var e=u.store.getState().webrtc;console.log("Webrtc status debug informations: ",e)})),r.useEventListener("phone-island-player-status",(function(){var e=u.store.getState().player;console.log("Player status debug informations: ",e)})),r.useEventListener("phone-island-conference-status",(function(){var e=u.store.getState().conference;console.log("Webrtc status debug informations: ",e)})),r.useEventListener("phone-island-screen-share-status",(function(){var e=u.store.getState().screenShare;console.log("Screen share status debug information: ",e)})),r.useEventListener("phone-island-player-force-stop",(function(){u.store.dispatch.player.reset(),console.log("Audio player is interrupted")})),r.useEventListener("phone-island-sideview-open",(function(){u.store.dispatch.island.toggleSideViewVisible(!0),c.eventDispatch("phone-island-sideview-opened",{})})),r.useEventListener("phone-island-sideview-close",(function(){u.store.dispatch.island.toggleSideViewVisible(!1),c.eventDispatch("phone-island-sideview-closed",{})})),r.useEventListener("phone-island-size-change",(function(n){var t=u.store.getState().island.sideViewIsVisible,s=n.sizeInformation,i=e.__assign(e.__assign({},s),{right:t?"42px":"0px",top:I.isBackCallActive()?"40px":"0px"});c.eventDispatch("phone-island-size-changed",{sizes:i})})),r.useEventListener("phone-island-call-ended",(function(){c.eventDispatch("phone-island-size-change",{sizeInformation:{width:"0px",height:"0px"}}),c.eventDispatch("phone-island-sideview-close",{}),u.store.dispatch.island.resetIslandStore()})),r.useEventListener("phone-island-conference-list-open",(function(){u.store.dispatch.island.toggleConferenceList(!0),c.eventDispatch("phone-island-conference-list-opened",{})})),r.useEventListener("phone-island-conference-list-close",(function(){u.store.dispatch.island.toggleConferenceList(!1),c.eventDispatch("phone-island-conference-list-closed",{})})),S.default.createElement(S.default.Fragment,null,S.default.createElement(j.default,{store:u.store},S.default.createElement(i.WebRTC,{hostName:k,sipExten:C,sipSecret:P,sipHost:T,sipPort:V,reload:O,reloadedCallback:function(){return F(!0)},uaType:q},S.default.createElement(a.RestAPI,{hostName:k,username:x,authToken:_},S.default.createElement(s.Socket,{hostName:k,username:x,authToken:_,reload:O,reloadedCallback:function(){return R(!0)},uaType:q},S.default.createElement(t.Events,{sipHost:T},S.default.createElement(o.Island,{showAlways:w,uaType:q})))))))};b.displayName="PhoneIsland",exports.PhoneIsland=b;
|
|
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 { 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-video-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-video-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-video-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-conference-status', () => {\n const conferenceInformation = store.getState().conference\n console.log('Webrtc status debug informations: ', conferenceInformation)\n })\n\n useEventListener('phone-island-screen-share-status', () => {\n const screenShareInformation = store.getState().screenShare\n console.log('Screen share status debug information: ', screenShareInformation)\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 updatedSizeInformation = {\n ...sizeInformation,\n right: sideViewIsVisible ? '42px' : '0px',\n top: isBackCallActive() ? '40px' : '0px',\n }\n eventDispatch('phone-island-size-changed', { sizes: updatedSizeInformation })\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 eventDispatch('phone-island-sideview-close', {})\n store.dispatch.island.resetIslandStore()\n })\n\n useEventListener('phone-island-conference-list-open', () => {\n store.dispatch.island.toggleConferenceList(true)\n eventDispatch('phone-island-conference-list-opened', {})\n })\n\n useEventListener('phone-island-conference-list-close', () => {\n store.dispatch.island.toggleConferenceList(false)\n eventDispatch('phone-island-conference-list-closed', {})\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","conferenceInformation","conference","screenShareInformation","screenShare","reset","toggleSideViewVisible","args","sideViewIsVisible","sizeInformation","updatedSizeInformation","__assign","right","top","isBackCallActive","sizes","width","height","resetIslandStore","toggleConferenceList","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-video-input-change', (data: DeviceInputOutputTypes) => {\n setJSONItem('phone-island-video-input-device', { deviceId: data.deviceId })\n eventDispatch('phone-island-video-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-conference-status', () => {\n const conferenceInformation = store.getState().conference\n console.log('Webrtc status debug informations: ', conferenceInformation)\n })\n\n useEventListener('phone-island-screen-share-status', () => {\n const screenShareInformation = store.getState().screenShare\n console.log('Screen share status debug information: ', screenShareInformation)\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 updatedSizeInformation = {\n ...sizeInformation,\n right: sideViewIsVisible ? '42px' : '0px',\n top: isBackCallActive() ? '40px' : '0px',\n }\n eventDispatch('phone-island-size-changed', { sizes: updatedSizeInformation })\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 eventDispatch('phone-island-sideview-close', {})\n store.dispatch.island.resetIslandStore()\n })\n\n useEventListener('phone-island-conference-list-open', () => {\n store.dispatch.island.toggleConferenceList(true)\n eventDispatch('phone-island-conference-list-opened', {})\n })\n\n useEventListener('phone-island-conference-list-close', () => {\n store.dispatch.island.toggleConferenceList(false)\n eventDispatch('phone-island-conference-list-closed', {})\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} uaType={uaType}/>\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","conferenceInformation","conference","screenShareInformation","screenShare","reset","toggleSideViewVisible","args","sideViewIsVisible","sizeInformation","updatedSizeInformation","__assign","right","top","isBackCallActive","sizes","width","height","resetIslandStore","toggleConferenceList","React","createElement","Fragment","Provider","WebRTC","hostName","sipExten","sipSecret","sipHost","sipPort","reloadedCallback","RestAPI","authToken","Socket","Events","Island","displayName"],"mappings":"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"}
|
package/dist/_virtual/index6.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.propTypes={exports:{}};
|
|
2
2
|
//# sourceMappingURL=index6.js.map
|
package/dist/_virtual/index7.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.reactIs={exports:{}};
|
|
2
2
|
//# sourceMappingURL=index7.js.map
|
|
@@ -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("./AlertView/index.js"),r=require("../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var t=require("./AlertView/index.js"),r=require("../node_modules/react-redux/es/hooks/useSelector.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=u(e);exports.AlertGuard=function(e){var u=e.children,n=e.uaType,l=r.useSelector((function(e){return e.alerts.status})),s=l.activeAlertsCount,o=l.breakActiveAlertsCount,c=r.useSelector((function(e){return e.alerts.data})).call_transfered,d=r.useSelector((function(e){return e.island})).isOpen;return a.default.createElement(a.default.Fragment,null,s>0&&d&&a.default.createElement(t.default,{uaType:n}),0===o&&!c.active&&u)};
|
|
2
2
|
//# sourceMappingURL=AlertGuard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertGuard.js","sources":["../../src/components/AlertGuard.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, type ReactNode } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../store'\nimport AlertView from './AlertView'\n\n/**\n * Manages the logic of alerts as connection errors or permissions\n *\n * @param children\n * @returns\n */\n\nexport const AlertGuard: FC<AlertGuard> = ({ children }) => {\n // Get alert status from alerts store\n const { activeAlertsCount, breakActiveAlertsCount } = useSelector(\n (state: RootState) => state.alerts.status,\n )\n // Get alerts status from alerts store\n const { call_transfered } = useSelector((state: RootState) => state.alerts.data)\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n return (\n <>\n {activeAlertsCount > 0 && isOpen && <AlertView />}\n {breakActiveAlertsCount === 0 && !call_transfered.active && children}\n </>\n )\n}\n\ninterface AlertGuard {\n children: ReactNode\n}\n"],"names":["_a","children","_b","useSelector","state","alerts","status","activeAlertsCount","breakActiveAlertsCount","call_transfered","data","isOpen","island","React","createElement","Fragment","AlertView","active"],"mappings":"2VAe0C,SAACA,
|
|
1
|
+
{"version":3,"file":"AlertGuard.js","sources":["../../src/components/AlertGuard.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, type ReactNode } from 'react'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../store'\nimport AlertView from './AlertView'\n\n/**\n * Manages the logic of alerts as connection errors or permissions\n *\n * @param children\n * @returns\n */\n\nexport const AlertGuard: FC<AlertGuard> = ({ children, uaType}) => {\n // Get alert status from alerts store\n const { activeAlertsCount, breakActiveAlertsCount } = useSelector(\n (state: RootState) => state.alerts.status,\n )\n // Get alerts status from alerts store\n const { call_transfered } = useSelector((state: RootState) => state.alerts.data)\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n return (\n <>\n {activeAlertsCount > 0 && isOpen && <AlertView uaType={uaType}/>}\n {breakActiveAlertsCount === 0 && !call_transfered.active && children}\n </>\n )\n}\n\ninterface AlertGuard {\n children: ReactNode\n uaType?: string\n}\n"],"names":["_a","children","uaType","_b","useSelector","state","alerts","status","activeAlertsCount","breakActiveAlertsCount","call_transfered","data","isOpen","island","React","createElement","Fragment","AlertView","active"],"mappings":"2VAe0C,SAACA,OAAEC,EAAQD,EAAAC,SAAEC,EAAMF,EAAAE,OAErDC,EAAgDC,EAAAA,aACpD,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,MAAM,IADnCC,EAAiBL,EAAAK,kBAAEC,EAAsBN,EAAAM,uBAIzCC,EAAoBN,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOK,wBACnEC,EAAWR,eAAY,SAACC,GAAqB,OAAAA,EAAMQ,iBAE3D,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACGR,EAAoB,GAAKI,GAAUE,EAAC,QAAAC,cAAAE,UAAU,CAAAf,OAAQA,IAC3B,IAA3BO,IAAiCC,EAAgBQ,QAAUjB,EAGlE"}
|
|
@@ -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"),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,
|
|
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(e){var d=e.uaType,c=o.useSelector((function(e){return e.alerts})).data,p=o.useSelector((function(e){return e.currentUser})).default_device,m=s.useDispatch(),f=Object.values(c).filter((function(e){return e.active})),v=f.length>0?f[f.length-1]:null;return v&&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==v?void 0:v.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==v?void 0:v.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-5 pi-w-10 ".concat("call_transfered"===(null==v?void 0:v.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==p?void 0:p.type)&&"webrtc_down"===(null==v?void 0:v.type)?null==v?void 0:v.nethlink_message:null==v?void 0:v.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==v?void 0:v.message))))),u.default.createElement(l.Button,{variant:"transparent",onClick:function(){return"nethlink"===(null==p?void 0:p.type)&&"mobile"===d&&"call_transfered"!==(null==v?void 0:v.type)?void window.location.reload():(m.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==p?void 0:p.type)&&"mobile"===d&&"call_transfered"!==(null==v?void 0:v.type)?"".concat(i.t("Tooltip.Reload")):"".concat(i.t("Tooltip.Close alert"))},u.default.createElement(t.FontAwesomeIcon,{icon:"nethlink"===(null==p?void 0:p.type)&&"call_transfered"!==(null==v?void 0:v.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 {\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'
|
|
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<AlertViewProp> = ({ uaType }) => {\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' &&\n uaType === 'mobile' &&\n 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' &&\n uaType === 'mobile' &&\n 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\ninterface AlertViewProp {\n uaType?: string\n}\n\nexport default AlertView\n"],"names":["_a","uaType","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":"ktBAqBqC,SAACA,GAAE,IAAAC,EAAMD,EAAAC,OACpCC,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,OACL,WAAXrB,GACsB,qBAAtBe,aAAW,EAAXA,EAAaM,WAhDrBW,OAAOC,SAASC,UALhB3B,EAASH,OAAO+B,uBAChBC,gBAAc,kCAAmC,CAAA,GAkDzC,EAMFjB,UAAU,2DAA0D,kBACpD,sBAEd,uBAAyB,cAAzBd,aAAA,EAAAA,EAAgBgB,OACL,WAAXrB,GACsB,qBAAtBe,aAAW,EAAXA,EAAaM,MACT,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("../../node_modules/tslib/tslib.es6.js"),t=require("react"),n=require("../../lib/phone/call.js"),i=require("../../utils/customHooks/useEventListener.js"),o=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/react-redux/es/index.js");var a=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js");var l=require("../../lib/user/default_device.js");require("../../node_modules/
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("react"),n=require("../../lib/phone/call.js"),i=require("../../utils/customHooks/useEventListener.js"),o=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/react-redux/es/index.js");var a=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js");var l=require("../../lib/user/default_device.js");require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js");var s=require("../../lib/webrtc/messages.js"),r=require("../../static/outgoing_ringtone.js");require("../Island.js");var c=require("../../services/astproxy.js"),d=require("../Button.js"),u=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),p=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js");require("../../node_modules/i18next/dist/esm/i18next.js");var m=require("../CustomThemedTooltip.js"),f=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 v=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var h=require("../TransferButton.js"),g=require("../../node_modules/react-redux/es/hooks/useSelector.js"),E=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var w=j(t);exports.default=function(){var j,T,y,C,b=g.useSelector((function(e){return e.currentCall})),x=b.paused,q=b.muted;b.isRecording;var _=g.useSelector((function(e){return e.currentCall.parked})),k=g.useSelector((function(e){return e.island})),D=k.view,A=k.actionsExpanded,I=k.sideViewIsVisible;k.isConferenceList;var F=g.useSelector((function(e){return e.currentCall.transferring})),P=g.useSelector((function(e){return e.listen})),S=g.useSelector((function(e){return e.conference})),N=S.isActive,L=S.conferenceStartedFrom,B=g.useSelector((function(e){return null==e?void 0:e.currentUser})),M=B.username,V=B.profile,R=E.useDispatch(),U=t.useRef(!1),O=t.useRef(!1),W=t.useMemo((function(){return N&&"call"===D&&!A&&!U.current&&""!==M&&""!==L&&L===M}),[N,D,A,L]),G=t.useMemo((function(){return N&&"call"===D&&A&&!O.current&&""!==M&&L!==M}),[N,D,A,L]);function H(){R.island.setIslandView("keypad"!==D?"keypad":"call"),I&&o.eventDispatch("phone-island-sideview-close",{}),o.eventDispatch("phone-island-call-keypad-opened",{})}t.useEffect((function(){W&&(R.island.toggleActionsExpanded(!0),o.eventDispatch("phone-island-call-actions-opened",{}),U.current=!0)}),[W,R.island]),t.useEffect((function(){G&&(R.island.toggleActionsExpanded(!1),o.eventDispatch("phone-island-call-actions-closed",{}),O.current=!0)}),[G,R.island]),i.useEventListener("phone-island-call-keypad-open",(function(){H()})),i.useEventListener("phone-island-call-transfer-open",(function(){R.island.setIslandView("transfer"!==D?"transfer":"call"),I&&o.eventDispatch("phone-island-sideview-close",{}),o.eventDispatch("phone-island-call-transfer-opened",{})})),i.useEventListener("phone-island-call-transfer-cancel",(function(){!function(){l.isWebRTC()?s.sendDTMF("*"):c.sendPhysicalDTMF("*");a.store.getState().player.audioPlayerPlaying||R.player.updateStartAudioPlayer({src:r.default,loop:!0});setTimeout((function(){l.isWebRTC()?s.sendDTMF("1"):c.sendPhysicalDTMF("1"),R.player.stopAudioPlayer(),F&&setTimeout((function(){R.currentCall.updateTransferring(!1)}),500),o.eventDispatch("phone-island-call-transfer-canceled",{})}),500)}()})),i.useEventListener("phone-island-call-actions-open",(function(){R.island.toggleActionsExpanded(!0),o.eventDispatch("phone-island-call-actions-opened",{})})),i.useEventListener("phone-island-call-actions-close",(function(){R.island.toggleActionsExpanded(!1),o.eventDispatch("phone-island-call-actions-closed",{})}));var K=v.useTranslation().t;return w.default.createElement(w.default.Fragment,null,w.default.createElement("div",{className:"".concat((null==P?void 0:P.isListen)||(null==P?void 0:P.isIntrude)||N&&(!N||L!==M)?P.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":N&&L!==M?"pi-flex pi-items-center pi-justify-center pi-gap-4":"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==P?void 0:P.isIntrude)||(null==P?void 0:P.isListen))&&w.default.createElement(d.Button,{variant:"default",active:!!x,onClick:function(){return x?n.unpauseCurrentCall():n.pauseCurrentCall()},"data-tooltip-id":"tooltip-pause","data-tooltip-content":"".concat(K(x?"Tooltip.Play":"Tooltip.Pause"))},x?w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faPlay}):w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faPause})),!(null==P?void 0:P.isListen)&&w.default.createElement(d.Button,{variant:"default",active:!!q,onClick:function(){return q?n.unmuteCurrentCall():n.muteCurrentCall()},"data-tooltip-id":"tooltip-mute","data-tooltip-content":"".concat(K(q?"Tooltip.Unmute":"Tooltip.Mute"))},q?w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faMicrophoneSlash}):w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faMicrophone})),!(N&&L!==M)&&w.default.createElement(h.TransferButton,null),!((null==P?void 0:P.isIntrude)||(null==P?void 0:P.isListen))&&!(N&&L!==M)&&w.default.createElement(d.Button,{active:A,variant:"transparent",onClick:function(){A?(R.island.toggleActionsExpanded(!1),o.eventDispatch("phone-island-call-actions-closed",{}),o.eventDispatch("phone-island-sideview-close",{})):(R.island.toggleActionsExpanded(!0),o.eventDispatch("phone-island-call-actions-opened",{}))},"data-tooltip-id":"tooltip-expand","data-tooltip-content":"".concat(K(A?"Tooltip.Collapse":"Tooltip.Expand"))},A?w.default.createElement(u.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:p.faChevronUp}):w.default.createElement(u.FontAwesomeIcon,{className:"pi-text-gray-700 dark:pi-text-gray-200 pi-h-6 pi-w-6",icon:p.faChevronDown}))),A?w.default.createElement(w.default.Fragment,null," ",w.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"},w.default.createElement(d.Button,{active:"keypad"===D,variant:"default",onClick:H,"data-tooltip-id":"tooltip-keyboard","data-tooltip-content":K("Tooltip.Keyboard")||""},w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:f.faGridRound})),w.default.createElement(d.Button,{active:_,variant:"default",onClick:n.parkCurrentCall,"data-tooltip-id":"tooltip-park","data-tooltip-content":K("Tooltip.Park")||""},w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:p.faSquareParking})),(null===(C=null===(y=null===(T=null===(j=null==V?void 0:V.macro_permissions)||void 0===j?void 0:j.settings)||void 0===T?void 0:T.permissions)||void 0===y?void 0:y.conference)||void 0===C?void 0:C.value)&&w.default.createElement(d.Button,{"data-stop-propagation":!0,variant:"default",onClick:function(){return N?e.__awaiter(void 0,void 0,void 0,(function(){return e.__generator(this,(function(e){switch(e.label){case 0:return R.island.setIslandView("waitingConference"),[4,n.startConference()];case 1:return e.sent(),[2]}}))})):(o.eventDispatch("phone-island-conference-list-open",{}),R.island.setIslandView("transfer"!==D?"transfer":"call"),void(I&&o.eventDispatch("phone-island-sideview-close",{})))},"data-tooltip-id":"tooltip-conference","data-tooltip-content":N?K("Tooltip.Conference")||"":K("Tooltip.Add user to conference")||""},w.default.createElement(u.FontAwesomeIcon,{icon:N?p.faPlus:p.faUserPlus,className:"pi-h-6 pi-w-6"})),w.default.createElement(d.Button,{variant:"default",onClick:function(){return I?o.eventDispatch("phone-island-sideview-close",{}):o.eventDispatch("phone-island-sideview-open",{})},"data-tooltip-id":"tooltip-sideView","data-tooltip-content":K("Tooltip.Other actions")||""},w.default.createElement(u.FontAwesomeIcon,{className:"pi-h-6 pi-w-6",icon:I?f.faClose:f.faOpen})))):w.default.createElement(w.default.Fragment,null),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-transfer",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-pause",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-mute",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-expand",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-keyboard",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-conference",place:"bottom"}),w.default.createElement(m.CustomThemedTooltip,{id:"tooltip-park",place:"bottom"}),w.default.createElement(m.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) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useEffect, useRef } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n startConference,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faSquareParking,\n faChevronDown,\n faChevronUp,\n faUserPlus,\n faPlus,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faClose, faGridRound, faOpen } from '@nethesis/nethesis-solid-svg-icons'\nimport { RootState, Dispatch } from '../../store'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { sendDTMF } from '../../lib/webrtc/messages'\nimport { store } from '../../store'\nimport outgoingRingtone from '../../static/outgoing_ringtone'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport TransferButton from '../TransferButton'\nimport { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\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 const { isActive, conferenceStartedFrom } = useSelector((state: RootState) => state.conference)\n const { username, profile } = useSelector((state: RootState) => state?.currentUser)\n\n const dispatch = useDispatch<Dispatch>()\n\n // Check if the actions should be expanded automatically\n const autoExpandedRef = useRef(false)\n // Check if the actions should be collapsed automatically\n const autoCollapsedRef = useRef(false)\n\n // Check if user has enabled conference and view is different from waitingConference && the owner is the user\n const shouldExpandActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n !actionsExpanded &&\n !autoExpandedRef.current &&\n username !== '' &&\n conferenceStartedFrom !== '' &&\n conferenceStartedFrom === username\n )\n }, [isActive, view, actionsExpanded, conferenceStartedFrom])\n\n // Check if user is not the owner of the conference\n const shouldCollapseActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n actionsExpanded &&\n !autoCollapsedRef.current &&\n username !== '' &&\n conferenceStartedFrom !== username\n )\n }, [isActive, view, actionsExpanded, conferenceStartedFrom])\n\n // Automatically expand actions if the user has enabled conference\n useEffect(() => {\n if (shouldExpandActions) {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n autoExpandedRef.current = true\n }\n }, [shouldExpandActions, dispatch.island])\n\n // Automatically collapse actions if the user is not the owner of the conference\n useEffect(() => {\n if (shouldCollapseActions) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n autoCollapsedRef.current = true\n }\n }, [shouldCollapseActions, dispatch.island])\n\n 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 beginConference = () => {\n // Update island store and set conference list view to true\n eventDispatch('phone-island-conference-list-open', {})\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 }\n\n const addUserToConference = async () => {\n dispatch.island.setIslandView('waitingConference')\n const conferenceStarted = await startConference()\n }\n\n const { t } = useTranslation()\n // Phone island header section\n return (\n <>\n <div\n className={`${\n !intrudeListenStatus?.isListen &&\n !intrudeListenStatus?.isIntrude &&\n (!isActive || (isActive && conferenceStartedFrom === username))\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 : isActive && conferenceStartedFrom !== username\n ? 'pi-flex pi-items-center pi-justify-center pi-gap-4'\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 {/* If user is in conference and is not the owner of the conference, hide the transfer button */}\n {!(isActive && conferenceStartedFrom !== username) && <TransferButton />}\n {!(intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen) &&\n !(isActive && conferenceStartedFrom !== username) && (\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 {profile?.macro_permissions?.settings?.permissions?.conference?.value && (\n <Button\n data-stop-propagation={true}\n variant='default'\n onClick={() => (isActive ? addUserToConference() : beginConference())}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={\n isActive\n ? t('Tooltip.Conference') || ''\n : t('Tooltip.Add user to conference') || ''\n }\n >\n <FontAwesomeIcon icon={isActive ? faPlus : faUserPlus} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n\n <Button\n variant='default'\n onClick={() =>\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":["_e","useSelector","state","currentCall","paused","muted","isRecording","parked","_f","island","view","actionsExpanded","sideViewIsVisible","isConferenceList","transferring","intrudeListenStatus","listen","_g","conference","isActive","conferenceStartedFrom","_h","currentUser","username","profile","dispatch","useDispatch","autoExpandedRef","useRef","autoCollapsedRef","shouldExpandActions","useMemo","current","shouldCollapseActions","openKeypad","setIslandView","eventDispatch","useEffect","toggleActionsExpanded","useEventListener","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","cancelTransfer","t","useTranslation","React","createElement","Fragment","className","concat","isListen","isIntrude","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","icon","faPlay","faPause","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophone","TransferButton","faChevronUp","faChevronDown","faGridRound","parkCurrentCall","faSquareParking","_d","_c","_b","_a","macro_permissions","settings","permissions","value","__awaiter","startConference","sent","faPlus","faUserPlus","faClose","faOpen","CustomThemedTooltip","id","place"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2025 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useMemo, useEffect, useRef } from 'react'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n startConference,\n} from '../../lib/phone/call'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faPause,\n faPlay,\n faMicrophone,\n faMicrophoneSlash,\n faSquareParking,\n faChevronDown,\n faChevronUp,\n faUserPlus,\n faPlus,\n} from '@fortawesome/free-solid-svg-icons'\nimport { faClose, faGridRound, faOpen } from '@nethesis/nethesis-solid-svg-icons'\nimport { RootState, Dispatch } from '../../store'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { sendDTMF } from '../../lib/webrtc/messages'\nimport { store } from '../../store'\nimport outgoingRingtone from '../../static/outgoing_ringtone'\nimport { useTranslation } from 'react-i18next'\nimport { useEventListener, eventDispatch } from '../../utils'\nimport { CustomThemedTooltip } from '../CustomThemedTooltip'\nimport TransferButton from '../TransferButton'\nimport { isWebRTC } from '../../lib/user/default_device'\nimport { sendPhysicalDTMF } from '../../services/astproxy'\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 const { isActive, conferenceStartedFrom } = useSelector((state: RootState) => state.conference)\n const { username, profile } = useSelector((state: RootState) => state?.currentUser)\n\n const dispatch = useDispatch<Dispatch>()\n\n // Check if the actions should be expanded automatically\n const autoExpandedRef = useRef(false)\n // Check if the actions should be collapsed automatically\n const autoCollapsedRef = useRef(false)\n\n // Check if user has enabled conference and view is different from waitingConference && the owner is the user\n const shouldExpandActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n !actionsExpanded &&\n !autoExpandedRef.current &&\n username !== '' &&\n conferenceStartedFrom !== '' &&\n conferenceStartedFrom === username\n )\n }, [isActive, view, actionsExpanded, conferenceStartedFrom])\n\n // Check if user is not the owner of the conference\n const shouldCollapseActions = useMemo(() => {\n return (\n isActive &&\n view === 'call' &&\n actionsExpanded &&\n !autoCollapsedRef.current &&\n username !== '' &&\n conferenceStartedFrom !== username\n )\n }, [isActive, view, actionsExpanded, conferenceStartedFrom])\n\n // Automatically expand actions if the user has enabled conference\n useEffect(() => {\n if (shouldExpandActions) {\n dispatch.island.toggleActionsExpanded(true)\n eventDispatch('phone-island-call-actions-opened', {})\n autoExpandedRef.current = true\n }\n }, [shouldExpandActions, dispatch.island])\n\n // Automatically collapse actions if the user is not the owner of the conference\n useEffect(() => {\n if (shouldCollapseActions) {\n dispatch.island.toggleActionsExpanded(false)\n eventDispatch('phone-island-call-actions-closed', {})\n autoCollapsedRef.current = true\n }\n }, [shouldCollapseActions, dispatch.island])\n\n 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 beginConference = () => {\n // Update island store and set conference list view to true\n eventDispatch('phone-island-conference-list-open', {})\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 }\n\n const addUserToConference = async () => {\n dispatch.island.setIslandView('waitingConference')\n const conferenceStarted = await startConference()\n }\n\n const { t } = useTranslation()\n // Phone island header section\n return (\n <>\n <div\n className={`${\n !intrudeListenStatus?.isListen &&\n !intrudeListenStatus?.isIntrude &&\n (!isActive || (isActive && conferenceStartedFrom === username))\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 : isActive && conferenceStartedFrom !== username\n ? 'pi-flex pi-items-center pi-justify-center pi-gap-4'\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 {/* If user is in conference and is not the owner of the conference, hide the transfer button */}\n {!(isActive && conferenceStartedFrom !== username) && <TransferButton />}\n {!(intrudeListenStatus?.isIntrude || intrudeListenStatus?.isListen) &&\n !(isActive && conferenceStartedFrom !== username) && (\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 {profile?.macro_permissions?.settings?.permissions?.conference?.value && (\n <Button\n data-stop-propagation={true}\n variant='default'\n onClick={() => (isActive ? addUserToConference() : beginConference())}\n data-tooltip-id='tooltip-conference'\n data-tooltip-content={\n isActive\n ? t('Tooltip.Conference') || ''\n : t('Tooltip.Add user to conference') || ''\n }\n >\n <FontAwesomeIcon icon={isActive ? faPlus : faUserPlus} className='pi-h-6 pi-w-6' />\n </Button>\n )}\n\n <Button\n variant='default'\n onClick={() =>\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":["_e","useSelector","state","currentCall","paused","muted","isRecording","parked","_f","island","view","actionsExpanded","sideViewIsVisible","isConferenceList","transferring","intrudeListenStatus","listen","_g","conference","isActive","conferenceStartedFrom","_h","currentUser","username","profile","dispatch","useDispatch","autoExpandedRef","useRef","autoCollapsedRef","shouldExpandActions","useMemo","current","shouldCollapseActions","openKeypad","setIslandView","eventDispatch","useEffect","toggleActionsExpanded","useEventListener","isWebRTC","sendDTMF","sendPhysicalDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","cancelTransfer","t","useTranslation","React","createElement","Fragment","className","concat","isListen","isIntrude","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","icon","faPlay","faPause","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophone","TransferButton","faChevronUp","faChevronDown","faGridRound","parkCurrentCall","faSquareParking","_d","_c","_b","_a","macro_permissions","settings","permissions","value","__awaiter","startConference","sent","faPlus","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"),t=require("../../styles/Island.styles.js");require("../../node_modules/react-redux/es/index.js");var i=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),n=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),l=require("../../lib/phone/call.js");require("../../store/index.js"),require("../../node_modules/socket.io-client/build/esm/index.js");var r=require("../../lib/user/default_device.js");require("../../node_modules/
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../styles/Island.styles.js");require("../../node_modules/react-redux/es/index.js");var i=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),n=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),l=require("../../lib/phone/call.js");require("../../store/index.js"),require("../../node_modules/socket.io-client/build/esm/index.js");var r=require("../../lib/user/default_device.js");require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../Island.js");var a=require("../Button.js"),s=require("../AudioBars.js");require("../../node_modules/i18next/dist/esm/i18next.js");var o=require("../CustomThemedTooltip.js"),u=require("./Timer.js"),d=require("./Number.js"),c=require("./DisplayName.js"),p=require("./Avatar.js"),m=require("./Actions.js"),f=require("../Hangup.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 v=require("../../node_modules/react-i18next/dist/es/useTranslation.js");require("../../node_modules/@babel/runtime/helpers/slicedToArray.js");var g=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),E=require("../../node_modules/react-redux/es/hooks/useSelector.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var w=h(e);function j(e,t){return!e&&!t}exports.default=function(){var e=E.useSelector((function(e){return e.currentCall})),h=e.incoming,b=e.accepted,x=e.outgoing,y=e.startTime,q=e.paused,N=e.number,A=e.isRecording,_=E.useSelector((function(e){return e.currentCall})),I=E.useSelector((function(e){return e.island})).isOpen,S=E.useSelector((function(e){return e.webrtc})).remoteAudioStream,T=E.useSelector((function(e){return e.listen})),z=E.useSelector((function(e){return e.listen})),C=z.isListen,F=z.isIntrude,L=E.useSelector((function(e){return e.alerts})).data,P=v.useTranslation().t,k=Object.values(L).filter((function(e){return e.active})),O=k.length>0?k[k.length-1]:null,W=E.useSelector((function(e){return e.currentUser})),B=function(){var e;return w.default.createElement("div",{className:"pi-text-gray-600 dark:pi-text-gray-300 pi-font-normal pi-text-sm pi-flex pi-items-center pi-truncate"},w.default.createElement(i.FontAwesomeIcon,{size:"sm",icon:g.faOfficePhone,className:"pi-mr-1"}),w.default.createElement("span",{className:"pi-max-w-16 pi-truncate"},(null===(e=null==W?void 0:W.default_device)||void 0===e?void 0:e.description)||P("Common.Physical phone")))},D=function(e){return w.default.createElement("div",{className:"".concat(I?"pi-h-12 pi-w-12":"pi-h-6 pi-w-6"," pi-flex pi-justify-center pi-items-center")},w.default.createElement("div",{className:"".concat(I?"pi-h-8":"pi-h-4 pi-w-4 pi-rounded-full"," pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden")},w.default.createElement("span",{className:"".concat(I?"pi-w-8 pi-h-8":"pi-h-6 pi-w-6"," pi-animate-ping pi-absolute pi-inline-flex pi-rounded-full ").concat("red"===e?"pi-bg-red-400":"pi-bg-green-400"," pi-opacity-75 ")}),w.default.createElement(i.FontAwesomeIcon,{className:"pi-w-4 pi-h-6 pi-rotate-45 ".concat("red"===e?"pi-text-red-500":"pi-text-green-500"),icon:n.faCircle})))};return w.default.createElement(w.default.Fragment,null,null!==O?null:w.default.createElement("div",{className:"pi-bg-red pi-content-center pi-justify-center"},w.default.createElement(t.StyledCallView,{incoming:h,accepted:b,outgoing:x,isOpen:I},w.default.createElement(t.StyledTopContent,{isOpen:I,incoming:h,accepted:b,outgoing:x},(null==T?void 0:T.isListen)?w.default.createElement(i.FontAwesomeIcon,{className:"".concat(I?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover"),icon:n.faEarListen}):(null==T?void 0:T.isIntrude)?w.default.createElement(i.FontAwesomeIcon,{className:"".concat(I?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover"),icon:n.faHandPointUp}):""!==N&&""!==(null==_?void 0:_.username)&&"undefined"!==(null==_?void 0:_.username)?w.default.createElement(p.default,null):(!h||""!==(null==_?void 0:_.username)&&"undefined"!==(null==_?void 0:_.username))&&(!b||x||""!==(null==_?void 0:_.username)&&"undefined"!==(null==_?void 0:_.username))?!x||""!==(null==_?void 0:_.username)&&"undefined"!==(null==_?void 0:_.username)?x&&b&&(""===(null==_?void 0:_.username)||"undefined"===(null==_?void 0:_.username))?w.default.createElement(i.FontAwesomeIcon,{className:"".concat(I?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover pi-rotate-[135deg]":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover pi-rotate-[135deg]"),icon:n.faArrowLeft}):w.default.createElement(w.default.Fragment,null):w.default.createElement(i.FontAwesomeIcon,{className:"".concat(I?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover pi-rotate-[135deg]":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover pi-rotate-[135deg]"),icon:n.faArrowLeft}):w.default.createElement(i.FontAwesomeIcon,{className:"".concat(I?"pi-relative pi-z-30 pi-h-12 pi-w-12 pi-rounded-sm pi-bg-cover pi--rotate-45":"pi-relative pi-z-30 pi-h-6 pi-w-6 pi-rounded-sm pi-bg-cover pi--rotate-45"),icon:n.faArrowLeft}),I?(null==T?void 0:T.isIntrude)?w.default.createElement(t.StyledDetails,null,w.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"}," ",P("Common.Intrude"),(null==T?void 0:T.isIntrudeExtension)?" - ".concat(null==T?void 0:T.isIntrudeExtension):""),b?r.isPhysical()?B():w.default.createElement(u.default,{startTime:y,isNotAlwaysWhite:!0}):(null==T?void 0:T.isIntrudeExtension)?"".concat(null==T?void 0:T.isIntrudeExtension):""):(null==T?void 0:T.isListen)?w.default.createElement(t.StyledDetails,null,w.default.createElement("span",{className:"pi-justify-center pi-w-fit pi-relative pi-inline-block pi-font-bold pi-text-base"},P("Common.Listen"),(null==T?void 0:T.isListenExtension)?" - ".concat(null==T?void 0:T.isListenExtension):""),b?r.isPhysical()?B():w.default.createElement(u.default,{startTime:y,isNotAlwaysWhite:!0}):(null==T?void 0:T.isListenExtension)?"".concat(null==T?void 0:T.isListenExtension):""," "):w.default.createElement(t.StyledDetails,null,w.default.createElement(c.default,null),b?r.isPhysical()?B():w.default.createElement(u.default,{startTime:y,isNotAlwaysWhite:!0}):w.default.createElement(d.default,null)):null,!I&&!b&&w.default.createElement(c.default,null),!I&&b&&w.default.createElement(u.default,{startTime:y,isNotAlwaysWhite:!0}),b&&A?D("red"):b&&S&&!r.isPhysical()?w.default.createElement(w.default.Fragment,null,w.default.createElement(s.AudioBars,{audioStream:S,paused:q,size:I?"large":"small"})):b&&r.isPhysical()?D("green"):w.default.createElement(w.default.Fragment,null)),I&&w.default.createElement("div",{className:"".concat(C||F?"":"pi-grid pi-gap-y-5"," ")},b&&w.default.createElement(m.default,null),w.default.createElement("div",{className:"pi-grid ".concat(j(x,b)?"pi-grid-cols-2":b?"pi-grid-cols-1 pi-justify-items-center":"pi-grid-cols-1 pi-justify-items-end"," pi-gap-3.5")},w.default.createElement(f.default,{description:P("Tooltip.Hangup and transfer")}),j(x,b)&&w.default.createElement(a.Button,{onClick:l.answerIncomingCall,variant:"green","data-tooltip-id":"tooltip-answer-left","data-tooltip-content":P("Tooltip.Answer")||""},w.default.createElement(i.FontAwesomeIcon,{className:"pi-w-6 pi-h-6",icon:n.faPhone}))))),w.default.createElement(o.CustomThemedTooltip,{id:"tooltip-answer-left",place:"left"})))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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("../utils/customHooks/useIsomorphicLayoutEffect.js"),t=require("./CallView/index.js"),i=require("./KeypadView/index.js"),l=require("./AudioPlayerView/index.js"),n=require("./AlertGuard.js"),u=require("./CallView/BackCall.js"),s=require("./SideView/SideView.js"),a=require("./ViewsTransition.js");require("../node_modules/@fortawesome/react-fontawesome/index.es.js"),require("../lib/webrtc/janus.js");var o=require("../store/index.js");require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../node_modules/mic-check/lib/index.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"),require("../node_modules/@babel/runtime/helpers/slicedToArray.js"),require("../node_modules/react-tooltip/dist/react-tooltip.min.mjs.js");var d=require("./TransferView/TransferList.js"),c=require("./RecorderView/index.js"),f=require("./IslandMotion.js"),m=require("./IslandDrag.js"),p=require("./Close.js"),w=require("./PhysicalRecorderView/index.js"),V=require("./SettingsView/index.js"),j=require("./SwitchDeviceView/index.js"),q=require("../utils/genericFunctions/isBackCallVisible.js"),h=require("./VideoView/index.js"),y=require("./ConferenceView/index.js"),E=require("../node_modules/react-redux/es/hooks/useSelector.js"),g=require("../node_modules/react-redux/es/hooks/useDispatch.js");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var x=v(e),b=function(v){var b=v.showAlways,S=E.useSelector((function(e){return e.currentCall})),C
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var r=require("../utils/customHooks/useIsomorphicLayoutEffect.js"),t=require("./CallView/index.js"),i=require("./KeypadView/index.js"),l=require("./AudioPlayerView/index.js"),n=require("./AlertGuard.js"),u=require("./CallView/BackCall.js"),s=require("./SideView/SideView.js"),a=require("./ViewsTransition.js");require("../node_modules/@fortawesome/react-fontawesome/index.es.js"),require("../lib/webrtc/janus.js");var o=require("../store/index.js");require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../node_modules/mic-check/lib/index.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"),require("../node_modules/@babel/runtime/helpers/slicedToArray.js"),require("../node_modules/react-tooltip/dist/react-tooltip.min.mjs.js");var d=require("./TransferView/TransferList.js"),c=require("./RecorderView/index.js"),f=require("./IslandMotion.js"),m=require("./IslandDrag.js"),p=require("./Close.js"),w=require("./PhysicalRecorderView/index.js"),V=require("./SettingsView/index.js"),j=require("./SwitchDeviceView/index.js"),q=require("../utils/genericFunctions/isBackCallVisible.js"),h=require("./VideoView/index.js"),y=require("./ConferenceView/index.js"),E=require("../node_modules/react-redux/es/hooks/useSelector.js"),g=require("../node_modules/react-redux/es/hooks/useDispatch.js");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var x=v(e),b=function(v){var b=v.showAlways,S=v.uaType,C=E.useSelector((function(e){return e.currentCall})),_=C.incoming,R=C.accepted,P=C.outgoing,I=E.useSelector((function(e){return e.island})),A=I.view,T=I.sideViewIsVisible,k=I.avoidToShow,D=I.previousView,L=E.useSelector((function(e){return{recording:e.physicalRecorder.recording}})).recording,F=E.useSelector((function(e){return e.alerts.status})).activeAlertsCount,B=E.useSelector((function(e){return e.player})).audioPlayerLoop,K=E.useSelector((function(e){return e.conference})).isActive,M=e.useRef(null),N=g.useDispatch(),W=e.useRef(null),G=e.useRef(null),O=e.useRef(null);r.useIsomorphicLayoutEffect((function(){N.player.updatePlayer({audioPlayer:W,localAudio:G,remoteAudio:O})}),[]),e.useEffect((function(){var e=o.store.getState().conference,r=e.isActive,t=e.conferenceStartedFrom,i=e.isOwnerInside,l=o.store.getState().currentUser.username;(_||P)&&r&&t===l&&i?N.island.setIslandView("waitingConference"):(_||P)&&N.island.setIslandView("call")}),[_,P]),e.useEffect((function(){L&&N.island.setIslandView("physicalPhoneRecorder")}),[A]);var z,H=e.useState(""),U=H[0],J=H[1];return e.useEffect((function(){setTimeout((function(){J(A)}),200)}),[A]),x.default.createElement("div",{ref:M,className:"pi-absolute pi-min-w-full pi-min-h-full pi-left-0 pi-top-0 pi-overflow-hidden pi-pointer-events-none pi-flex pi-items-center pi-justify-center pi-content-center pi-phone-island-container pi-z-1000"},(_||P||R||b||F>0||"player"===A||"recorder"===A||"physicalPhoneRecorder"===A||"waitingConference"===A&&K||"transfer"===A&&K||"settings"===A&&K||"settings"===A&&"recorder"===D)&&!k&&x.default.createElement(x.default.Fragment,null,x.default.createElement(m.IslandDrag,{islandContainerRef:M},x.default.createElement(u.default,{isVisible:q.isBackCallActive()}),x.default.createElement(s.default,{isVisible:T}),x.default.createElement(f.IslandMotion,null,x.default.createElement(n.AlertGuard,{uaType:S},(z={call:t.default?x.default.createElement(t.default,null):null,keypad:i.default?x.default.createElement(i.default,null):null,transfer:d.TransferListView?x.default.createElement(d.TransferListView,null):null,player:l.KeypadView?x.default.createElement(l.KeypadView,null):null,recorder:c.RecorderView?x.default.createElement(c.RecorderView,null):null,physicalPhoneRecorder:w.PhysicalRecorderView?x.default.createElement(w.PhysicalRecorderView,null):null,settings:V.SettingsView?x.default.createElement(V.SettingsView,null):null,video:h.VideoView?x.default.createElement(h.VideoView,null):null,switchDevice:j.SwitchDeviceView?x.default.createElement(j.SwitchDeviceView,null):null,waitingConference:y.WaitingConferenceView?x.default.createElement(y.WaitingConferenceView,null):null},U in z&&z[U]?x.default.createElement(a.default,{forView:U},z[U]):x.default.createElement(x.default.Fragment,null)))),x.default.createElement(p.Close,null))),x.default.createElement("div",{className:"pi-hidden"},x.default.createElement("audio",{loop:B,ref:W}),x.default.createElement("audio",{muted:!0,ref:G}),x.default.createElement("audio",{autoPlay:!0,ref:O})))};b.displayName="Island",exports.Island=b;
|
|
2
2
|
//# sourceMappingURL=Island.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Island.js","sources":["../../src/components/Island.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState, useRef, useEffect, type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../store'\nimport { useIsomorphicLayoutEffect } from '../utils'\nimport CallView from './CallView'\nimport KeyboardView from './KeypadView'\nimport AudioPlayerView from './AudioPlayerView'\nimport { AlertGuard } from './AlertGuard'\nimport BackCall from './CallView/BackCall'\nimport SideView from './SideView/SideView'\nimport ViewsTransition from './ViewsTransition'\nimport { TransferListView } from './TransferView'\nimport { RecorderView } from './RecorderView'\nimport IslandMotions from './IslandMotion'\nimport IslandDrag from './IslandDrag'\nimport Close from './Close'\nimport { PhysicalRecorderView } from './PhysicalRecorderView'\nimport { SettingsView } from './SettingsView'\nimport { SwitchDeviceView } from './SwitchDeviceView'\nimport { isBackCallActive } from '../utils/genericFunctions/isBackCallVisible'\nimport VideoView from './VideoView'\nimport { WaitingConferenceView } from './ConferenceView'\nimport { store } from '../store'\n\n/**\n * Provides the Island logic\n *\n * @param showAlways Sets the Island ever visible\n */\nexport const Island: FC<IslandProps> = ({ showAlways }) => {\n // Get the currentCall info\n const { incoming, accepted, outgoing } = useSelector((state: RootState) => state.currentCall)\n\n const { view, sideViewIsVisible, avoidToShow, previousView } = useSelector(\n (state: RootState) => state.island,\n )\n const { recording } = useSelector((state: RootState) => ({\n recording: state.physicalRecorder.recording,\n }))\n\n // Get activeAlertsCount from island store\n const { activeAlertsCount } = useSelector((state: RootState) => state.alerts.status)\n\n // Get audioPlayerLoop value from player store\n const { audioPlayerLoop } = useSelector((state: RootState) => state.player)\n const { isActive } = useSelector((state: RootState) => state.conference)\n\n // The Container reference\n const islandContainerRef = useRef<any>(null)\n\n // Initialize useDispatch\n const dispatch = useDispatch<Dispatch>()\n\n const audioPlayer = useRef<HTMLAudioElement>(null)\n const localAudio = useRef<HTMLAudioElement>(null)\n const remoteAudio = useRef<HTMLAudioElement>(null)\n\n useIsomorphicLayoutEffect(() => {\n dispatch.player.updatePlayer({\n audioPlayer: audioPlayer,\n localAudio: localAudio,\n remoteAudio: remoteAudio,\n })\n }, [])\n\n // Handle and apply view switch logic\n // ...set callview as the current view\n useEffect(() => {\n const { isActive, conferenceStartedFrom, isOwnerInside } = store.getState().conference\n const { username } = store.getState().currentUser\n // Check and switch the view\n if ((incoming || outgoing) && isActive && conferenceStartedFrom === username && isOwnerInside) {\n dispatch.island.setIslandView('waitingConference')\n } else if (incoming || outgoing) {\n dispatch.island.setIslandView('call')\n }\n }, [incoming, outgoing])\n\n useEffect(() => {\n if (recording) {\n dispatch.island.setIslandView('physicalPhoneRecorder')\n }\n }, [view])\n\n const [currentView, setCurrentView] = useState<any>('')\n\n // Handle island view change\n useEffect(() => {\n setTimeout(() => {\n setCurrentView(view)\n }, 200)\n }, [view])\n\n return (\n <div\n ref={islandContainerRef}\n className='pi-absolute pi-min-w-full pi-min-h-full pi-left-0 pi-top-0 pi-overflow-hidden pi-pointer-events-none pi-flex pi-items-center pi-justify-center pi-content-center pi-phone-island-container pi-z-1000'\n >\n {(incoming ||\n outgoing ||\n accepted ||\n showAlways ||\n activeAlertsCount > 0 ||\n view === 'player' ||\n view === 'recorder' ||\n view === 'physicalPhoneRecorder' ||\n (view === 'waitingConference' && isActive) ||\n (view === 'transfer' && isActive) ||\n (view === 'settings' && isActive) ||\n (view === 'settings' && previousView === 'recorder')) &&\n !avoidToShow && (\n <>\n <IslandDrag islandContainerRef={islandContainerRef}>\n {/* Add background call visibility logic */}\n <BackCall isVisible={isBackCallActive()} />\n <SideView isVisible={sideViewIsVisible} />\n <IslandMotions>\n {/* The views logic */}\n <AlertGuard>\n {(() => {\n const views = {\n call: CallView ? <CallView /> : null,\n keypad: KeyboardView ? <KeyboardView /> : null,\n transfer: TransferListView ? <TransferListView /> : null,\n player: AudioPlayerView ? <AudioPlayerView /> : null,\n recorder: RecorderView ? <RecorderView /> : null,\n physicalPhoneRecorder: PhysicalRecorderView ? <PhysicalRecorderView /> : null,\n settings: SettingsView ? <SettingsView /> : null,\n video: VideoView ? <VideoView /> : null,\n switchDevice: SwitchDeviceView ? <SwitchDeviceView /> : null,\n waitingConference: WaitingConferenceView ? <WaitingConferenceView /> : null,\n }\n\n return currentView in views && views[currentView as keyof typeof views] ? (\n <ViewsTransition forView={currentView}>\n {views[currentView as keyof typeof views]}\n </ViewsTransition>\n ) : (\n <></>\n )\n })()}\n </AlertGuard>\n </IslandMotions>\n <Close />\n </IslandDrag>\n </>\n )}\n <div className='pi-hidden'>\n <audio loop={audioPlayerLoop} ref={audioPlayer}></audio>\n <audio muted={true} ref={localAudio}></audio>\n <audio autoPlay ref={remoteAudio}></audio>\n </div>\n </div>\n )\n}\n\nIsland.displayName = 'Island'\n\ninterface IslandProps {\n showAlways?: boolean\n}\n"],"names":["Island","_a","showAlways","_b","useSelector","state","currentCall","incoming","accepted","outgoing","_c","island","view","sideViewIsVisible","avoidToShow","previousView","recording","physicalRecorder","activeAlertsCount","alerts","status","audioPlayerLoop","player","isActive","conference","islandContainerRef","useRef","dispatch","useDispatch","audioPlayer","localAudio","remoteAudio","useIsomorphicLayoutEffect","updatePlayer","useEffect","store","getState","conferenceStartedFrom","isOwnerInside","username","currentUser","setIslandView","views","_d","useState","currentView","setCurrentView","setTimeout","React","ref","className","createElement","Fragment","IslandDrag","BackCall","isVisible","isBackCallActive","SideView","IslandMotions","AlertGuard","call","CallView","keypad","KeyboardView","transfer","TransferListView","AudioPlayerView","KeypadView","recorder","RecorderView","physicalPhoneRecorder","PhysicalRecorderView","settings","SettingsView","video","VideoView","switchDevice","SwitchDeviceView","waitingConference","WaitingConferenceView","ViewsTransition","forView","Close","loop","muted","autoPlay","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Island.js","sources":["../../src/components/Island.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useState, useRef, useEffect, type FC } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { RootState, Dispatch } from '../store'\nimport { useIsomorphicLayoutEffect } from '../utils'\nimport CallView from './CallView'\nimport KeyboardView from './KeypadView'\nimport AudioPlayerView from './AudioPlayerView'\nimport { AlertGuard } from './AlertGuard'\nimport BackCall from './CallView/BackCall'\nimport SideView from './SideView/SideView'\nimport ViewsTransition from './ViewsTransition'\nimport { TransferListView } from './TransferView'\nimport { RecorderView } from './RecorderView'\nimport IslandMotions from './IslandMotion'\nimport IslandDrag from './IslandDrag'\nimport Close from './Close'\nimport { PhysicalRecorderView } from './PhysicalRecorderView'\nimport { SettingsView } from './SettingsView'\nimport { SwitchDeviceView } from './SwitchDeviceView'\nimport { isBackCallActive } from '../utils/genericFunctions/isBackCallVisible'\nimport VideoView from './VideoView'\nimport { WaitingConferenceView } from './ConferenceView'\nimport { store } from '../store'\n\n/**\n * Provides the Island logic\n *\n * @param showAlways Sets the Island ever visible\n */\nexport const Island: FC<IslandProps> = ({ showAlways, uaType }) => {\n // Get the currentCall info\n const { incoming, accepted, outgoing } = useSelector((state: RootState) => state.currentCall)\n\n const { view, sideViewIsVisible, avoidToShow, previousView } = useSelector(\n (state: RootState) => state.island,\n )\n const { recording } = useSelector((state: RootState) => ({\n recording: state.physicalRecorder.recording,\n }))\n\n // Get activeAlertsCount from island store\n const { activeAlertsCount } = useSelector((state: RootState) => state.alerts.status)\n\n // Get audioPlayerLoop value from player store\n const { audioPlayerLoop } = useSelector((state: RootState) => state.player)\n const { isActive } = useSelector((state: RootState) => state.conference)\n\n // The Container reference\n const islandContainerRef = useRef<any>(null)\n\n // Initialize useDispatch\n const dispatch = useDispatch<Dispatch>()\n\n const audioPlayer = useRef<HTMLAudioElement>(null)\n const localAudio = useRef<HTMLAudioElement>(null)\n const remoteAudio = useRef<HTMLAudioElement>(null)\n\n useIsomorphicLayoutEffect(() => {\n dispatch.player.updatePlayer({\n audioPlayer: audioPlayer,\n localAudio: localAudio,\n remoteAudio: remoteAudio,\n })\n }, [])\n\n // Handle and apply view switch logic\n // ...set callview as the current view\n useEffect(() => {\n const { isActive, conferenceStartedFrom, isOwnerInside } = store.getState().conference\n const { username } = store.getState().currentUser\n // Check and switch the view\n if ((incoming || outgoing) && isActive && conferenceStartedFrom === username && isOwnerInside) {\n dispatch.island.setIslandView('waitingConference')\n } else if (incoming || outgoing) {\n dispatch.island.setIslandView('call')\n }\n }, [incoming, outgoing])\n\n useEffect(() => {\n if (recording) {\n dispatch.island.setIslandView('physicalPhoneRecorder')\n }\n }, [view])\n\n const [currentView, setCurrentView] = useState<any>('')\n\n // Handle island view change\n useEffect(() => {\n setTimeout(() => {\n setCurrentView(view)\n }, 200)\n }, [view])\n\n return (\n <div\n ref={islandContainerRef}\n className='pi-absolute pi-min-w-full pi-min-h-full pi-left-0 pi-top-0 pi-overflow-hidden pi-pointer-events-none pi-flex pi-items-center pi-justify-center pi-content-center pi-phone-island-container pi-z-1000'\n >\n {(incoming ||\n outgoing ||\n accepted ||\n showAlways ||\n activeAlertsCount > 0 ||\n view === 'player' ||\n view === 'recorder' ||\n view === 'physicalPhoneRecorder' ||\n (view === 'waitingConference' && isActive) ||\n (view === 'transfer' && isActive) ||\n (view === 'settings' && isActive) ||\n (view === 'settings' && previousView === 'recorder')) &&\n !avoidToShow && (\n <>\n <IslandDrag islandContainerRef={islandContainerRef}>\n {/* Add background call visibility logic */}\n <BackCall isVisible={isBackCallActive()} />\n <SideView isVisible={sideViewIsVisible} />\n <IslandMotions>\n {/* The views logic */}\n <AlertGuard uaType={uaType}>\n {(() => {\n const views = {\n call: CallView ? <CallView /> : null,\n keypad: KeyboardView ? <KeyboardView /> : null,\n transfer: TransferListView ? <TransferListView /> : null,\n player: AudioPlayerView ? <AudioPlayerView /> : null,\n recorder: RecorderView ? <RecorderView /> : null,\n physicalPhoneRecorder: PhysicalRecorderView ? <PhysicalRecorderView /> : null,\n settings: SettingsView ? <SettingsView /> : null,\n video: VideoView ? <VideoView /> : null,\n switchDevice: SwitchDeviceView ? <SwitchDeviceView /> : null,\n waitingConference: WaitingConferenceView ? <WaitingConferenceView /> : null,\n }\n\n return currentView in views && views[currentView as keyof typeof views] ? (\n <ViewsTransition forView={currentView}>\n {views[currentView as keyof typeof views]}\n </ViewsTransition>\n ) : (\n <></>\n )\n })()}\n </AlertGuard>\n </IslandMotions>\n <Close />\n </IslandDrag>\n </>\n )}\n <div className='pi-hidden'>\n <audio loop={audioPlayerLoop} ref={audioPlayer}></audio>\n <audio muted={true} ref={localAudio}></audio>\n <audio autoPlay ref={remoteAudio}></audio>\n </div>\n </div>\n )\n}\n\nIsland.displayName = 'Island'\n\ninterface IslandProps {\n showAlways?: boolean\n uaType?: string\n}\n"],"names":["Island","_a","showAlways","uaType","_b","useSelector","state","currentCall","incoming","accepted","outgoing","_c","island","view","sideViewIsVisible","avoidToShow","previousView","recording","physicalRecorder","activeAlertsCount","alerts","status","audioPlayerLoop","player","isActive","conference","islandContainerRef","useRef","dispatch","useDispatch","audioPlayer","localAudio","remoteAudio","useIsomorphicLayoutEffect","updatePlayer","useEffect","store","getState","conferenceStartedFrom","isOwnerInside","username","currentUser","setIslandView","views","_d","useState","currentView","setCurrentView","setTimeout","React","ref","className","createElement","Fragment","IslandDrag","BackCall","isVisible","isBackCallActive","SideView","IslandMotions","AlertGuard","call","CallView","keypad","KeyboardView","transfer","TransferListView","AudioPlayerView","KeypadView","recorder","RecorderView","physicalPhoneRecorder","PhysicalRecorderView","settings","SettingsView","video","VideoView","switchDevice","SwitchDeviceView","waitingConference","WaitingConferenceView","ViewsTransition","forView","Close","loop","muted","autoPlay","displayName"],"mappings":"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"}
|