@nethesis/phone-island 0.7.87 → 0.7.89
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/components/AudioPlayerView/index.js +1 -1
- package/dist/components/AudioPlayerView/index.js.map +1 -1
- package/dist/components/KeypadView/Actions.js +1 -1
- package/dist/components/KeypadView/Actions.js.map +1 -1
- package/dist/components/RecorderView/Actions.js +1 -1
- package/dist/components/RecorderView/Actions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("./Avatar.js"),a=require("../AudioBars.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("./Avatar.js"),a=require("../AudioBars.js"),l=require("./Progress.js"),r=require("../Button.js"),i=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),s=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),o=require("../../node_modules/react-tooltip/dist/react-tooltip.min.cjs.js"),u=require("../../node_modules/react-redux/es/hooks/useSelector.js"),n=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=d(e),p=function(){var e=u.useSelector((function(e){return e.player})),d=e.audioPlayerTrackType,p=e.audioPlayerTrackName,f=e.audioPlayer,m=e.audioPlayerPlaying,x=u.useSelector((function(e){return e.island})).isOpen,y=n.useDispatch();return c.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},c.default.createElement("div",{className:"pi-flex pi-gap-4"},c.default.createElement(t.Avatar,{type:d}),c.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},c.default.createElement("div",{style:{width:x?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},p)),c.default.createElement(a.AudioBars,{audioElement:f&&f.current,size:x?"large":"small"})),x&&c.default.createElement("div",null,c.default.createElement(l.Progress,null),c.default.createElement("div",{className:"pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7"},c.default.createElement(r.Button,{onClick:m?function(){y.player.pauseAudioPlayer()}:function(){y.player.startAudioPlayer((function(){}))},variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip","data-tooltip-content":m?"Pause":"Play"},m?c.default.createElement(i.FontAwesomeIcon,{icon:s.faPause,size:"xl"}):c.default.createElement(i.FontAwesomeIcon,{icon:s.faPlay,size:"xl"})))),c.default.createElement(o.Tooltip,{className:"pi-z-20",id:"tooltip",place:"bottom"}))};exports.KeypadView=p,exports.default=p;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Avatar } from './Avatar'\nimport { AudioBars } from '../AudioBars'\nimport Progress from './Progress'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlay, faPause } from '@nethesis/nethesis-solid-svg-icons'\n\nexport const KeypadView: FC<KeypadViewTypes> = () => {\n const { audioPlayerTrackType, audioPlayerTrackName, audioPlayer, audioPlayerPlaying } =\n useSelector((state: RootState) => state.player)\n const { isOpen } = useSelector((state: RootState) => state.island)\n const dispatch = useDispatch<Dispatch>()\n\n function startPlaying() {\n dispatch.player.startAudioPlayer(() => {})\n }\n\n function pausePlaying() {\n dispatch.player.pauseAudioPlayer()\n }\n\n return (\n <div className='pi-flex pi-gap-7 pi-flex-col'>\n <div className='pi-flex pi-gap-4'>\n <Avatar type={audioPlayerTrackType} />\n <div className='pi-flex pi-items-center pi-w-full'>\n <div\n style={{\n width: isOpen ? '202px' : '60px',\n }}\n className={`pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block`}\n >\n {audioPlayerTrackName}\n </div>\n </div>\n <AudioBars\n audioElement={audioPlayer && audioPlayer.current}\n size={isOpen ? 'large' : 'small'}\n />\n </div>\n {isOpen && (\n <div>\n <Progress />\n <div className='pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7'>\n <Button\n onClick={audioPlayerPlaying ? pausePlaying : startPlaying}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n >\n {audioPlayerPlaying ? (\n <FontAwesomeIcon icon={faPause} size='xl' />\n ) : (\n <FontAwesomeIcon icon={faPlay} size='xl' />\n )}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default KeypadView\n\nexport interface KeypadViewTypes {}\n"],"names":["KeypadView","_a","useSelector","state","player","audioPlayerTrackType","audioPlayerTrackName","audioPlayer","audioPlayerPlaying","isOpen","island","dispatch","useDispatch","React","createElement","className","Avatar","type","style","width","AudioBars","audioElement","current","size","Progress","Button","onClick","pauseAudioPlayer","startAudioPlayer","variant","transform","FontAwesomeIcon","icon","faPause","faPlay"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/AudioPlayerView/index.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC, useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { Avatar } from './Avatar'\nimport { AudioBars } from '../AudioBars'\nimport Progress from './Progress'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlay, faPause } from '@nethesis/nethesis-solid-svg-icons'\nimport { Tooltip } from 'react-tooltip/dist/react-tooltip.min.cjs'\n\nexport const KeypadView: FC<KeypadViewTypes> = () => {\n const { audioPlayerTrackType, audioPlayerTrackName, audioPlayer, audioPlayerPlaying } =\n useSelector((state: RootState) => state.player)\n const { isOpen } = useSelector((state: RootState) => state.island)\n const dispatch = useDispatch<Dispatch>()\n\n function startPlaying() {\n dispatch.player.startAudioPlayer(() => {})\n }\n\n function pausePlaying() {\n dispatch.player.pauseAudioPlayer()\n }\n\n return (\n <div className='pi-flex pi-gap-7 pi-flex-col'>\n <div className='pi-flex pi-gap-4'>\n <Avatar type={audioPlayerTrackType} />\n <div className='pi-flex pi-items-center pi-w-full'>\n <div\n style={{\n width: isOpen ? '202px' : '60px',\n }}\n className={`pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block`}\n >\n {audioPlayerTrackName}\n </div>\n </div>\n <AudioBars\n audioElement={audioPlayer && audioPlayer.current}\n size={isOpen ? 'large' : 'small'}\n />\n </div>\n {isOpen && (\n <div>\n <Progress />\n <div className='pi-w-full pi-flex pi-justify-center pi-items-center pi-pt-7'>\n <Button\n onClick={audioPlayerPlaying ? pausePlaying : startPlaying}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip'\n data-tooltip-content={audioPlayerPlaying ? 'Pause' : 'Play' }\n >\n {audioPlayerPlaying ? (\n <FontAwesomeIcon icon={faPause} size='xl' />\n ) : (\n <FontAwesomeIcon icon={faPlay} size='xl' />\n )}\n </Button>\n </div>\n </div>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip' place='bottom' />\n </div>\n )\n}\n\nexport default KeypadView\n\nexport interface KeypadViewTypes {}\n"],"names":["KeypadView","_a","useSelector","state","player","audioPlayerTrackType","audioPlayerTrackName","audioPlayer","audioPlayerPlaying","isOpen","island","dispatch","useDispatch","React","createElement","className","Avatar","type","style","width","AudioBars","audioElement","current","size","Progress","Button","onClick","pauseAudioPlayer","startAudioPlayer","variant","transform","FontAwesomeIcon","icon","faPause","faPlay","Tooltip","id","place"],"mappings":"ksBAcaA,EAAkC,WACvC,IAAAC,EACJC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,UADlCC,EAAoBJ,EAAAI,qBAAEC,EAAoBL,EAAAK,qBAAEC,EAAWN,EAAAM,YAAEC,EAAkBP,EAAAO,mBAE3EC,EAAWP,eAAY,SAACC,GAAqB,OAAAA,EAAMO,iBACrDC,EAAWC,EAAAA,cAUjB,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,oBACbF,EAAAA,QAAAC,cAACE,EAAAA,OAAM,CAACC,KAAMZ,IACdQ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,qCACbF,EAAAA,QAAAC,cAAA,MAAA,CACEI,MAAO,CACLC,MAAOV,EAAS,QAAU,QAE5BM,UAAW,yFAEVT,IAGLO,EAAAA,QAACC,cAAAM,EAAAA,WACCC,aAAcd,GAAeA,EAAYe,QACzCC,KAAMd,EAAS,QAAU,WAG5BA,GACCI,EAAA,QAAAC,cAAA,MAAA,KACED,UAAAC,cAACU,EAAQA,SAAG,MACZX,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+DACbF,UAAAC,cAACW,EAAAA,OAAM,CACLC,QAASlB,EA5BrB,WACEG,EAASP,OAAOuB,kBACjB,EAND,WACEhB,EAASP,OAAOwB,kBAAiB,WAAQ,GAC1C,EA+BWC,QAAQ,UACRX,MAAO,CAAEY,UAAW,eACJ,kBAAA,UACM,uBAAAtB,EAAqB,QAAU,QAEpDA,EACCK,wBAACkB,kBAAe,CAACC,KAAMC,UAASV,KAAK,OAErCV,EAAAA,QAACC,cAAAiB,EAAeA,gBAAC,CAAAC,KAAME,EAAMA,OAAEX,KAAK,UAO9CV,EAAAA,QAAAC,cAACqB,UAAQ,CAAApB,UAAU,UAAUqB,GAAG,UAAUC,MAAM,WAGtD"}
|
|
@@ -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"),require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../store/index.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../node_modules/socket.io-client/build/esm/index.js"),require("../Island.js");var r=require("../Button.js");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),require("../../node_modules/framer-motion/dist/framer-motion.js");var i=t(e),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js"),require("../../node_modules/mic-check/lib/index.js"),require("../../lib/webrtc/janus.js"),require("../../store/index.js"),require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../../node_modules/socket.io-client/build/esm/index.js"),require("../Island.js");var r=require("../Button.js");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),require("../../node_modules/framer-motion/dist/framer-motion.js");var i=t(e),a=Array.from(Array(9).keys()),n=["*","0","#"];exports.default=function(e){var t=e.keyCallback;return i.default.createElement("div",{className:"pi-grid pi-grid-cols-3 pi-auto-cols-max pi-gap-y-6 pi-justify-items-center pi-place-items-center pi-justify-center pi-px-3"},a.map((function(e){return i.default.createElement(r.Button,{key:e+1,onClick:function(){return t(e+1)},variant:"default",className:"pi-text-2xl",style:{transform:"scale(1.15)"}},e+1)})),n.map((function(e){return i.default.createElement(r.Button,{key:e+1,onClick:function(){return t(e)},variant:"default",className:"pi-text-2xl",style:{transform:"scale(1.15)"}},e)})))};
|
|
2
2
|
//# sourceMappingURL=Actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.js","sources":["../../../src/components/KeypadView/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 { Button } from '..'\n\nconst keys = Array.from(Array(9).keys())\n\nconst bottomKeys = ['*', '0', '#']\n\nconst Actions: FC<ActionsTypes> = ({ keyCallback }) => {\n return (\n <div className='pi-grid pi-grid-cols-3 pi-auto-cols-max pi-gap-y-6 pi-justify-items-center pi-place-items-center pi-justify-center pi-px-3'>\n {keys.map((key) => (\n <Button\n key={key + 1}\n onClick={() => keyCallback(key + 1)}\n variant='default'\n className={'pi-text-2xl'}\n >\n {key + 1}\n </Button>\n ))}\n {bottomKeys.map((bottomKey) => (\n <Button\n key={bottomKey + 1}\n onClick={() => keyCallback(bottomKey)}\n variant='default'\n className={'pi-text-2xl'}\n >\n {bottomKey}\n </Button>\n ))}\n </div>\n )\n}\n\nexport default Actions\n\ninterface ActionsTypes {\n keyCallback: any\n}\n"],"names":["keys","Array","from","bottomKeys","_a","keyCallback","React","createElement","className","map","key","Button","onClick","variant","bottomKey"],"mappings":"qqBAMMA,EAAOC,MAAMC,KAAKD,MAAM,GAAGD,QAE3BG,EAAa,CAAC,IAAK,IAAK,qBAEI,SAACC,GAAE,IAAAC,EAAWD,EAAAC,YAC9C,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,8HACZR,EAAKS,KAAI,SAACC,GAAQ,OACjBJ,EAAC,QAAAC,cAAAI,
|
|
1
|
+
{"version":3,"file":"Actions.js","sources":["../../../src/components/KeypadView/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 { Button } from '..'\n\nconst keys = Array.from(Array(9).keys())\n\nconst bottomKeys = ['*', '0', '#']\n\nconst Actions: FC<ActionsTypes> = ({ keyCallback }) => {\n return (\n <div className='pi-grid pi-grid-cols-3 pi-auto-cols-max pi-gap-y-6 pi-justify-items-center pi-place-items-center pi-justify-center pi-px-3'>\n {keys.map((key) => (\n <Button\n key={key + 1}\n onClick={() => keyCallback(key + 1)}\n variant='default'\n className={'pi-text-2xl'}\n style={{ transform: 'scale(1.15)' }}\n >\n {key + 1}\n </Button>\n ))}\n {bottomKeys.map((bottomKey) => (\n <Button\n key={bottomKey + 1}\n onClick={() => keyCallback(bottomKey)}\n variant='default'\n className={'pi-text-2xl'}\n style={{ transform: 'scale(1.15)' }}\n >\n {bottomKey}\n </Button>\n ))}\n </div>\n )\n}\n\nexport default Actions\n\ninterface ActionsTypes {\n keyCallback: any\n}\n"],"names":["keys","Array","from","bottomKeys","_a","keyCallback","React","createElement","className","map","key","Button","onClick","variant","style","transform","bottomKey"],"mappings":"qqBAMMA,EAAOC,MAAMC,KAAKD,MAAM,GAAGD,QAE3BG,EAAa,CAAC,IAAK,IAAK,qBAEI,SAACC,GAAE,IAAAC,EAAWD,EAAAC,YAC9C,OACEC,EAAA,QAAAC,cAAA,MAAA,CAAKC,UAAU,8HACZR,EAAKS,KAAI,SAACC,GAAQ,OACjBJ,EAAC,QAAAC,cAAAI,EAAMA,OACL,CAAAD,IAAKA,EAAM,EACXE,QAAS,WAAM,OAAAP,EAAYK,EAAM,EAAlB,EACfG,QAAQ,UACRL,UAAW,cACXM,MAAO,CAAEC,UAAW,gBAEnBL,EAAM,EARQ,IAWlBP,EAAWM,KAAI,SAACO,GAAc,OAC7BV,EAAC,QAAAC,cAAAI,SACC,CAAAD,IAAKM,EAAY,EACjBJ,QAAS,WAAM,OAAAP,EAAYW,EAAU,EACrCH,QAAQ,UACRL,UAAW,cACXM,MAAO,CAAEC,UAAW,gBAEnBC,MAKX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("react"),o=require("../Button.js"),r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),n=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),a=require("../../node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js"),i=require("../../services/offhour.js");require("../../node_modules/react-redux/es/index.js");var s=require("../../lib/phone/call.js");require("../../store/index.js");var l=require("../../events/RecorderEvents.js"),c=require("../../node_modules/react-tooltip/dist/react-tooltip.min.cjs.js"),d=require("../../node_modules/react-redux/es/utils/shallowEqual.js");require("../../node_modules/react-redux/es/components/Context.js"),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");var u=require("../../node_modules/react-redux/es/hooks/useDispatch.js"),m=require("../../node_modules/react-redux/es/hooks/useSelector.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=f(t);exports.Actions=function(){var f=u.useDispatch(),g=m.useSelector((function(e){return{incoming:e.recorder.incoming,waiting:e.recorder.waiting,recording:e.recorder.recording,recorded:e.recorder.recorded,playing:e.recorder.playing}}),d.default),j=g.incoming,v=g.waiting,h=g.recording,x=g.recorded,y=g.playing;return t.useEffect((function(){h||f.recorder.setWaiting(!1)}),[h]),t.useEffect((function(){j&&(s.answerIncomingCall(),f.recorder.setIncoming(!1),f.recorder.setWaiting(!1))}),[j]),p.default.createElement("div",{className:"pi-flex pi-justify-center pi-items-center pi-pt-9 pi-gap-6",style:x?{paddingTop:"2rem"}:{}},h&&p.default.createElement(o.Button,{onClick:function(){f.recorder.setWaiting(!0),s.hangupCurrentCall(),f.recorder.setRecorded(!0)},variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip","data-tooltip-content":"Stop"},v?p.default.createElement(r.FontAwesomeIcon,{icon:n.faCircleNotch,className:"fa-spin pi-loader",size:"lg"}):p.default.createElement(r.FontAwesomeIcon,{icon:n.faStop,size:"xl"})),x&&!h&&p.default.createElement(p.default.Fragment,null,p.default.createElement(o.Button,{onClick:function(){f.recorder.resetRecorded()},variant:"default","data-tooltip-id":"tooltip","data-tooltip-content":"Delete"},p.default.createElement(r.FontAwesomeIcon,{icon:a.faTrash,size:"xl"})),y?p.default.createElement(o.Button,{onClick:function(){f.player.pauseAudioPlayer(),f.recorder.setPlaying(!1),f.recorder.setPaused(!0)},variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip","data-tooltip-content":"Pause"},p.default.createElement(r.FontAwesomeIcon,{icon:n.faPause,size:"xl"})):p.default.createElement(o.Button,{onClick:function(){f.player.startAudioPlayer((function(){f.recorder.setPlaying(!1),f.recorder.setPaused(!0)})),f.recorder.setPlaying(!0)},variant:"default",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip","data-tooltip-content":"Play"},p.default.createElement(r.FontAwesomeIcon,{icon:n.faPlay,size:"xl"})),p.default.createElement(o.Button,{onClick:function(){l.dispatchRecordingSave(),f.island.setIslandView(null)},variant:"green","data-tooltip-id":"tooltip","data-tooltip-content":"Save"},p.default.createElement(r.FontAwesomeIcon,{icon:a.faCheck,size:"xl"}))),!h&&!x&&p.default.createElement(o.Button,{onClick:function(){return e.__awaiter(this,void 0,void 0,(function(){var t;return e.__generator(this,(function(e){switch(e.label){case 0:return f.recorder.setRecording(!0),f.recorder.setWaiting(!0),[4,i.startAnnouncementRecording()];case 1:return(t=e.sent()).tempFilename&&f.recorder.setTempFilename(t.tempFilename),f.recorder.setStartTime("".concat(Date.now()/1e3)),[2]}}))}))},variant:"red",style:{transform:"scale(1.15)"},"data-tooltip-id":"tooltip","data-tooltip-content":"Start recording"},v?p.default.createElement(r.FontAwesomeIcon,{icon:n.faCircleNotch,className:"fa-spin pi-loader",size:"lg"}):p.default.createElement(r.FontAwesomeIcon,{icon:n.faRecordVinyl,size:"xl"})),p.default.createElement(c.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/RecorderView/Actions.tsx"],"sourcesContent":["//\n// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n//\n\nimport React, { type FC, useState, useEffect, memo } from 'react'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faRecordVinyl,\n faStop,\n faCircleNotch,\n faPause,\n faPlay,\n} from '@nethesis/nethesis-solid-svg-icons'\nimport { faTrash, faCheck } from '@nethesis/nethesis-light-svg-icons'\nimport { startAnnouncementRecording } from '../../services/offhour'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { hangupCurrentCall, answerIncomingCall } from '../../lib/phone/call'\nimport { dispatchRecordingSave } from '../../events'\n\nexport const Actions: FC<{}> = () => {\n const dispatch = useDispatch<Dispatch>()\n const { incoming, waiting, recording, recorded, playing } = useSelector(\n (state: RootState) => ({\n incoming: state.recorder.incoming,\n waiting: state.recorder.waiting,\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n playing: state.recorder.playing,\n }),\n shallowEqual,\n )\n\n async function handleStart() {\n // Update the recorder state\n dispatch.recorder.setRecording(true)\n dispatch.recorder.setWaiting(true)\n // Call the api to start the recording call\n const data: { tempFilename: string } | null = await startAnnouncementRecording()\n // Set the returned temp file name to the store\n if (data.tempFilename) dispatch.recorder.setTempFilename(data.tempFilename)\n // Set the start time of recording\n dispatch.recorder.setStartTime(`${Date.now() / 1000}`)\n }\n\n function handleStop() {\n // Set waiting to true\n dispatch.recorder.setWaiting(true)\n // Call the function to hangup the current call used for recording\n hangupCurrentCall()\n dispatch.recorder.setRecorded(true)\n }\n\n function handlePlay() {\n dispatch.player.startAudioPlayer(() => {\n // The callback for the end event of the audio player\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n })\n dispatch.recorder.setPlaying(true)\n }\n\n function handlePause() {\n dispatch.player.pauseAudioPlayer()\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n }\n\n function handleDelete() {\n dispatch.recorder.resetRecorded()\n }\n\n function handleSaveRecording() {\n // Dispatch the reconrding save event\n dispatchRecordingSave()\n // Close the Island\n dispatch.island.setIslandView(null)\n }\n\n useEffect(() => {\n if (!recording) {\n dispatch.recorder.setWaiting(false)\n }\n }, [recording])\n\n useEffect(() => {\n if (incoming) {\n // Answer the incoming call for recording\n answerIncomingCall()\n // Reset incoming to recorder state\n dispatch.recorder.setIncoming(false)\n dispatch.recorder.setWaiting(false)\n }\n }, [incoming])\n\n return (\n <div\n className={`pi-flex pi-justify-center pi-items-center pi-pt-9 pi-gap-6`}\n style={recorded ? { paddingTop: '2rem' } : {}}\n >\n {recording && (\n <Button
|
|
1
|
+
{"version":3,"file":"Actions.js","sources":["../../../src/components/RecorderView/Actions.tsx"],"sourcesContent":["//\n// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n//\n\nimport React, { type FC, useState, useEffect, memo } from 'react'\nimport { Button } from '../Button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faRecordVinyl,\n faStop,\n faCircleNotch,\n faPause,\n faPlay,\n} from '@nethesis/nethesis-solid-svg-icons'\nimport { faTrash, faCheck } from '@nethesis/nethesis-light-svg-icons'\nimport { startAnnouncementRecording } from '../../services/offhour'\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { hangupCurrentCall, answerIncomingCall } from '../../lib/phone/call'\nimport { dispatchRecordingSave } from '../../events'\nimport { Tooltip } from 'react-tooltip/dist/react-tooltip.min.cjs'\n\nexport const Actions: FC<{}> = () => {\n const dispatch = useDispatch<Dispatch>()\n const { incoming, waiting, recording, recorded, playing } = useSelector(\n (state: RootState) => ({\n incoming: state.recorder.incoming,\n waiting: state.recorder.waiting,\n recording: state.recorder.recording,\n recorded: state.recorder.recorded,\n playing: state.recorder.playing,\n }),\n shallowEqual,\n )\n\n async function handleStart() {\n // Update the recorder state\n dispatch.recorder.setRecording(true)\n dispatch.recorder.setWaiting(true)\n // Call the api to start the recording call\n const data: { tempFilename: string } | null = await startAnnouncementRecording()\n // Set the returned temp file name to the store\n if (data.tempFilename) dispatch.recorder.setTempFilename(data.tempFilename)\n // Set the start time of recording\n dispatch.recorder.setStartTime(`${Date.now() / 1000}`)\n }\n\n function handleStop() {\n // Set waiting to true\n dispatch.recorder.setWaiting(true)\n // Call the function to hangup the current call used for recording\n hangupCurrentCall()\n dispatch.recorder.setRecorded(true)\n }\n\n function handlePlay() {\n dispatch.player.startAudioPlayer(() => {\n // The callback for the end event of the audio player\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n })\n dispatch.recorder.setPlaying(true)\n }\n\n function handlePause() {\n dispatch.player.pauseAudioPlayer()\n dispatch.recorder.setPlaying(false)\n dispatch.recorder.setPaused(true)\n }\n\n function handleDelete() {\n dispatch.recorder.resetRecorded()\n }\n\n function handleSaveRecording() {\n // Dispatch the reconrding save event\n dispatchRecordingSave()\n // Close the Island\n dispatch.island.setIslandView(null)\n }\n\n useEffect(() => {\n if (!recording) {\n dispatch.recorder.setWaiting(false)\n }\n }, [recording])\n\n useEffect(() => {\n if (incoming) {\n // Answer the incoming call for recording\n answerIncomingCall()\n // Reset incoming to recorder state\n dispatch.recorder.setIncoming(false)\n dispatch.recorder.setWaiting(false)\n }\n }, [incoming])\n\n return (\n <div\n className={`pi-flex pi-justify-center pi-items-center pi-pt-9 pi-gap-6`}\n style={recorded ? { paddingTop: '2rem' } : {}}\n >\n {recording && (\n <Button\n onClick={handleStop}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip'\n data-tooltip-content='Stop'\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faStop} size='xl' />\n )}\n </Button>\n )}\n {recorded && !recording && (\n <>\n <Button\n onClick={handleDelete}\n variant='default'\n data-tooltip-id='tooltip'\n data-tooltip-content='Delete'\n >\n <FontAwesomeIcon icon={faTrash} size='xl' />\n </Button>\n {playing ? (\n <Button\n onClick={handlePause}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip'\n data-tooltip-content='Pause'\n >\n <FontAwesomeIcon icon={faPause} size='xl' />\n </Button>\n ) : (\n <Button\n onClick={handlePlay}\n variant='default'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip'\n data-tooltip-content='Play'\n >\n <FontAwesomeIcon icon={faPlay} size='xl' />\n </Button>\n )}\n <Button\n onClick={handleSaveRecording}\n variant='green'\n data-tooltip-id='tooltip'\n data-tooltip-content='Save'\n >\n <FontAwesomeIcon icon={faCheck} size='xl' />\n </Button>\n </>\n )}\n {!recording && !recorded && (\n <Button\n onClick={handleStart}\n variant='red'\n style={{ transform: 'scale(1.15)' }}\n data-tooltip-id='tooltip'\n data-tooltip-content='Start recording'\n >\n {waiting ? (\n <FontAwesomeIcon icon={faCircleNotch} className='fa-spin pi-loader' size='lg' />\n ) : (\n <FontAwesomeIcon icon={faRecordVinyl} size='xl' />\n )}\n </Button>\n )}\n {/* Buttons tooltips */}\n <Tooltip className='pi-z-20' id='tooltip' place='bottom' />\n </div>\n )\n}\n"],"names":["dispatch","useDispatch","_a","useSelector","state","incoming","recorder","waiting","recording","recorded","playing","shallowEqual","useEffect","setWaiting","answerIncomingCall","setIncoming","React","className","style","paddingTop","createElement","Button","onClick","hangupCurrentCall","setRecorded","variant","transform","FontAwesomeIcon","icon","faCircleNotch","size","faStop","Fragment","resetRecorded","faTrash","player","pauseAudioPlayer","setPlaying","setPaused","faPause","startAudioPlayer","faPlay","dispatchRecordingSave","island","setIslandView","faCheck","setRecording","startAnnouncementRecording","data","sent","tempFilename","setTempFilename","setStartTime","concat","Date","now","faRecordVinyl","Tooltip","id","place"],"mappings":"+sCAuB+B,WAC7B,IAAMA,EAAWC,EAAAA,cACXC,EAAsDC,EAAAA,aAC1D,SAACC,GAAqB,MAAC,CACrBC,SAAUD,EAAME,SAASD,SACzBE,QAASH,EAAME,SAASC,QACxBC,UAAWJ,EAAME,SAASE,UAC1BC,SAAUL,EAAME,SAASG,SACzBC,QAASN,EAAME,SAASI,QACxB,GACFC,EAAAA,SARMN,aAAUE,YAASC,cAAWC,aAAUC,YAyEhD,OAhBAE,EAAAA,WAAU,WACHJ,GACHR,EAASM,SAASO,YAAW,EAEjC,GAAG,CAACL,IAEJI,EAAAA,WAAU,WACJP,IAEFS,EAAAA,qBAEAd,EAASM,SAASS,aAAY,GAC9Bf,EAASM,SAASO,YAAW,GAEjC,GAAG,CAACR,IAGFW,+BACEC,UAAW,6DACXC,MAAOT,EAAW,CAAEU,WAAY,QAAW,CAAA,GAE1CX,GACCQ,EAAC,QAAAI,cAAAC,EAAAA,OACC,CAAAC,QAzDR,WAEEtB,EAASM,SAASO,YAAW,GAE7BU,EAAAA,oBACAvB,EAASM,SAASkB,aAAY,EAC/B,EAoDOC,QAAQ,UACRP,MAAO,CAAEQ,UAAW,eACJ,kBAAA,UACK,uBAAA,QAEpBnB,EACCS,EAAAA,QAAAI,cAACO,EAAeA,gBAAA,CAACC,KAAMC,EAAaA,cAAEZ,UAAU,oBAAoBa,KAAK,OAEzEd,EAAC,QAAAI,cAAAO,EAAAA,gBAAgB,CAAAC,KAAMG,EAAAA,OAAQD,KAAK,QAIzCrB,IAAaD,GACZQ,EAAAA,QAAAI,cAAAJ,EAAAA,QAAAgB,SAAA,KACEhB,EAAAA,QAAAI,cAACC,SAAM,CACLC,QAlDV,WACEtB,EAASM,SAAS2B,eACnB,EAiDSR,QAAQ,UAAS,kBACD,UAAS,uBACJ,UAErBT,UAACI,cAAAO,EAAAA,gBAAgB,CAAAC,KAAMM,EAAAA,QAASJ,KAAK,QAEtCpB,EACCM,EAAA,QAAAI,cAACC,EAAAA,OACC,CAAAC,QAjEZ,WACEtB,EAASmC,OAAOC,mBAChBpC,EAASM,SAAS+B,YAAW,GAC7BrC,EAASM,SAASgC,WAAU,EAC7B,EA8DWb,QAAQ,UACRP,MAAO,CAAEQ,UAAW,eAAe,kBACnB,UAAS,uBACJ,SAErBV,EAAAA,QAAAI,cAACO,kBAAgB,CAAAC,KAAMW,EAAOA,QAAET,KAAK,QAGvCd,EAAC,QAAAI,cAAAC,EAAMA,OACL,CAAAC,QApFZ,WACEtB,EAASmC,OAAOK,kBAAiB,WAE/BxC,EAASM,SAAS+B,YAAW,GAC7BrC,EAASM,SAASgC,WAAU,EAC9B,IACAtC,EAASM,SAAS+B,YAAW,EAC9B,EA8EWZ,QAAQ,UACRP,MAAO,CAAEQ,UAAW,eACJ,kBAAA,iCACK,QAErBV,UAACI,cAAAO,EAAAA,gBAAgB,CAAAC,KAAMa,EAAAA,OAAQX,KAAK,QAGxCd,EAAAA,QAAAI,cAACC,SAAM,CACLC,QA3EV,WAEEoB,EAAAA,wBAEA1C,EAAS2C,OAAOC,cAAc,KAC/B,EAuESnB,QAAQ,QAAO,kBACC,UAAS,uBACJ,QAErBT,UAAAI,cAACO,EAAeA,gBAAA,CAACC,KAAMiB,EAAOA,QAAEf,KAAK,UAIzCtB,IAAcC,GACdO,EAAC,QAAAI,cAAAC,SACC,CAAAC,QA7HR,iIAKgD,OAH9CtB,EAASM,SAASwC,cAAa,GAC/B9C,EAASM,SAASO,YAAW,GAEiB,CAAA,EAAMkC,8CAA9CC,EAAwC9C,EAAkC+C,QAEvEC,cAAclD,EAASM,SAAS6C,gBAAgBH,EAAKE,cAE9DlD,EAASM,SAAS8C,aAAa,GAAGC,OAAAC,KAAKC,MAAQ,gBAChD,EAoHO9B,QAAQ,MACRP,MAAO,CAAEQ,UAAW,eACJ,kBAAA,UACK,uBAAA,mBAEpBnB,EACCS,EAAAA,QAAAI,cAACO,EAAeA,gBAAA,CAACC,KAAMC,EAAaA,cAAEZ,UAAU,oBAAoBa,KAAK,OAEzEd,EAAAA,QAAAI,cAACO,EAAeA,gBAAA,CAACC,KAAM4B,EAAaA,cAAE1B,KAAK,QAKjDd,EAAAA,QAAAI,cAACqC,UAAQ,CAAAxC,UAAU,UAAUyC,GAAG,UAAUC,MAAM,WAGtD"}
|