@nethesis/phone-island 0.7.98 → 0.7.99

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js"),a=require("../../lib/phone/call.js"),n=require("../../static/icons/PhoneKeypadLight.js"),r=require("../../static/icons/PhoneKeypadSolid.js");require("../../node_modules/react-redux/es/index.js");var o=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../lib/webrtc/janus.js");var i=require("../../lib/webrtc/messages.js");require("../../node_modules/mic-check/lib/index.js");var l=require("../../static/outgoing_ringtone.js");require("../Island.js");var s=require("../Button.js"),u=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),c=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js");require("../../node_modules/framer-motion/dist/framer-motion.js");var d=require("../TransferView/TransferActions.js"),f=require("../../node_modules/react-tooltip/dist/react-tooltip.min.cjs.js"),p=require("../../node_modules/react-redux/es/hooks/useSelector.js"),m=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=j(e);exports.default=function(){var e=p.useSelector((function(e){return e.currentCall})),j=e.paused,E=e.muted,g=p.useSelector((function(e){return e.currentCall.parked})),x=p.useSelector((function(e){return e.island})),C=x.view,w=x.actionsExpanded,y=p.useSelector((function(e){return e.currentCall.transferring})),q=m.useDispatch();return v.default.createElement(v.default.Fragment,null,v.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"},v.default.createElement(s.Button,{variant:"default",active:!!j,onClick:function(){return j?a.unpauseCurrentCall():a.pauseCurrentCall()},"data-tooltip-id":"tooltip","data-tooltip-content":j?"Play":"Pause"},j?v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:c.faPlay}):v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faPause})),v.default.createElement(s.Button,{variant:"default",active:!!E,onClick:function(){return E?a.unmuteCurrentCall():a.muteCurrentCall()},"data-tooltip-id":"tooltip","data-tooltip-content":E?"Unmute":"Mute"},E?v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:c.faMicrophoneSlash}):v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faMicrophone})),v.default.createElement(s.Button,{active:y,onClick:y?function(){i.sendDTMF("*"),o.store.getState().player.audioPlayerPlaying||q.player.updateStartAudioPlayer({src:l.default,loop:!0}),setTimeout((function(){i.sendDTMF("1"),q.player.stopAudioPlayer(),y&&setTimeout((function(){q.currentCall.updateTransferring(!1)}),500)}),500)}:function(){q.island.setIslandView("transfer"!==C?"transfer":"call"),a.pauseCurrentCall()},variant:"default","data-tooltip-id":"tooltip","data-tooltip-content":y?"Cancel transfer":"Transfer"},y?v.default.createElement(u.FontAwesomeIcon,{className:"",size:"xl",icon:c.faArrowDownUpAcrossLine}):v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faArrowDownArrowUp})),v.default.createElement(s.Button,{active:w,variant:"transparent",onClick:function(){w?q.island.toggleActionsExpanded(!1):q.island.toggleActionsExpanded(!0)},"data-tooltip-id":"tooltip","data-tooltip-content":w?"Collapse":"Expand"},w?v.default.createElement(u.FontAwesomeIcon,{className:"",size:"xl",icon:t.faChevronUp}):v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faChevronDown}))),w?v.default.createElement(v.default.Fragment,null," ",v.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"},v.default.createElement(s.Button,{active:"keypad"===C,variant:"default",onClick:function(){q.island.setIslandView("keypad"!==C?"keypad":"call")},"data-tooltip-id":"tooltip","data-tooltip-content":"Keyboard"},"keypad"===C?v.default.createElement(r.default,null):v.default.createElement(n.default,null)),v.default.createElement(s.Button,{active:g,variant:"default",onClick:function(){a.park(),q.currentCall.setParked(!0)},"data-tooltip-id":"tooltip","data-tooltip-content":"Park"},v.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:g?c.faCircleParking:t.faCircleParking})),y&&v.default.createElement(d.TransferActions,null))):v.default.createElement(v.default.Fragment,null),v.default.createElement(f.Tooltip,{className:"pi-z-20",id:"tooltip",place:"bottom"}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("react"),n=require("../../node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js"),a=require("../../lib/phone/call.js"),r=require("../../static/icons/PhoneKeypadLight.js"),o=require("../../static/icons/PhoneKeypadSolid.js"),i=require("../../utils/customHooks/useEventListener.js");require("../../node_modules/react-redux/es/index.js");var l=require("../../store/index.js");require("../../node_modules/socket.io-client/build/esm/index.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../lib/webrtc/janus.js");var s=require("../../lib/webrtc/messages.js");require("../../node_modules/mic-check/lib/index.js");var u=require("../../static/outgoing_ringtone.js");require("../Island.js");var c=require("../Button.js"),d=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),f=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js");require("../../node_modules/framer-motion/dist/framer-motion.js");var p=require("../TransferView/TransferActions.js"),m=require("../../node_modules/react-tooltip/dist/react-tooltip.min.cjs.js"),j=require("../../node_modules/react-redux/es/hooks/useSelector.js"),v=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var E=C(t);exports.default=function(){var t=j.useSelector((function(e){return e.currentCall})),C=t.paused,g=t.muted,x=j.useSelector((function(e){return e.currentCall.parked})),w=j.useSelector((function(e){return e.island})),y=w.view,q=w.actionsExpanded,h=j.useSelector((function(e){return e.currentCall.transferring})),k=v.useDispatch();return i.useEventListener("phone-island-transfer-call",(function(t){!function(t){e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){switch(e.label){case 0:return[4,a.attendedTransfer(t)];case 1:return e.sent()&&(k.currentCall.updateCurrentCall({transferring:!0,paused:!1}),k.player.playRemoteAudio()),[2]}}))}))}(t.to)})),E.default.createElement(E.default.Fragment,null,E.default.createElement("div",{className:"pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center"},E.default.createElement(c.Button,{variant:"default",active:!!C,onClick:function(){return C?a.unpauseCurrentCall():a.pauseCurrentCall()},"data-tooltip-id":"tooltip","data-tooltip-content":C?"Play":"Pause"},C?E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:f.faPlay}):E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:n.faPause})),E.default.createElement(c.Button,{variant:"default",active:!!g,onClick:function(){return g?a.unmuteCurrentCall():a.muteCurrentCall()},"data-tooltip-id":"tooltip","data-tooltip-content":g?"Unmute":"Mute"},g?E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:f.faMicrophoneSlash}):E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:n.faMicrophone})),E.default.createElement(c.Button,{active:h,onClick:h?function(){s.sendDTMF("*"),l.store.getState().player.audioPlayerPlaying||k.player.updateStartAudioPlayer({src:u.default,loop:!0}),setTimeout((function(){s.sendDTMF("1"),k.player.stopAudioPlayer(),h&&setTimeout((function(){k.currentCall.updateTransferring(!1)}),500)}),500)}:function(){k.island.setIslandView("transfer"!==y?"transfer":"call"),a.pauseCurrentCall()},variant:"default","data-tooltip-id":"tooltip","data-tooltip-content":h?"Cancel transfer":"Transfer"},h?E.default.createElement(d.FontAwesomeIcon,{className:"",size:"xl",icon:f.faArrowDownUpAcrossLine}):E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:n.faArrowDownArrowUp})),E.default.createElement(c.Button,{active:q,variant:"transparent",onClick:function(){q?k.island.toggleActionsExpanded(!1):k.island.toggleActionsExpanded(!0)},"data-tooltip-id":"tooltip","data-tooltip-content":q?"Collapse":"Expand"},q?E.default.createElement(d.FontAwesomeIcon,{className:"",size:"xl",icon:n.faChevronUp}):E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:n.faChevronDown}))),q?E.default.createElement(E.default.Fragment,null," ",E.default.createElement("div",{className:"pi-grid pi-grid-cols-4 pi-auto-cols-max pi-gap-y-5 pi-justify-items-center pi-place-items-center pi-justify-center"},E.default.createElement(c.Button,{active:"keypad"===y,variant:"default",onClick:function(){k.island.setIslandView("keypad"!==y?"keypad":"call")},"data-tooltip-id":"tooltip","data-tooltip-content":"Keyboard"},"keypad"===y?E.default.createElement(o.default,null):E.default.createElement(r.default,null)),E.default.createElement(c.Button,{active:x,variant:"default",onClick:function(){a.park(),k.currentCall.setParked(!0)},"data-tooltip-id":"tooltip","data-tooltip-content":"Park"},E.default.createElement(d.FontAwesomeIcon,{size:"xl",icon:x?f.faCircleParking:n.faCircleParking})),h&&E.default.createElement(p.TransferActions,null))):E.default.createElement(E.default.Fragment,null),E.default.createElement(m.Tooltip,{className:"pi-z-20",id:"tooltip",place:"bottom"}))};
2
2
  //# sourceMappingURL=Actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport {\n faPause as faPauseRegular,\n faMicrophone as faMicrophoneLight,\n faArrowDownArrowUp,\n faCircleParking,\n faChevronDown,\n faChevronUp,\n} from '@nethesis/nethesis-light-svg-icons'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n} from '../../lib/phone/call'\nimport PhoneKeypadLight from '../../static/icons/PhoneKeypadLight'\nimport PhoneKeypadSolid from '../../static/icons/PhoneKeypadSolid'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faMicrophoneSlash,\n faPlay,\n faArrowDownUpAcrossLine,\n faCircleParking as faCircleParkingSolid,\n} 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 { TransferActions } from '../TransferView'\nimport { Tooltip } from 'react-tooltip/dist/react-tooltip.min.cjs'\nimport { park } from '../../lib/phone/call'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted } = 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 } = useSelector((state: RootState) => state.island)\n const transferring = useSelector((state: RootState) => state.currentCall.transferring)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n }\n\n function transfer() {\n // Open the transfer view\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Pause the call\n pauseCurrentCall()\n }\n\n // Cancels the current transfer through dtmfs\n function calcelTransfer() {\n sendDTMF('*')\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 sendDTMF('1')\n dispatch.player.stopAudioPlayer()\n // The workarround to disable transfer because of the wrong conv.connection value from ws\n if (transferring) {\n setTimeout(() => {\n dispatch.currentCall.updateTransferring(false)\n }, 500)\n }\n }, 500)\n }\n\n function toggleActionsExpanded() {\n if (actionsExpanded) {\n dispatch.island.toggleActionsExpanded(false)\n } else {\n dispatch.island.toggleActionsExpanded(true)\n }\n }\n\n function parkAction() {\n park()\n dispatch.currentCall.setParked(true)\n }\n\n return (\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 variant='default'\n active={paused ? true : false}\n onClick={() => (paused ? unpauseCurrentCall() : pauseCurrentCall())}\n data-tooltip-id='tooltip'\n data-tooltip-content={paused ? 'Play' : 'Pause'}\n >\n {paused ? (\n <FontAwesomeIcon size='xl' icon={faPlay} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faPauseRegular} />\n )}\n </Button>\n <Button\n variant='default'\n active={muted ? true : false}\n onClick={() => (muted ? unmuteCurrentCall() : muteCurrentCall())}\n data-tooltip-id='tooltip'\n data-tooltip-content={muted ? 'Unmute' : 'Mute'}\n >\n {muted ? (\n <FontAwesomeIcon size='xl' icon={faMicrophoneSlash} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faMicrophoneLight} />\n )}\n </Button>\n <Button\n active={transferring}\n onClick={transferring ? calcelTransfer : transfer}\n variant='default'\n data-tooltip-id='tooltip'\n data-tooltip-content={transferring ? 'Cancel transfer' : 'Transfer'}\n >\n {transferring ? (\n <FontAwesomeIcon className='' size='xl' icon={faArrowDownUpAcrossLine} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faArrowDownArrowUp} />\n )}\n </Button>\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={() => toggleActionsExpanded()}\n data-tooltip-id='tooltip'\n data-tooltip-content={actionsExpanded ? 'Collapse' : 'Expand'}\n >\n {actionsExpanded ? (\n <FontAwesomeIcon className='' size='xl' icon={faChevronUp} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faChevronDown} />\n )}\n </Button>\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'\n data-tooltip-content='Keyboard'\n >\n {view === 'keypad' ? <PhoneKeypadSolid /> : <PhoneKeypadLight />}\n </Button>\n <Button\n active={parked}\n variant='default'\n onClick={parkAction}\n data-tooltip-id='tooltip'\n data-tooltip-content='Park'\n >\n <FontAwesomeIcon size='xl' icon={parked ? faCircleParkingSolid : faCircleParking} />\n </Button>\n {transferring && <TransferActions />}\n </div>\n </>\n ) : (\n <></>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip' place='bottom' />\n </>\n )\n}\n\nexport default Actions\n"],"names":["_a","useSelector","state","currentCall","paused","muted","parked","_b","island","view","actionsExpanded","transferring","dispatch","useDispatch","React","createElement","Fragment","className","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","size","icon","faPlay","faPauseRegular","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophoneLight","sendDTMF","store","getState","player","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","setIslandView","faArrowDownUpAcrossLine","faArrowDownArrowUp","toggleActionsExpanded","faChevronUp","faChevronDown","PhoneKeypadSolid","PhoneKeypadLight","park","setParked","faCircleParkingSolid","faCircleParking","TransferActions","Tooltip","id","place"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../src/components/CallView/Actions.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport {\n faPause as faPauseRegular,\n faMicrophone as faMicrophoneLight,\n faArrowDownArrowUp,\n faCircleParking,\n faChevronDown,\n faChevronUp,\n} from '@nethesis/nethesis-light-svg-icons'\nimport {\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n attendedTransfer,\n} from '../../lib/phone/call'\nimport PhoneKeypadLight from '../../static/icons/PhoneKeypadLight'\nimport PhoneKeypadSolid from '../../static/icons/PhoneKeypadSolid'\nimport { Button } from '../'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faMicrophoneSlash,\n faPlay,\n faArrowDownUpAcrossLine,\n faCircleParking as faCircleParkingSolid,\n} 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 { TransferActions } from '../TransferView'\nimport { Tooltip } from 'react-tooltip/dist/react-tooltip.min.cjs'\nimport { park } from '../../lib/phone/call'\nimport { useEventListener } from '../../utils'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted } = 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 } = useSelector((state: RootState) => state.island)\n const transferring = useSelector((state: RootState) => state.currentCall.transferring)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n }\n\n function transfer() {\n // Open the transfer view\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\n // Pause the call\n pauseCurrentCall()\n }\n\n // Cancels the current transfer through dtmfs\n function calcelTransfer() {\n sendDTMF('*')\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 sendDTMF('1')\n dispatch.player.stopAudioPlayer()\n // The workarround to disable transfer because of the wrong conv.connection value from ws\n if (transferring) {\n setTimeout(() => {\n dispatch.currentCall.updateTransferring(false)\n }, 500)\n }\n }, 500)\n }\n\n function toggleActionsExpanded() {\n if (actionsExpanded) {\n dispatch.island.toggleActionsExpanded(false)\n } else {\n dispatch.island.toggleActionsExpanded(true)\n }\n }\n\n function parkAction() {\n park()\n dispatch.currentCall.setParked(true)\n }\n\n /**\n * Event listner for phone-island-transfer-call event\n */\n useEventListener('phone-island-transfer-call', (data) => {\n const transferNumber = data.to\n handleAttendedTransfer(transferNumber)\n })\n\n async function handleAttendedTransfer(number: string) {\n // Send attended transfer message\n const transferringMessageSent = await attendedTransfer(number)\n if (transferringMessageSent) {\n // Set transferring and disable pause\n dispatch.currentCall.updateCurrentCall({\n transferring: true,\n paused: false,\n })\n // Play the remote audio element\n dispatch.player.playRemoteAudio()\n }\n }\n\n return (\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 variant='default'\n active={paused ? true : false}\n onClick={() => (paused ? unpauseCurrentCall() : pauseCurrentCall())}\n data-tooltip-id='tooltip'\n data-tooltip-content={paused ? 'Play' : 'Pause'}\n >\n {paused ? (\n <FontAwesomeIcon size='xl' icon={faPlay} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faPauseRegular} />\n )}\n </Button>\n\n <Button\n variant='default'\n active={muted ? true : false}\n onClick={() => (muted ? unmuteCurrentCall() : muteCurrentCall())}\n data-tooltip-id='tooltip'\n data-tooltip-content={muted ? 'Unmute' : 'Mute'}\n >\n {muted ? (\n <FontAwesomeIcon size='xl' icon={faMicrophoneSlash} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faMicrophoneLight} />\n )}\n </Button>\n <Button\n active={transferring}\n onClick={transferring ? calcelTransfer : transfer}\n variant='default'\n data-tooltip-id='tooltip'\n data-tooltip-content={transferring ? 'Cancel transfer' : 'Transfer'}\n >\n {transferring ? (\n <FontAwesomeIcon className='' size='xl' icon={faArrowDownUpAcrossLine} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faArrowDownArrowUp} />\n )}\n </Button>\n <Button\n active={actionsExpanded}\n variant='transparent'\n onClick={() => toggleActionsExpanded()}\n data-tooltip-id='tooltip'\n data-tooltip-content={actionsExpanded ? 'Collapse' : 'Expand'}\n >\n {actionsExpanded ? (\n <FontAwesomeIcon className='' size='xl' icon={faChevronUp} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faChevronDown} />\n )}\n </Button>\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'\n data-tooltip-content='Keyboard'\n >\n {view === 'keypad' ? <PhoneKeypadSolid /> : <PhoneKeypadLight />}\n </Button>\n <Button\n active={parked}\n variant='default'\n onClick={parkAction}\n data-tooltip-id='tooltip'\n data-tooltip-content='Park'\n >\n <FontAwesomeIcon size='xl' icon={parked ? faCircleParkingSolid : faCircleParking} />\n </Button>\n {transferring && <TransferActions />}\n </div>\n </>\n ) : (\n <></>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip' place='bottom' />\n </>\n )\n}\n\nexport default Actions\n"],"names":["_a","useSelector","state","currentCall","paused","muted","parked","_b","island","view","actionsExpanded","transferring","dispatch","useDispatch","useEventListener","data","number","attendedTransfer","sent","updateCurrentCall","player","playRemoteAudio","handleAttendedTransfer","to","React","createElement","Fragment","className","Button","variant","active","onClick","unpauseCurrentCall","pauseCurrentCall","FontAwesomeIcon","size","icon","faPlay","faPauseRegular","unmuteCurrentCall","muteCurrentCall","faMicrophoneSlash","faMicrophoneLight","sendDTMF","store","getState","audioPlayerPlaying","updateStartAudioPlayer","src","outgoingRingtone","loop","setTimeout","stopAudioPlayer","updateTransferring","setIslandView","faArrowDownUpAcrossLine","faArrowDownArrowUp","toggleActionsExpanded","faChevronUp","faChevronDown","PhoneKeypadSolid","PhoneKeypadLight","park","setParked","faCircleParkingSolid","faCircleParking","TransferActions","Tooltip","id","place"],"mappings":"+7CAuCoB,WAEZ,IAAAA,EAAoBC,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,WAAW,IAArEC,WAAQC,UACVC,EAASL,eAAY,SAACC,GAAqB,OAAAA,EAAMC,YAAYG,MAAlB,IAG3CC,EAA4BN,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMM,MAAM,IAAxEC,SAAMC,oBACRC,EAAeV,eAAY,SAACC,GAAqB,OAAAA,EAAMC,YAAYQ,YAAlB,IAEjDC,EAAWC,EAAAA,cAuEjB,OAnBAC,mBAAiB,8BAA8B,SAACC,IAKhD,SAAsCC,qGAEJ,KAAA,EAAA,MAAA,CAAA,EAAMC,EAAAA,iBAAiBD,kBAAvBhB,EAA8BkB,SAG5DN,EAAST,YAAYgB,kBAAkB,CACrCR,cAAc,EACdP,QAAQ,IAGVQ,EAASQ,OAAOC,6BAEnB,CAfCC,CADuBP,EAAKQ,GAE9B,IAiBEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,sHACbH,UAAAC,cAACG,EAAAA,OACC,CAAAC,QAAQ,UACRC,SAAQ1B,EACR2B,QAAS,WAAM,OAAC3B,EAAS4B,EAAAA,qBAAuBC,EAAAA,oBAAmB,kBACnD,UACM,uBAAA7B,EAAS,OAAS,SAEvCA,EACCoB,UAACC,cAAAS,EAAAA,iBAAgBC,KAAK,KAAKC,KAAMC,EAAAA,SAEjCb,wBAACU,EAAAA,gBAAe,CAACC,KAAK,KAAKC,KAAME,aAIrCd,UAAAC,cAACG,EAAAA,OACC,CAAAC,QAAQ,UACRC,SAAQzB,EACR0B,QAAS,WAAM,OAAC1B,EAAQkC,EAAAA,oBAAsBC,EAAAA,mBAAkB,kBAChD,UACM,uBAAAnC,EAAQ,SAAW,QAExCA,EACCmB,UAACC,cAAAS,EAAAA,iBAAgBC,KAAK,KAAKC,KAAMK,EAAAA,oBAEjCjB,wBAACU,EAAAA,gBAAe,CAACC,KAAK,KAAKC,KAAMM,kBAGrClB,UAAAC,cAACG,EAAAA,OAAM,CACLE,OAAQnB,EACRoB,QAASpB,EAzFjB,WACEgC,EAAQA,SAAC,KACsBC,EAAKA,MAACC,WAAWzB,OAAM0B,oBAGpDlC,EAASQ,OAAO2B,uBAAuB,CACrCC,IAAKC,EAAgB,QACrBC,MAAM,IAGVC,YAAW,WACTR,EAAQA,SAAC,KACT/B,EAASQ,OAAOgC,kBAEZzC,GACFwC,YAAW,WACTvC,EAAST,YAAYkD,oBAAmB,EACzC,GAAE,IAEN,GAAE,IACJ,EA5BD,WAEEzC,EAASJ,OAAO8C,cAAuB,aAAT7C,EAAsB,WAAa,QAEjEwB,EAAAA,kBACD,EA6FOJ,QAAQ,UAAS,kBACD,UACM,uBAAAlB,EAAe,kBAAoB,YAExDA,EACCa,EAAC,QAAAC,cAAAS,EAAAA,iBAAgBP,UAAU,GAAGQ,KAAK,KAAKC,KAAMmB,4BAE9C/B,EAAAA,QAAAC,cAACS,EAAeA,gBAAC,CAAAC,KAAK,KAAKC,KAAMoB,EAAAA,sBAGrChC,UAAAC,cAACG,EAAAA,OAAM,CACLE,OAAQpB,EACRmB,QAAQ,cACRE,QAAS,WAhFXrB,EACFE,EAASJ,OAAOiD,uBAAsB,GAEtC7C,EAASJ,OAAOiD,uBAAsB,EA6EI,EACtB,kBAAA,UACM,uBAAA/C,EAAkB,WAAa,UAEpDA,EACCc,EAAAA,QAACC,cAAAS,EAAeA,gBAAC,CAAAP,UAAU,GAAGQ,KAAK,KAAKC,KAAMsB,gBAE9ClC,EAAAA,QAACC,cAAAS,EAAeA,iBAACC,KAAK,KAAKC,KAAMuB,EAAAA,kBAKtCjD,EACCc,EAAAA,QAAAC,cAAAD,EAAA,QAAAE,SAAA,KACG,IACDF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,sHACbH,EAAAA,QAAAC,cAACG,SAAM,CACLE,OAAiB,WAATrB,EACRoB,QAAQ,UACRE,QAtIZ,WACEnB,EAASJ,OAAO8C,cAAuB,WAAT7C,EAAoB,SAAW,OAC9D,EAqI2B,kBAAA,UACK,uBAAA,YAEX,WAATA,EAAoBe,EAAAA,QAAAC,cAACmC,EAAAA,QAAgB,MAAMpC,EAAAA,QAACC,cAAAoC,EAAgB,eAE/DrC,EAAAA,QAAAC,cAACG,EAAAA,OACC,CAAAE,OAAQxB,EACRuB,QAAQ,UACRE,QArGZ,WACE+B,EAAAA,OACAlD,EAAST,YAAY4D,WAAU,EAChC,EAmG2B,kBAAA,iCACK,QAErBvC,EAAAA,QAAAC,cAACS,kBAAgB,CAAAC,KAAK,KAAKC,KAAM9B,EAAS0D,EAAAA,gBAAuBC,EAAeA,mBAEjFtD,GAAgBa,EAAA,QAAAC,cAACyC,EAAAA,gBAAe,QAIrC1C,EAAAA,QAAAC,cAAAD,EAAAA,QAAAE,SAAA,MAGFF,EAAAA,QAAAC,cAAC0C,UAAQ,CAAAxC,UAAU,UAAUyC,GAAG,UAAUC,MAAM,WAGtD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nethesis/phone-island",
3
3
  "author": "Nethesis",
4
- "version": "0.7.98",
4
+ "version": "0.7.99",
5
5
  "description": "NethVoice CTI Phone Island",
6
6
  "keywords": [
7
7
  "nethserver",