@nethesis/phone-island 0.7.71 → 0.7.73
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/components/AlertGuard.js +1 -1
- package/dist/components/AlertGuard.js.map +1 -1
- package/dist/components/AlertView/Alert.js +1 -1
- package/dist/components/AlertView/Alert.js.map +1 -1
- package/dist/components/AlertView/index.js +1 -1
- package/dist/components/AlertView/index.js.map +1 -1
- package/dist/components/AudioBars.d.ts +9 -8
- package/dist/components/AudioBars.js +1 -1
- package/dist/components/AudioBars.js.map +1 -1
- package/dist/components/AudioPlayerView/Avatar.d.ts +6 -0
- package/dist/components/AudioPlayerView/Avatar.js +2 -0
- package/dist/components/AudioPlayerView/Avatar.js.map +1 -0
- package/dist/components/AudioPlayerView/Progress.d.ts +5 -0
- package/dist/components/AudioPlayerView/Progress.js +2 -0
- package/dist/components/AudioPlayerView/Progress.js.map +1 -0
- package/dist/components/AudioPlayerView/index.d.ts +5 -0
- package/dist/components/AudioPlayerView/index.js +2 -0
- package/dist/components/AudioPlayerView/index.js.map +1 -0
- package/dist/components/CallView/Actions.js +1 -1
- package/dist/components/CallView/Actions.js.map +1 -1
- package/dist/components/CallView/Avatar.js +1 -1
- package/dist/components/CallView/Avatar.js.map +1 -1
- package/dist/components/CallView/index.js +1 -1
- package/dist/components/Close.d.ts +3 -0
- package/dist/components/Close.js +2 -0
- package/dist/components/Close.js.map +1 -0
- package/dist/components/Events.js +1 -1
- package/dist/components/Events.js.map +1 -1
- package/dist/components/Island.d.ts +0 -1
- package/dist/components/Island.js +1 -1
- package/dist/components/Island.js.map +1 -1
- package/dist/components/IslandDrag.d.ts +7 -0
- package/dist/components/IslandDrag.js +2 -0
- package/dist/components/IslandDrag.js.map +1 -0
- package/dist/components/IslandMotion.d.ts +6 -0
- package/dist/components/IslandMotion.js +2 -0
- package/dist/components/IslandMotion.js.map +1 -0
- package/dist/components/KeypadView/Actions.js +1 -1
- package/dist/components/KeypadView/Actions.js.map +1 -1
- package/dist/components/Socket.js +1 -1
- package/dist/components/Socket.js.map +1 -1
- package/dist/components/TransferView/TransferActions.js +1 -1
- package/dist/components/TransferView/TransferActions.js.map +1 -1
- package/dist/components/TransferView/TransferList.js +1 -1
- package/dist/components/TransferView/TransferList.js.map +1 -1
- package/dist/components/WebRTC.js +1 -1
- package/dist/components/WebRTC.js.map +1 -1
- package/dist/events/CallEvents.js +1 -1
- package/dist/events/CallEvents.js.map +1 -1
- package/dist/events/PlayerEvents.d.ts +6 -0
- package/dist/events/PlayerEvents.js +2 -0
- package/dist/events/PlayerEvents.js.map +1 -0
- package/dist/events/index.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/lib/phone/audio.js +1 -1
- package/dist/lib/phone/audio.js.map +1 -1
- package/dist/lib/phone/call.js +1 -1
- package/dist/lib/phone/call.js.map +1 -1
- package/dist/lib/player/audio.d.ts +16 -0
- package/dist/lib/player/audio.js +2 -0
- package/dist/lib/player/audio.js.map +1 -0
- package/dist/models/audioBars.d.ts +46 -0
- package/dist/models/audioBars.js +2 -0
- package/dist/models/audioBars.js.map +1 -0
- package/dist/models/currentCall.d.ts +1 -1
- package/dist/models/currentCall.js +1 -1
- package/dist/models/currentCall.js.map +1 -1
- package/dist/models/index.d.ts +4 -2
- package/dist/models/index.js +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/island.d.ts +8 -8
- package/dist/models/island.js +1 -1
- package/dist/models/island.js.map +1 -1
- package/dist/models/motions.d.ts +280 -0
- package/dist/models/motions.js +2 -0
- package/dist/models/motions.js.map +1 -0
- package/dist/models/player.d.ts +131 -29
- package/dist/models/player.js +1 -1
- package/dist/models/player.js.map +1 -1
- package/dist/node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js +1 -1
- package/dist/node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js.map +1 -1
- package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js +1 -1
- package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js.map +1 -1
- package/dist/services/history_call.d.ts +8 -0
- package/dist/services/history_call.js +2 -0
- package/dist/services/history_call.js.map +1 -0
- package/dist/services/offhour.d.ts +9 -0
- package/dist/services/offhour.js +2 -0
- package/dist/services/offhour.js.map +1 -0
- package/dist/static/icons/PhoneKeypadLight.js +1 -1
- package/dist/static/icons/PhoneKeypadLight.js.map +1 -1
- package/dist/static/icons/PhoneKeypadSolid.js +1 -1
- package/dist/static/icons/PhoneKeypadSolid.js.map +1 -1
- package/dist/styles/Island.styles.js +1 -1
- package/dist/styles/Island.styles.js.map +1 -1
- package/dist/types/announcements.d.ts +8 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/player.d.ts +7 -0
- package/dist/utils/genericFunctions/player.d.ts +1 -0
- package/dist/utils/genericFunctions/player.js +2 -0
- package/dist/utils/genericFunctions/player.js.map +1 -0
- package/package.json +1 -1
- package/dist/models/animations.d.ts +0 -476
- package/dist/models/animations.js +0 -2
- package/dist/models/animations.js.map +0 -1
package/dist/App.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./components/Events.js"),s=require("./components/Socket.js"),r=require("./components/WebRTC.js"),o=require("./components/Island.js"),n=require("./components/RestAPI.js");require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("./components/Events.js"),s=require("./components/Socket.js"),r=require("./components/WebRTC.js"),o=require("./components/Island.js"),n=require("./components/RestAPI.js");require("./node_modules/react-redux/es/index.js");var a=require("./store/index.js");require("./node_modules/@fortawesome/react-fontawesome/index.es.js"),require("./node_modules/framer-motion/dist/framer-motion.js");var u=require("./node_modules/js-base64/base64.mjs.js"),d=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 i=l(e),m=function(e){var l=e.dataConfig,m=e.showAlways,c=void 0!==m&&m,f=u.Base64.atob(l||"").split(":"),j=f[0],p=f[1],q=f[2],x=f[3],h=f[4];return i.default.createElement(i.default.Fragment,null,i.default.createElement(d.default,{store:a.store},i.default.createElement(r.WebRTC,{hostName:j,sipExten:x,sipSecret:h},i.default.createElement(n.RestAPI,{hostName:j,username:p,authToken:q},i.default.createElement(s.Socket,{hostName:j,username:p,authToken:q},i.default.createElement(t.Events,null,i.default.createElement(o.Island,{showAlways:c})))))))};m.displayName="PhoneIsland",exports.PhoneIsland=m;
|
|
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 } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\n\ninterface PhoneIslandProps {\n dataConfig: string\n showAlways?: boolean\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({ dataConfig, showAlways = false }) => {\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\n return (\n <>\n <Provider store={store}>\n <WebRTC hostName={HOST_NAME} sipExten={SIP_EXTEN} sipSecret={SIP_SECRET}>\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Events>\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","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","React","createElement","Fragment","Provider","store","WebRTC","hostName","sipExten","sipSecret","RestAPI","username","authToken","Socket","Events","Island","displayName"],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import React, { type FC } from 'react'\nimport { Events, Socket, WebRTC, Island, RestAPI } from './components'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\nimport { Base64 } from 'js-base64'\n\ninterface PhoneIslandProps {\n dataConfig: string\n showAlways?: boolean\n}\n\nexport const PhoneIsland: FC<PhoneIslandProps> = ({ dataConfig, showAlways = false }) => {\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\n return (\n <>\n <Provider store={store}>\n <WebRTC hostName={HOST_NAME} sipExten={SIP_EXTEN} sipSecret={SIP_SECRET}>\n <RestAPI hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Socket hostName={HOST_NAME} username={USERNAME} authToken={AUTH_TOKEN}>\n <Events>\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","CONFIG","Base64","atob","split","HOST_NAME","USERNAME","AUTH_TOKEN","SIP_EXTEN","SIP_SECRET","React","createElement","Fragment","Provider","store","WebRTC","hostName","sipExten","sipSecret","RestAPI","username","authToken","Socket","Events","Island","displayName"],"mappings":"84BAWaA,EAAoC,SAACC,GAAE,IAAAC,eAAYC,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,GAAQA,EAC1EE,EAAmBC,EAAMA,OAACC,KAAKL,GAAc,IAAIM,MAAM,KACvDC,EAAoBJ,EAAO,GAC3BK,EAAmBL,EAAO,GAC1BM,EAAqBN,EAAO,GAC5BO,EAAoBP,EAAO,GAC3BQ,EAAqBR,EAAO,GAElC,OACES,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAAC,cAACE,EAAAA,QAAQ,CAACC,MAAOA,EAAAA,OACfJ,UAAAC,cAACI,EAAMA,OAAA,CAACC,SAAUX,EAAWY,SAAUT,EAAWU,UAAWT,GAC3DC,UAAAC,cAACQ,EAAOA,QAAA,CAACH,SAAUX,EAAWe,SAAUd,EAAUe,UAAWd,GAC3DG,UAAAC,cAACW,EAAMA,OAAA,CAACN,SAAUX,EAAWe,SAAUd,EAAUe,UAAWd,GAC1DG,UAAAC,cAACY,EAAAA,OAAM,KACLb,UAAAC,cAACa,EAAMA,OAAA,CAACxB,WAAYA,SAQpC,EAEAJ,EAAY6B,YAAc"}
|
|
@@ -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 n=u(e);exports.AlertGuard=function(e){var u=e.children,l=r.useSelector((function(e){return e.alerts.status})),a=l.activeAlertsCount,s=l.breakActiveAlertsCount,o=r.useSelector((function(e){return e.alerts.data})).call_transfered,c=r.useSelector((function(e){return e.island})).isOpen;return n.default.createElement(n.default.Fragment,null,a>0&&c&&n.default.createElement(t.default,null),0===s&&!o.active&&u)};
|
|
2
2
|
//# sourceMappingURL=AlertGuard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertGuard.js","sources":["../../src/components/AlertGuard.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useEffect, 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\n return (\n <>\n {activeAlertsCount > 0 && <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","React","createElement","Fragment","AlertView","active"],"mappings":"2VAe0C,SAACA,GAAE,IAAAC,EAAQD,EAAAC,SAE7CC,EAAgDC,EAAAA,aACpD,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,MAAM,IADnCC,EAAiBL,EAAAK,kBAAEC,EAAsBN,EAAAM,uBAIzCC,EAAoBN,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOK,
|
|
1
|
+
{"version":3,"file":"AlertGuard.js","sources":["../../src/components/AlertGuard.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useEffect, 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,GAAE,IAAAC,EAAQD,EAAAC,SAE7CC,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,EAAA,QAAAC,cAACE,EAAS,QAAG,MACrB,IAA3BR,IAAiCC,EAAgBQ,QAAUhB,EAGlE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../utils/genericFunctions/classNames.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../utils/genericFunctions/classNames.js"),r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),a=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(e),n={base:"pi-border-4 pi-rounded-2xl pi-p-4 pi-flex pi-gap-5 pi-items-center",red:"pi-border-red-600",orange:"pi-border-orange-600",green:"pi-border-green-600"};exports.default=function(e){var i=e.color,l=e.message;return s.default.createElement("div",{className:t.classNames(n.base,n[i])},s.default.createElement("div",{className:"pi-w-12 pi-h-12 pi-rounded-xl pi-bg-gray-300 pi-shrink-0 pi-flex pi-justify-center pi-items-center"},"green"===i?s.default.createElement(r.FontAwesomeIcon,{icon:a.faCircleCheck,size:"xl",className:"pi-text-black"}):"orange"===i?s.default.createElement(r.FontAwesomeIcon,{icon:a.faTriangleExclamation,size:"xl",className:"pi-text-black"}):s.default.createElement(r.FontAwesomeIcon,{icon:a.faCircleXmark,size:"xl",className:"pi-text-black"})),s.default.createElement("div",{className:"pi-text-sm"},l))};
|
|
2
2
|
//# sourceMappingURL=Alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../../../src/components/AlertView/Alert.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 { classNames } from '../../utils/'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faTriangleExclamation,\n faCircleCheck,\n faCircleXmark,\n} from '@nethesis/nethesis-solid-svg-icons'\n\nconst classes = {\n base: 'pi-border-4 pi-rounded-2xl pi-p-
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../../../src/components/AlertView/Alert.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 { classNames } from '../../utils/'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faTriangleExclamation,\n faCircleCheck,\n faCircleXmark,\n} from '@nethesis/nethesis-solid-svg-icons'\n\nconst classes = {\n base: 'pi-border-4 pi-rounded-2xl pi-p-4 pi-flex pi-gap-5 pi-items-center',\n red: 'pi-border-red-600',\n orange: 'pi-border-orange-600',\n green: 'pi-border-green-600',\n}\n\nconst Alert: FC<AlertProps> = ({ color, message }) => {\n return (\n <div className={classNames(classes.base, classes[color])}>\n <div className='pi-w-12 pi-h-12 pi-rounded-xl pi-bg-gray-300 pi-shrink-0 pi-flex pi-justify-center pi-items-center'>\n {color === 'green' ? (\n <FontAwesomeIcon icon={faCircleCheck} size='xl' className='pi-text-black' />\n ) : color === 'orange' ? (\n <FontAwesomeIcon icon={faTriangleExclamation} size='xl' className='pi-text-black' />\n ) : (\n <FontAwesomeIcon icon={faCircleXmark} size='xl' className='pi-text-black' />\n )}\n </div>\n <div className='pi-text-sm'>{message}</div>\n </div>\n )\n}\n\nexport default Alert\n\ninterface AlertProps {\n type: 'alert' | 'feedback'\n color: 'red' | 'orange' | 'green'\n message: string\n}\n"],"names":["classes","base","red","orange","green","_a","color","message","React","createElement","className","classNames","FontAwesomeIcon","icon","faCircleCheck","size","faTriangleExclamation","faCircleXmark"],"mappings":"iYAYMA,EAAU,CACdC,KAAM,qEACNC,IAAK,oBACLC,OAAQ,uBACRC,MAAO,uCAGqB,SAACC,OAAEC,EAAKD,EAAAC,MAAEC,EAAOF,EAAAE,QAC7C,OACEC,UAAAC,cAAA,MAAA,CAAKC,UAAWC,aAAWX,EAAQC,KAAMD,EAAQM,KAC/CE,UAAAC,cAAA,MAAA,CAAKC,UAAU,sGACF,UAAVJ,EACCE,UAAAC,cAACG,EAAAA,gBAAe,CAACC,KAAMC,EAAaA,cAAEC,KAAK,KAAKL,UAAU,kBAC9C,WAAVJ,EACFE,EAAA,QAAAC,cAACG,EAAAA,gBAAe,CAACC,KAAMG,EAAqBA,sBAAED,KAAK,KAAKL,UAAU,kBAElEF,EAAAA,sBAACI,EAAeA,gBAAA,CAACC,KAAMI,gBAAeF,KAAK,KAAKL,UAAU,mBAG9DF,EAAK,QAAAC,cAAA,MAAA,CAAAC,UAAU,cAAcH,GAGnC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./Alert.js");require("../../node_modules/react-redux/es/index.js"),require("../../node_modules/framer-motion/dist/framer-motion.js");var t=require("../../node_modules/react-redux/es/hooks/useSelector.js"),a=require("../../_virtual/framer-motion.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=o(e);exports.default=function(){var e=t.useSelector((function(e){return e.alerts}));return i.default.createElement(a.framerMotion.exports.motion.div,{className:"pi-flex pi-flex-col pi-gap-4 pi-mb-6 pi-overflow-y-auto",initial:{opacity:0},animate:{opacity:1},style:{maxHeight:"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./Alert.js");require("../../node_modules/react-redux/es/index.js"),require("../../node_modules/framer-motion/dist/framer-motion.js");var t=require("../../node_modules/react-redux/es/hooks/useSelector.js"),a=require("../../_virtual/framer-motion.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=o(e);exports.default=function(){var e=t.useSelector((function(e){return e.alerts})),o=e.data,s=e.status;return i.default.createElement(a.framerMotion.exports.motion.div,{className:"pi-flex pi-flex-col pi-gap-4 pi-mb-6 pi-overflow-y-auto pi-custom-scrollbar ".concat(s.activeAlertsCount>1&&"pi-pr-2"),initial:{opacity:0},animate:{opacity:1},style:{maxHeight:"5.5rem"}},Object.values(o).map((function(e,t){return e.active&&i.default.createElement(r.default,{key:t,type:"alert",color:e.success?"green":e.break?"red":"orange",message:e.message})})))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.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 Alert from './Alert'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { motion } from 'framer-motion/dist/framer-motion'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.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 Alert from './Alert'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\nimport { motion } from 'framer-motion/dist/framer-motion'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data, status } = useSelector((state: RootState) => state.alerts)\n\n return (\n <motion.div\n className={`pi-flex pi-flex-col pi-gap-4 pi-mb-6 pi-overflow-y-auto pi-custom-scrollbar ${\n status.activeAlertsCount > 1 && 'pi-pr-2'\n }`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n style={{\n maxHeight: '5.5rem',\n }}\n >\n {/* Show alerts */}\n {Object.values(data).map(\n (alert, index) =>\n alert.active && (\n <Alert\n key={index}\n type='alert'\n color={alert.success ? 'green' : alert.break ? 'red' : 'orange'}\n message={alert.message}\n />\n ),\n )}\n </motion.div>\n )\n}\n\nexport default AlertView\n"],"names":["_a","useSelector","state","alerts","data","status","React","createElement","motion","div","className","concat","activeAlertsCount","initial","opacity","animate","style","maxHeight","Object","values","map","alert","index","active","Alert","key","type","color","success","break","message"],"mappings":"mcAYsB,WACd,IAAAA,EAAmBC,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,MAAM,IAA/DC,SAAMC,WAEd,OACEC,EAAA,QAAAC,cAACC,EAAAA,aAAAA,QAAAA,OAAOC,IACN,CAAAC,UAAW,+EAAAC,OACTN,EAAOO,kBAAoB,GAAK,WAElCC,QAAS,CAAEC,QAAS,GACpBC,QAAS,CAAED,QAAS,GACpBE,MAAO,CACLC,UAAW,WAIZC,OAAOC,OAAOf,GAAMgB,KACnB,SAACC,EAAOC,GACN,OAAAD,EAAME,QACJjB,EAAC,QAAAC,cAAAiB,EAAAA,SACCC,IAAKH,EACLI,KAAK,QACLC,MAAON,EAAMO,QAAU,QAAUP,EAAMQ,MAAQ,MAAQ,SACvDC,QAAST,EAAMS,SAElB,IAIX"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
interface AudioBarsProps {
|
|
3
|
-
audioStream: MediaStream | null;
|
|
4
|
-
size?: 'large' | 'small';
|
|
5
|
-
}
|
|
1
|
+
import { type FC } from 'react';
|
|
6
2
|
/**
|
|
7
3
|
* This component shows a dynamic audio spectrum given an audio stream
|
|
8
4
|
*
|
|
9
|
-
* @param audioStream
|
|
10
|
-
*
|
|
5
|
+
* @param audioStream An audio stream to analyse
|
|
6
|
+
* @param audioElement An audio element to analyse
|
|
11
7
|
*/
|
|
12
|
-
export declare const AudioBars:
|
|
8
|
+
export declare const AudioBars: FC<AudioBarsProps>;
|
|
9
|
+
interface AudioBarsProps {
|
|
10
|
+
audioStream?: MediaStream | null;
|
|
11
|
+
audioElement?: HTMLAudioElement | null;
|
|
12
|
+
size?: 'large' | 'small';
|
|
13
|
+
}
|
|
13
14
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var r=require("../store/index.js"),t=require("../node_modules/react-redux/es/hooks/useDispatch.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(e),c={0:4,1:3,2:2,3:1,4:1,5:2,6:3,7:4},i={0:2,1:1,2:1,3:2};exports.AudioBars=function(n){var a=n.audioStream,o=void 0===a?null:a,s=n.audioElement,l=void 0===s?null:s,d=n.size,f=e.useRef(null),m=e.useRef(null),p="large"===d?c:i,v=e.useRef(null),y=e.useRef(null),h=e.useRef(null),E=t.useDispatch();function A(){var e,r=requestAnimationFrame(x);(e=r)&&(m.current=e)}function x(){var e;if(y&&y.current){var r=new Uint8Array(y.current.frequencyBinCount);y.current.getByteFrequencyData(r);var t=Object.values(r),n=null===(e=f.current)||void 0===e?void 0:e.children;if(n&&(null==n?void 0:n.length)>0){for(var u=0;u<Object.keys(p).length;++u){var c=t[p[u]]/255,i=n&&n[u]&&n[u].style;i&&c>0&&(i.height="".concat(100*c,"%"))}A()}}}return e.useEffect((function(){var e=r.store.getState().audioBars,t=e.audioElementContext,n=e.audioElementAnalyser,u=e.audioElementSource,c=e.isReady;return l&&c?(v.current=t,y.current=n,h.current=u):(v.current=new AudioContext,y.current=v.current.createAnalyser(),y.current.smoothingTimeConstant=.8,y.current.fftSize=32,o?h.current=v.current.createMediaStreamSource(o):l&&(h.current=v.current.createMediaElementSource(l),E.audioBars.setAudioElementContext(v.current),E.audioBars.setAudioElementAnalyser(y.current),E.audioBars.setAudioElementSource(h.current),E.audioBars.setIsReady(!0))),y.current&&h.current&&h.current.connect(y.current),v.current&&y.current&&y.current.connect(v.current.destination),A(),function(){var e,r;m.current&&cancelAnimationFrame(m.current),null===(e=h.current)||void 0===e||e.disconnect(),null===(r=y.current)||void 0===r||r.disconnect()}}),[]),e.useEffect((function(){m.current&&(cancelAnimationFrame(m.current),A())}),[d]),u.default.createElement("div",{className:"".concat("small"===d?"pi-h-6 pi-w-6":"pi-h-12 pi-w-12"," pi-flex pi-justify-center pi-items-center")},u.default.createElement("div",{className:"".concat("small"===d?"pi-h-6":"pi-h-8"," pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden"),ref:f},(o||l)&&Object.keys(p).map((function(e){return u.default.createElement("span",{key:e,className:"pi-bg-emerald-600 pi-w-0.5 pi-rounded-sm"})}))))};
|
|
2
2
|
//# sourceMappingURL=AudioBars.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBars.js","sources":["../../src/components/AudioBars.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { useEffect, useRef } from 'react'\
|
|
1
|
+
{"version":3,"file":"AudioBars.js","sources":["../../src/components/AudioBars.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 } from 'react'\nimport { ContextSourceType } from '../models/audioBars'\nimport { useDispatch } from 'react-redux'\nimport { store } from '../store'\nimport { Dispatch } from '../store'\n\nconst large = {\n 0: 4,\n 1: 3,\n 2: 2,\n 3: 1,\n 4: 1,\n 5: 2,\n 6: 3,\n 7: 4,\n}\n\nconst small = {\n 0: 2,\n 1: 1,\n 2: 1,\n 3: 2,\n}\n\n/**\n * This component shows a dynamic audio spectrum given an audio stream\n *\n * @param audioStream An audio stream to analyse\n * @param audioElement An audio element to analyse\n */\nexport const AudioBars: FC<AudioBarsProps> = ({\n audioStream = null,\n audioElement = null,\n size,\n}) => {\n // Initialize the main elements\n const containerElement = useRef<HTMLDivElement | null>(null)\n const animationRequest = useRef<number | null>(null)\n const barsMap: BarsMapType = size === 'large' ? large : small\n const context = useRef<AudioContext | null>(null)\n const analyser = useRef<AnalyserNode | null>(null)\n const source = useRef<ContextSourceType>(null)\n const dispatch = useDispatch<Dispatch>()\n\n function saveAnimationRequest(requestId: number) {\n if (requestId) {\n animationRequest.current = requestId\n }\n }\n\n function startAnimation() {\n const animationRequestId: number = requestAnimationFrame(animationFrame)\n saveAnimationRequest(animationRequestId)\n }\n\n // The function that renders the frames of animation\n function animationFrame() {\n if (analyser && analyser.current) {\n const frequencyData = new Uint8Array(analyser.current.frequencyBinCount)\n analyser.current.getByteFrequencyData(frequencyData)\n const values = Object.values(frequencyData)\n\n const bars = containerElement.current?.children\n if (bars && bars?.length > 0) {\n // Change styles to every bar\n for (let i = 0; i < Object.keys(barsMap).length; ++i) {\n const value = values[barsMap[i]] / 255\n // @ts-ignore\n const barStyles = bars && bars[i] && bars[i].style\n if (barStyles && value > 0) {\n barStyles.height = `${100 * value}%`\n }\n }\n startAnimation()\n }\n }\n }\n\n useEffect(() => {\n const { audioElementContext, audioElementAnalyser, audioElementSource, isReady } =\n store.getState().audioBars\n // Initialize audio context and analyser once\n if (audioElement && isReady) {\n // The source is an audio element\n context.current = audioElementContext\n analyser.current = audioElementAnalyser\n source.current = audioElementSource\n } else {\n // The source is an audio stream\n context.current = new AudioContext()\n analyser.current = context.current.createAnalyser()\n analyser.current.smoothingTimeConstant = 0.8\n analyser.current.fftSize = 32\n // Create the media source stream\n if (audioStream) {\n source.current = context.current.createMediaStreamSource(audioStream)\n } else if (audioElement) {\n source.current = context.current.createMediaElementSource(audioElement)\n // Save the audio elements to stores\n dispatch.audioBars.setAudioElementContext(context.current)\n dispatch.audioBars.setAudioElementAnalyser(analyser.current)\n dispatch.audioBars.setAudioElementSource(source.current)\n dispatch.audioBars.setIsReady(true)\n }\n }\n\n // Connect the audio source to the analyser\n analyser.current && source.current && source.current.connect(analyser.current)\n context.current && analyser.current && analyser.current.connect(context.current.destination)\n startAnimation()\n\n // Cleanup bars animation\n return () => {\n animationRequest.current && cancelAnimationFrame(animationRequest.current)\n source.current?.disconnect()\n analyser.current?.disconnect()\n }\n }, [])\n\n useEffect(() => {\n if (animationRequest.current) {\n cancelAnimationFrame(animationRequest.current)\n startAnimation()\n }\n }, [size])\n\n return (\n <div\n className={`${\n size === 'small' ? 'pi-h-6 pi-w-6' : 'pi-h-12 pi-w-12'\n } pi-flex pi-justify-center pi-items-center`}\n >\n {/* The bars container */}\n <div\n className={`${\n size === 'small' ? 'pi-h-6' : 'pi-h-8'\n } pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden`}\n ref={containerElement}\n >\n {/* Every single bar */}\n {(audioStream || audioElement) &&\n Object.keys(barsMap).map((key) => (\n <span key={key} className='pi-bg-emerald-600 pi-w-0.5 pi-rounded-sm'></span>\n ))}\n </div>\n </div>\n )\n}\n\ninterface AudioBarsProps {\n audioStream?: MediaStream | null\n audioElement?: HTMLAudioElement | null\n size?: 'large' | 'small'\n}\n\ninterface BarsMapType {\n [key: number]: number\n}\n"],"names":["large","small","_a","_b","audioStream","_c","audioElement","size","containerElement","useRef","animationRequest","barsMap","context","analyser","source","dispatch","useDispatch","startAnimation","requestId","animationRequestId","requestAnimationFrame","animationFrame","current","frequencyData","Uint8Array","frequencyBinCount","getByteFrequencyData","values","Object","bars","children","length","i","keys","value","barStyles","style","height","concat","useEffect","store","getState","audioBars","audioElementContext","audioElementAnalyser","audioElementSource","isReady","AudioContext","createAnalyser","smoothingTimeConstant","fftSize","createMediaStreamSource","createMediaElementSource","setAudioElementContext","setAudioElementAnalyser","setAudioElementSource","setIsReady","connect","destination","cancelAnimationFrame","disconnect","React","createElement","className","ref","map","key"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),t=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js");require("../../node_modules/framer-motion/dist/framer-motion.js"),require("../../node_modules/react-redux/es/index.js");var o=require("../../node_modules/react-redux/es/hooks/useSelector.js"),i=require("../../_virtual/framer-motion.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e);exports.Avatar=function(e){var n=e.type,a=o.useSelector((function(e){return e.island})).isOpen;return s.default.createElement(i.framerMotion.exports.motion.div,{animate:a?{width:"48px",height:"48px",borderRadius:"12px"}:{width:"24px",height:"24px",borderRadius:"6px"},className:"pi-w-12 pi-h-12 pi-bg-gray-500 pi-rounded-xl pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-flex-grow-0"},"announcement"===n?s.default.createElement(r.FontAwesomeIcon,{size:a?"2xl":"lg",icon:t.faBullhorn}):"call_recording"===n?s.default.createElement(r.FontAwesomeIcon,{size:a?"2xl":"lg",icon:t.faVoicemail}):s.default.createElement(r.FontAwesomeIcon,{size:a?"2xl":"lg",icon:t.faMusic}))};
|
|
2
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../src/components/AudioPlayerView/Avatar.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 { type TypeTypes } from '../../types'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faBullhorn, faVoicemail, faMusic } from '@nethesis/nethesis-solid-svg-icons'\nimport { motion } from 'framer-motion/dist/framer-motion'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\n\nexport const Avatar: FC<AvatarProps> = ({ type }) => {\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n return (\n <motion.div\n animate={\n isOpen\n ? { width: '48px', height: '48px', borderRadius: '12px' }\n : { width: '24px', height: '24px', borderRadius: '6px' }\n }\n className='pi-w-12 pi-h-12 pi-bg-gray-500 pi-rounded-xl pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-flex-grow-0'\n >\n {type === 'announcement' ? (\n <FontAwesomeIcon size={isOpen ? '2xl' : 'lg'} icon={faBullhorn} />\n ) : type === 'call_recording' ? (\n <FontAwesomeIcon size={isOpen ? '2xl' : 'lg'} icon={faVoicemail} />\n ) : (\n <FontAwesomeIcon size={isOpen ? '2xl' : 'lg'} icon={faMusic} />\n )}\n </motion.div>\n )\n}\n\nexport interface AvatarProps {\n type?: TypeTypes | null\n}\n"],"names":["_a","type","isOpen","useSelector","state","island","React","motion","div","animate","width","height","borderRadius","className","createElement","FontAwesomeIcon","size","icon","faBullhorn","faVoicemail","faMusic"],"mappings":"qkBAWuC,SAACA,GAAE,IAAAC,EAAID,EAAAC,KACpCC,EAAWC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,iBAE3D,OACEC,EAAAA,sBAACC,EAAAA,aAAAA,QAAAA,OAAOC,IACN,CAAAC,QACEP,EACI,CAAEQ,MAAO,OAAQC,OAAQ,OAAQC,aAAc,QAC/C,CAAEF,MAAO,OAAQC,OAAQ,OAAQC,aAAc,OAErDC,UAAU,0HAEA,iBAATZ,EACCK,EAAAA,QAAAQ,cAACC,kBAAgB,CAAAC,KAAMd,EAAS,MAAQ,KAAMe,KAAMC,EAAUA,aACnD,mBAATjB,EACFK,UAAAQ,cAACC,EAAeA,gBAAC,CAAAC,KAAMd,EAAS,MAAQ,KAAMe,KAAME,EAAAA,cAEpDb,wBAACS,EAAeA,gBAAA,CAACC,KAAMd,EAAS,MAAQ,KAAMe,KAAMG,EAAAA,UAI5D"}
|
|
@@ -0,0 +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("../../utils/genericFunctions/player.js"),r=require("../../node_modules/react-redux/es/hooks/useSelector.js"),a=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=u(e),o=function(){var u=r.useSelector((function(e){return e.player})),o=u.audioPlayer,i=u.audioPlayerPlaying,s=u.audioPlayerTrackDuration,c=e.useRef(),l=e.useRef(),d=e.useState("00:00"),f=d[0],m=d[1],p=e.useState(),v=p[0],y=p[1],g=a.useDispatch(),x=e.useState(s&&Math.round(s)||0),h=x[0],E=x[1],P=e.useCallback((function(){var e,r=null===(e=null==o?void 0:o.current)||void 0===e?void 0:e.currentTime;r&&m(t.formatTime(Math.round(r))),c.current.value=r,h&&r&&c.current.style.setProperty("--range-progress","".concat(r/h*100,"%")),l.current=requestAnimationFrame(P)}),[o,h,c]);return e.useEffect((function(){i?l.current=requestAnimationFrame(P):cancelAnimationFrame(l.current)}),[i]),e.useEffect((function(){s&&(E(Math.round(s)),y(t.formatTime(s)))}),[s]),e.useEffect((function(){return function(){cancelAnimationFrame(l.current)}}),[]),n.default.createElement(n.default.Fragment,null,n.default.createElement("input",{"data-stop-propagation":!0,ref:c,defaultValue:0,type:"range",step:"1",min:"0",max:h&&h||0,className:"pi-custom-range",onChange:function(){g.player.setAudioPlayerCurrentTime(c.current.value)}}),n.default.createElement("div",{className:"pi-flex pi-justify-between pi-mt-1"},n.default.createElement("div",{className:"pi-font-bold"},f),n.default.createElement("div",{className:"pi-font-bold"},v)))};exports.Progress=o,exports.default=o;
|
|
2
|
+
//# sourceMappingURL=Progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Progress.js","sources":["../../../src/components/AudioPlayerView/Progress.tsx"],"sourcesContent":["import React, { type FC, useState, useEffect, useRef, useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { formatTime } from '../../utils/genericFunctions/player'\nimport { useDispatch } from 'react-redux'\n\nexport const Progress: FC<ProgressTypes> = () => {\n const { audioPlayer, audioPlayerPlaying, audioPlayerTrackDuration } = useSelector(\n (state: RootState) => state.player,\n )\n const progressBarRef = useRef<any>()\n const progressAnimationRef = useRef<any>()\n const [timeProgress, setTimeProgress] = useState<string>('00:00')\n const [displayDuration, setDisplayDuration] = useState<string>()\n const dispatch = useDispatch<Dispatch>()\n const [trackDuration, setTrackDuration] = useState<number>(\n (audioPlayerTrackDuration && Math.round(audioPlayerTrackDuration)) || 0,\n )\n\n const progressAnimation = useCallback(() => {\n const currentTime = audioPlayer?.current?.currentTime\n currentTime && setTimeProgress(formatTime(Math.round(currentTime)))\n progressBarRef.current.value = currentTime\n trackDuration &&\n currentTime &&\n progressBarRef.current.style.setProperty(\n '--range-progress',\n `${(currentTime / trackDuration) * 100}%`,\n )\n progressAnimationRef.current = requestAnimationFrame(progressAnimation)\n }, [audioPlayer, trackDuration, progressBarRef])\n\n useEffect(() => {\n if (audioPlayerPlaying) {\n progressAnimationRef.current = requestAnimationFrame(progressAnimation)\n } else {\n cancelAnimationFrame(progressAnimationRef.current)\n }\n }, [audioPlayerPlaying])\n\n useEffect(() => {\n if (audioPlayerTrackDuration) {\n setTrackDuration(Math.round(audioPlayerTrackDuration))\n setDisplayDuration(formatTime(audioPlayerTrackDuration))\n }\n }, [audioPlayerTrackDuration])\n\n useEffect(() => {\n return () => {\n cancelAnimationFrame(progressAnimationRef.current)\n }\n }, [])\n\n function handleProgressChange() {\n dispatch.player.setAudioPlayerCurrentTime(progressBarRef.current.value)\n }\n\n return (\n <>\n <input\n data-stop-propagation={true}\n ref={progressBarRef}\n defaultValue={0}\n type='range'\n step='1'\n min='0'\n max={(trackDuration && trackDuration) || 0}\n className='pi-custom-range'\n onChange={handleProgressChange}\n />\n <div className='pi-flex pi-justify-between pi-mt-1'>\n <div className='pi-font-bold'>{timeProgress}</div>\n <div className='pi-font-bold'>{displayDuration}</div>\n </div>\n </>\n )\n}\n\nexport default Progress\n\nexport interface ProgressTypes {}\n"],"names":["Progress","_a","useSelector","state","player","audioPlayer","audioPlayerPlaying","audioPlayerTrackDuration","progressBarRef","useRef","progressAnimationRef","_b","useState","timeProgress","setTimeProgress","_c","displayDuration","setDisplayDuration","dispatch","useDispatch","_d","Math","round","trackDuration","setTrackDuration","progressAnimation","useCallback","currentTime","current","formatTime","value","style","setProperty","requestAnimationFrame","useEffect","cancelAnimationFrame","React","createElement","Fragment","ref","defaultValue","type","step","min","max","className","onChange","setAudioPlayerCurrentTime"],"mappings":"oaAMaA,EAA8B,WACnC,IAAAC,EAAgEC,EAAAA,aACpE,SAACC,GAAqB,OAAAA,EAAMC,UADtBC,EAAWJ,EAAAI,YAAEC,EAAkBL,EAAAK,mBAAEC,EAAwBN,EAAAM,yBAG3DC,EAAiBC,EAAAA,SACjBC,EAAuBD,EAAAA,SACvBE,EAAkCC,EAAAA,SAAiB,SAAlDC,EAAYF,EAAA,GAAEG,EAAeH,EAAA,GAC9BI,EAAwCH,aAAvCI,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GACpCG,EAAWC,EAAAA,cACXC,EAAoCR,EAAAA,SACvCL,GAA4Bc,KAAKC,MAAMf,IAA8B,GADjEgB,EAAaH,EAAA,GAAEI,EAAgBJ,EAAA,GAIhCK,EAAoBC,EAAAA,aAAY,iBAC9BC,EAAoC,QAAtB1B,EAAAI,aAAA,EAAAA,EAAauB,eAAS,IAAA3B,OAAA,EAAAA,EAAA0B,YAC1CA,GAAeb,EAAgBe,aAAWR,KAAKC,MAAMK,KACrDnB,EAAeoB,QAAQE,MAAQH,EAC/BJ,GACEI,GACAnB,EAAeoB,QAAQG,MAAMC,YAC3B,mBACA,UAAIL,EAAcJ,EAAiB,IAAG,MAE1Cb,EAAqBkB,QAAUK,sBAAsBR,EACtD,GAAE,CAACpB,EAAakB,EAAef,IA2BhC,OAzBA0B,EAAAA,WAAU,WACJ5B,EACFI,EAAqBkB,QAAUK,sBAAsBR,GAErDU,qBAAqBzB,EAAqBkB,QAE9C,GAAG,CAACtB,IAEJ4B,EAAAA,WAAU,WACJ3B,IACFiB,EAAiBH,KAAKC,MAAMf,IAC5BU,EAAmBY,EAAAA,WAAWtB,IAElC,GAAG,CAACA,IAEJ2B,EAAAA,WAAU,WACR,OAAO,WACLC,qBAAqBzB,EAAqBkB,QAC5C,CACD,GAAE,IAODQ,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAAC,cAAA,QAAA,CAAA,yBACyB,EACvBE,IAAK/B,EACLgC,aAAc,EACdC,KAAK,QACLC,KAAK,IACLC,IAAI,IACJC,IAAMrB,GAAiBA,GAAkB,EACzCsB,UAAU,kBACVC,SAfN,WACE5B,EAASd,OAAO2C,0BAA0BvC,EAAeoB,QAAQE,MAClE,IAeGM,EAAAA,QAAKC,cAAA,MAAA,CAAAQ,UAAU,sCACbT,EAAA,QAAAC,cAAA,MAAA,CAAKQ,UAAU,gBAAgBhC,GAC/BuB,UAAKC,cAAA,MAAA,CAAAQ,UAAU,gBAAgB7B,IAIvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("./Avatar.js"),a=require("../AudioBars.js"),r=require("./Progress.js"),l=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"),u=require("../../node_modules/react-redux/es/hooks/useSelector.js"),n=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(e),c=function(){var e=u.useSelector((function(e){return e.player})),o=e.audioPlayerTrackType,c=e.audioPlayerTrackName,p=e.audioPlayer,f=e.audioPlayerPlaying,m=u.useSelector((function(e){return e.island})).isOpen,x=n.useDispatch();return d.default.createElement("div",{className:"pi-flex pi-gap-7 pi-flex-col"},d.default.createElement("div",{className:"pi-flex pi-gap-4"},d.default.createElement(t.Avatar,{type:o}),d.default.createElement("div",{className:"pi-flex pi-items-center pi-w-full"},d.default.createElement("div",{style:{width:m?"202px":"60px"},className:"pi-text-base pi-overflow-hidden pi-text-ellipsis pi-whitespace-nowrap pi-inline-block"},c)),d.default.createElement(a.AudioBars,{audioElement:p&&p.current,size:m?"large":"small"})),m&&d.default.createElement("div",null,d.default.createElement(r.Progress,null),d.default.createElement("div",{className:"pi-w-full pi-flex pi-justify-center pi-items-center pi-mt-6"},d.default.createElement(l.Button,{onClick:f?function(){x.player.pauseAudioPlayer()}:function(){x.player.startAudioPlayer()},variant:"default",className:"pi-scale-110"},f?d.default.createElement(i.FontAwesomeIcon,{icon:s.faPause,size:"xl"}):d.default.createElement(i.FontAwesomeIcon,{icon:s.faPlay,size:"xl"})))))};exports.KeypadView=c,exports.default=c;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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-mt-6'>\n <Button\n onClick={audioPlayerPlaying ? pausePlaying : startPlaying}\n variant='default'\n className='pi-scale-110'\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","FontAwesomeIcon","icon","faPause","faPlay"],"mappings":"snBAaaA,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,EAAA,QAAAC,cAACW,EAAMA,OAAA,CACLC,QAASlB,EA5BrB,WACEG,EAASP,OAAOuB,kBACjB,EAND,WACEhB,EAASP,OAAOwB,kBACjB,EA+BWC,QAAQ,UACRd,UAAU,gBAETP,EACCK,EAAAA,QAAAC,cAACgB,EAAeA,gBAAA,CAACC,KAAMC,EAAAA,QAAST,KAAK,OAErCV,EAAAA,QAAAC,cAACgB,EAAeA,gBAAA,CAACC,KAAME,EAAAA,OAAQV,KAAK,UAQpD"}
|
|
@@ -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"),r=require("../../lib/phone/call.js"),n=require("../../static/icons/PhoneKeypadLight.js"),a=require("../../static/icons/PhoneKeypadSolid.js");require("../../node_modules/react-redux/es/index.js")
|
|
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"),r=require("../../lib/phone/call.js"),n=require("../../static/icons/PhoneKeypadLight.js"),a=require("../../static/icons/PhoneKeypadSolid.js");require("../../node_modules/react-redux/es/index.js");var s=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 o=require("../../static/outgoing_ringtone.js");require("../Island.js");var l=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-redux/es/hooks/useSelector.js"),m=require("../../node_modules/react-redux/es/hooks/useDispatch.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var j=p(e);exports.default=function(){var e=f.useSelector((function(e){return e.currentCall})),p=e.paused,q=e.muted,v=f.useSelector((function(e){return e.island})).view,w=f.useSelector((function(e){return e.currentCall})).transferring,x=m.useDispatch();return j.default.createElement(j.default.Fragment,null,j.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"},j.default.createElement(l.Button,{variant:"default",active:!!p,onClick:function(){return p?r.unpauseCurrentCall():r.pauseCurrentCall()}},p?j.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:c.faPlay}):j.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faPause})),j.default.createElement(l.Button,{variant:"default",active:!!q,onClick:function(){return q?r.unmuteCurrentCall():r.muteCurrentCall()}},q?j.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:c.faMicrophoneSlash}):j.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faMicrophone})),j.default.createElement(l.Button,{active:w,onClick:w?function(){i.sendDTMF("*"),s.store.getState().player.audioPlayerPlaying||x.player.updateStartAudioPlayer({src:o.default,loop:!0}),setTimeout((function(){i.sendDTMF("1"),x.player.stopAudioPlayer()}),500)}:function(){x.island.setIslandView("transfer"!==v?"transfer":"call")},variant:"default"},w?j.default.createElement(u.FontAwesomeIcon,{className:"",size:"xl",icon:c.faArrowDownUpAcrossLine}):j.default.createElement(u.FontAwesomeIcon,{size:"xl",icon:t.faArrowDownArrowUp})),j.default.createElement(l.Button,{active:"keypad"===v,variant:"default",onClick:function(){x.island.setIslandView("keypad"!==v?"keypad":"call")}},"keypad"===v?j.default.createElement(a.default,null):j.default.createElement(n.default,null))),w&&j.default.createElement(d.TransferActions,null))};
|
|
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} 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} 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'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted } = useSelector((state: RootState) => state.currentCall)\n\n // Get isOpen and view from island store\n const { view } = useSelector((state: RootState) => state.island)\n const { transferring } = useSelector((state: RootState) => state.currentCall)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n }\n\n function transfer() {\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\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.
|
|
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} 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} 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'\n\nconst Actions: FC = () => {\n // Get multiple values from currentCall store\n const { paused, muted } = useSelector((state: RootState) => state.currentCall)\n\n // Get isOpen and view from island store\n const { view } = useSelector((state: RootState) => state.island)\n const { transferring } = useSelector((state: RootState) => state.currentCall)\n\n const dispatch = useDispatch<Dispatch>()\n\n function openKeypad() {\n dispatch.island.setIslandView(view !== 'keypad' ? 'keypad' : 'call')\n }\n\n function transfer() {\n dispatch.island.setIslandView(view !== 'transfer' ? 'transfer' : 'call')\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 }, 500)\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 >\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 >\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 >\n {transferring ? (\n <FontAwesomeIcon className='' size='xl' icon={faArrowDownUpAcrossLine} />\n ) : (\n <FontAwesomeIcon size='xl' icon={faArrowDownArrowUp} />\n )}\n </Button>\n <Button active={view === 'keypad'} variant='default' onClick={openKeypad}>\n {view === 'keypad' ? <PhoneKeypadSolid /> : <PhoneKeypadLight />}\n </Button>\n </div>\n {transferring && <TransferActions />}\n </>\n )\n}\n\nexport default Actions\n"],"names":["_a","useSelector","state","currentCall","paused","muted","view","island","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","setIslandView","faArrowDownUpAcrossLine","faArrowDownArrowUp","PhoneKeypadSolid","PhoneKeypadLight","TransferActions"],"mappings":"uwCA+BoB,WAEZ,IAAAA,EAAoBC,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,WAAW,IAArEC,WAAQC,UAGRC,EAASL,eAAY,SAACC,GAAqB,OAAAA,EAAMK,eACjDC,EAAiBP,eAAY,SAACC,GAAqB,OAAAA,EAAMC,4BAE3DM,EAAWC,EAAAA,cA2BjB,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACEF,EAAAA,QAAKC,cAAA,MAAA,CAAAE,UAAU,sHACbH,EAAA,QAAAC,cAACG,SAAM,CACLC,QAAQ,UACRC,SAAQb,EACRc,QAAS,WAAM,OAACd,EAASe,EAAAA,qBAAuBC,EAAAA,qBAE/ChB,EACCO,EAAA,QAAAC,cAACS,kBAAe,CAACC,KAAK,KAAKC,KAAMC,EAAAA,SAEjCb,EAAA,QAAAC,cAACS,EAAeA,gBAAC,CAAAC,KAAK,KAAKC,KAAME,EAAAA,WAGrCd,EAAA,QAAAC,cAACG,SAAM,CACLC,QAAQ,UACRC,SAAQZ,EACRa,QAAS,WAAM,OAACb,EAAQqB,EAAAA,oBAAsBC,EAAAA,oBAE7CtB,EACCM,EAAA,QAAAC,cAACS,kBAAe,CAACC,KAAK,KAAKC,KAAMK,EAAAA,oBAEjCjB,EAAA,QAAAC,cAACS,EAAeA,gBAAC,CAAAC,KAAK,KAAKC,KAAMM,EAAAA,gBAGrClB,EAAC,QAAAC,cAAAG,EAAMA,OACL,CAAAE,OAAQT,EACRU,QAASV,EA3CjB,WACEsB,EAAQA,SAAC,KACsBC,EAAKA,MAACC,WAAWC,OAAMC,oBAGpDzB,EAASwB,OAAOE,uBAAuB,CACrCC,IAAKC,EAAgB,QACrBC,MAAM,IAGVC,YAAW,WACTT,EAAQA,SAAC,KACTrB,EAASwB,OAAOO,iBACjB,GAAE,IACJ,EAnBD,WACE/B,EAASF,OAAOkC,cAAuB,aAATnC,EAAsB,WAAa,OAClE,EA+COU,QAAQ,WAEPR,EACCG,EAAAA,QAACC,cAAAS,EAAeA,gBAAC,CAAAP,UAAU,GAAGQ,KAAK,KAAKC,KAAMmB,EAAAA,0BAE9C/B,EAAC,QAAAC,cAAAS,EAAeA,gBAAC,CAAAC,KAAK,KAAKC,KAAMoB,EAAAA,sBAGrChC,EAAAA,QAAAC,cAACG,SAAM,CAACE,OAAiB,WAATX,EAAmBU,QAAQ,UAAUE,QA7D3D,WACET,EAASF,OAAOkC,cAAuB,WAATnC,EAAoB,SAAW,OAC9D,GA4DiB,WAATA,EAAoBK,wBAACiC,EAAAA,QAAgB,MAAMjC,EAAA,QAAAC,cAACiC,EAAAA,QAAgB,QAGhErC,GAAgBG,EAAAA,QAACC,cAAAkC,EAAAA,gBAAkB,MAG1C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/framer-motion/dist/framer-motion.js"),require("../../node_modules/react-redux/es/index.js");var r=require("../../node_modules/react-redux/es/hooks/useSelector.js"),t=require("../../_virtual/framer-motion.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=i(e),a={open:{width:"48px",height:"48px",borderRadius:"12px"},closed:{width:"24px",height:"24px",borderRadius:"6px"}};exports.default=function(){var e=r.useSelector((function(e){return e.currentCall})).username,i=r.useSelector((function(e){return e.avatars})).avatars,n=r.useSelector((function(e){return e.island})).isOpen,u=r.useSelector((function(e){return e.currentCall})),s=u.incoming,p=u.outgoing,c=u.accepted;return o.default.createElement(t.framerMotion.exports.motion.div,{className:"pi-relative",animate:n?"open":"closed",variants:a},(s||p&&!c)&&o.default.createElement(t.framerMotion.exports.motion.div,{style:{animation:"ping 2s cubic-bezier(0, 0, 0.2, 1) infinite",borderRadius:"4px"},animate:n?"open":"closed",variants:a,className:"pi-rounded-xl pi-bg-white pi-absolute pi-opacity-60 -pi-z-10 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12"}),o.default.createElement(t.framerMotion.exports.motion.div,{className:"pi-z-10 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover",style:{backgroundImage:"url(".concat(i&&i[e]&&i[e],")"),backgroundRepeat:"no-repeat",backgroundSize:"contain"},animate:n?"open":"closed",variants:a}))};
|
|
2
2
|
//# sourceMappingURL=Avatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../../../src/components/CallView/Avatar.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport {
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../src/components/CallView/Avatar.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 { motion } from 'framer-motion/dist/framer-motion'\nimport { useSelector } from 'react-redux'\nimport { RootState } from '../../store'\n\nconst iconVariants = {\n open: {\n width: '48px',\n height: '48px',\n borderRadius: '12px',\n },\n closed: {\n width: '24px',\n height: '24px',\n borderRadius: '6px',\n },\n}\n\nconst Avatar: FC = () => {\n // Get multiple values from currentCall store\n const { username } = useSelector((state: RootState) => state.currentCall)\n\n // Get avatars from avatars store\n const { avatars } = useSelector((state: RootState) => state.avatars)\n\n // Get isOpen from island store\n const { isOpen } = useSelector((state: RootState) => state.island)\n\n // Get multiple values from currentCall store\n const { incoming, outgoing, accepted } = useSelector((state: RootState) => state.currentCall)\n\n return (\n <motion.div className='pi-relative' animate={isOpen ? 'open' : 'closed'} variants={iconVariants}>\n {(incoming || (outgoing && !accepted)) && (\n // The background pulse effect\n <motion.div\n style={{\n animation: 'ping 2s cubic-bezier(0, 0, 0.2, 1) infinite',\n borderRadius: '4px',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n className={`pi-rounded-xl pi-bg-white pi-absolute pi-opacity-60 -pi-z-10 pi-top-0 pi-left-0 pi-animate-ping pi-h-12 pi-w-12`}\n ></motion.div>\n )}\n <motion.div\n className='pi-z-10 pi-h-12 pi-w-12 pi-bg-gray-300 pi-rounded-sm pi-bg-cover'\n style={{\n backgroundImage: `url(${avatars && avatars[username] && avatars[username]})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n }}\n animate={isOpen ? 'open' : 'closed'}\n variants={iconVariants}\n />\n </motion.div>\n )\n}\n\nexport default Avatar\n"],"names":["iconVariants","open","width","height","borderRadius","closed","username","useSelector","state","currentCall","avatars","isOpen","island","_a","incoming","outgoing","accepted","React","createElement","motion","div","className","animate","variants","style","animation","backgroundImage","concat","backgroundRepeat","backgroundSize"],"mappings":"2ZAQMA,EAAe,CACnBC,KAAM,CACJC,MAAO,OACPC,OAAQ,OACRC,aAAc,QAEhBC,OAAQ,CACNH,MAAO,OACPC,OAAQ,OACRC,aAAc,wBAIC,WAET,IAAAE,EAAaC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,wBAGrDC,EAAYH,eAAY,SAACC,GAAqB,OAAAA,EAAME,mBAGpDC,EAAWJ,eAAY,SAACC,GAAqB,OAAAA,EAAMI,iBAGrDC,EAAmCN,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMC,eAAzEK,EAAQD,EAAAC,SAAEC,EAAQF,EAAAE,SAAEC,EAAQH,EAAAG,SAEpC,OACEC,EAAC,QAAAC,cAAAC,8BAAOC,KAAIC,UAAU,cAAcC,QAASX,EAAS,OAAS,SAAUY,SAAUvB,IAC/Ec,GAAaC,IAAaC,IAE1BC,EAAAA,QAAAC,cAACC,EAAAA,aAAAA,QAAAA,OAAOC,IAAG,CACTI,MAAO,CACLC,UAAW,8CACXrB,aAAc,OAEhBkB,QAASX,EAAS,OAAS,SAC3BY,SAAUvB,EACVqB,UAAW,oHAGfJ,EAAC,QAAAC,cAAAC,8BAAOC,IAAG,CACTC,UAAU,mEACVG,MAAO,CACLE,gBAAiB,OAAAC,OAAOjB,GAAWA,EAAQJ,IAAaI,EAAQJ,GAAY,KAC5EsB,iBAAkB,YAClBC,eAAgB,WAElBP,QAASX,EAAS,OAAS,SAC3BY,SAAUvB,IAIlB"}
|
|
@@ -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 r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),l=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),i=require("../../lib/phone/call.js");require("../../node_modules/socket.io-client/build/esm/index.js"),require("../../
|
|
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 r=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),l=require("../../node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js"),i=require("../../lib/phone/call.js");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"),require("../../node_modules/mic-check/lib/index.js"),require("../Island.js");var a=require("../Button.js"),n=require("../AudioBars.js");require("../../node_modules/framer-motion/dist/framer-motion.js");var u=require("./Timer.js"),s=require("./Number.js"),d=require("./DisplayName.js"),o=require("./Avatar.js"),c=require("./Actions.js"),m=require("../Hangup.js"),f=require("../../node_modules/react-redux/es/hooks/useSelector.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var j=p(e);function q(e,t){return!e&&!t}exports.default=function(){var e=f.useSelector((function(e){return e.currentCall})),p=e.incoming,g=e.accepted,E=e.outgoing,v=e.startTime,y=f.useSelector((function(e){return e.island})).isOpen,_=f.useSelector((function(e){return e.webrtc})).remoteAudioStream;return j.default.createElement(t.StyledCallView,{incoming:p,accepted:g,outgoing:E,isOpen:y},j.default.createElement(t.StyledTopContent,{isOpen:y,incoming:p,accepted:g,outgoing:E},j.default.createElement(o.default,null),y&&j.default.createElement(t.StyledDetails,null,j.default.createElement(d.default,null),g?j.default.createElement(u.default,{startTime:v}):j.default.createElement(s.default,null)),!y&&!g&&j.default.createElement(d.default,null),!y&&g&&j.default.createElement(u.default,{startTime:v}),g&&_&&j.default.createElement(n.AudioBars,{audioStream:_,size:y?"large":"small"})),y&&j.default.createElement("div",{className:"pi-grid pi-gap-y-5"},g&&j.default.createElement(c.default,null),j.default.createElement("div",{className:"pi-grid ".concat(q(E,g)?"pi-grid-cols-2":g?"pi-grid-cols-1 pi-justify-items-center":"pi-grid-cols-1 pi-justify-items-end"," pi-gap-3.5")},j.default.createElement(m.default,null),q(E,g)&&j.default.createElement(a.Button,{onClick:i.answerIncomingCall,variant:"green"},j.default.createElement(r.FontAwesomeIcon,{className:"pi-w-6 pi-h-6",icon:l.faPhone})))))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"),r=require("../node_modules/@fortawesome/react-fontawesome/index.es.js");require("../node_modules/react-redux/es/index.js");var s=require("../node_modules/react-redux/es/hooks/useSelector.js"),i=require("../node_modules/react-redux/es/hooks/useDispatch.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=n(e),o=function(){var e=s.useSelector((function(e){return e.island})).view,n=s.useSelector((function(e){return e.player})).audioPlayerPlaying,o=i.useDispatch();return l.default.createElement(l.default.Fragment,null,"player"===e&&l.default.createElement("div",{className:"pi-flex pi-justify-center"},l.default.createElement("div",{onClick:"player"===e?function(){n&&o.player.stopAudioPlayer(),o.island.setIslandView(null),o.island.handleToggleIsOpen()}:function(){o.island.setIslandView(null),o.island.handleToggleIsOpen()},className:"pi-h-9 pi-w-9 pi-rounded-full pi-bg-black hover:pi-bg-gray-500 pi-flex pi-items-center pi-justify-center pi-text-white pi-mt-4 pi-pointer-events-auto pi-cursor-pointer pi-transition-colors"},l.default.createElement(r.FontAwesomeIcon,{icon:t.faXmark,size:"lg"}))))};exports.Close=o,exports.default=o;
|
|
2
|
+
//# sourceMappingURL=Close.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Close.js","sources":["../../src/components/Close.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\nimport React, { type FC } from 'react'\nimport { faXmark } from '@nethesis/nethesis-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../store'\n\nexport const Close: FC = () => {\n const { view } = useSelector((state: RootState) => state.island)\n const { audioPlayerPlaying } = useSelector((state: RootState) => state.player)\n const dispatch = useDispatch<Dispatch>()\n\n function playerClose() {\n if (audioPlayerPlaying) {\n dispatch.player.stopAudioPlayer()\n }\n dispatch.island.setIslandView(null)\n dispatch.island.handleToggleIsOpen()\n }\n\n function close() {\n dispatch.island.setIslandView(null)\n dispatch.island.handleToggleIsOpen()\n }\n\n return (\n <>\n {view === 'player' && (\n <div className='pi-flex pi-justify-center'>\n <div\n onClick={view === 'player' ? playerClose : close}\n className='pi-h-9 pi-w-9 pi-rounded-full pi-bg-black hover:pi-bg-gray-500 pi-flex pi-items-center pi-justify-center pi-text-white pi-mt-4 pi-pointer-events-auto pi-cursor-pointer pi-transition-colors'\n >\n <FontAwesomeIcon icon={faXmark} size='lg' />\n </div>\n </div>\n )}\n </>\n )\n}\n\nexport default Close\n"],"names":["Close","view","useSelector","state","island","audioPlayerPlaying","player","dispatch","useDispatch","React","createElement","Fragment","className","onClick","stopAudioPlayer","setIslandView","handleToggleIsOpen","FontAwesomeIcon","icon","faXmark","size"],"mappings":"4fAQaA,EAAY,WACf,IAAAC,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACjDC,EAAuBH,eAAY,SAACC,GAAqB,OAAAA,EAAMG,6BACjEC,EAAWC,EAAAA,cAejB,OACEC,EACG,QAAAC,cAAAD,UAAAE,SAAA,KAAS,WAATV,GACCQ,EAAA,QAAAC,cAAA,MAAA,CAAKE,UAAU,6BACbH,EAAAA,QAAAC,cAAA,MAAA,CACEG,QAAkB,WAATZ,EAlBnB,WACMI,GACFE,EAASD,OAAOQ,kBAElBP,EAASH,OAAOW,cAAc,MAC9BR,EAASH,OAAOY,oBACjB,EAED,WACET,EAASH,OAAOW,cAAc,MAC9BR,EAASH,OAAOY,oBACjB,EAQSJ,UAAU,gMAEVH,EAAAA,QAAAC,cAACO,kBAAe,CAACC,KAAMC,EAAAA,QAASC,KAAK,SAMjD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../events/CallEvents.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../events/CallEvents.js"),r=require("../events/PlayerEvents.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=l(e);exports.Events=function(e){var l=e.children;return n.default.createElement(n.default.Fragment,null,n.default.createElement(r.PlayerEvents,null),n.default.createElement(t.CallEvents,null),l)};
|
|
2
2
|
//# sourceMappingURL=Events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sources":["../../src/components/Events.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC } from 'react'\nimport { CallEvents } from '../events'\n\ninterface EventsProps {\n children: ReactNode\n}\n\nexport const Events: FC<EventsProps> = ({ children }) => {\n return (\n <>\n {<CallEvents />}\n {children}\n </>\n )\n}\n"],"names":["_a","children","React","createElement","Fragment","CallEvents"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Events.js","sources":["../../src/components/Events.tsx"],"sourcesContent":["// Copyright (C) 2022 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC } from 'react'\nimport { CallEvents, PlayerEvents } from '../events'\n\ninterface EventsProps {\n children: ReactNode\n}\n\nexport const Events: FC<EventsProps> = ({ children }) => {\n return (\n <>\n {<PlayerEvents />}\n {<CallEvents />}\n {children}\n </>\n )\n}\n"],"names":["_a","children","React","createElement","Fragment","PlayerEvents","CallEvents"],"mappings":"yQAUuC,SAACA,GAAE,IAAAC,EAAQD,EAAAC,SAChD,OACEC,UAAAC,cAAAD,EAAA,QAAAE,SAAA,KACGF,UAAAC,cAACE,EAAYA,aAAG,MAChBH,UAAAC,cAACG,EAAUA,WAAG,MACdL,EAGP"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../utils/customHooks/useIsomorphicLayoutEffect.js"),r=require("./CallView/index.js"),l=require("./KeypadView/index.js"),a=require("./AudioPlayerView/index.js"),u=require("./AlertGuard.js"),n=require("./CallView/BackCall.js"),i=require("./ViewsTransition.js");require("../node_modules/@fortawesome/react-fontawesome/index.es.js"),require("../lib/webrtc/janus.js"),require("../store/index.js"),require("../node_modules/webrtc-adapter/src/js/adapter_core.js");var s=require("./TransferView/TransferList.js"),o=require("./IslandMotion.js"),d=require("./IslandDrag.js"),f=require("./Close.js"),c=require("../node_modules/react-redux/es/hooks/useSelector.js"),m=require("../node_modules/react-redux/es/hooks/useDispatch.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var E=p(e),y=function(p){var y=p.showAlways,j=c.useSelector((function(e){return e.currentCall})),w=j.incoming,q=j.accepted,V=j.outgoing,v=j.transferring,h=j.transferringName,x=j.displayName,g=j.transferSwitching,C=c.useSelector((function(e){return e.island})).view,I=c.useSelector((function(e){return e.alerts.status})).activeAlertsCount,P=c.useSelector((function(e){return e.player})).audioPlayerLoop,_=e.useRef(null),b=m.useDispatch(),k=e.useRef(null),A=e.useRef(null),R=e.useRef(null),S=e.useRef(null),T=e.useRef(null);t.useIsomorphicLayoutEffect((function(){b.player.updatePlayer({audioPlayer:k,localAudio:A,localVideo:S,remoteVideo:T,remoteAudio:R})}),[]),e.useEffect((function(){(w||V)&&b.island.setIslandView("call")}),[w,V]);var L=e.useState(""),N=L[0],D=L[1];return e.useEffect((function(){setTimeout((function(){D(C)}),200)}),[C]),e.useEffect((function(){h!==x||g||b.currentCall.updateTransferring(!1)}),[h,x]),E.default.createElement("div",{ref:_,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"},(w||V||q||y||I>0||"player"===C)&&E.default.createElement(E.default.Fragment,null,E.default.createElement(d.IslandDrag,{islandContainerRef:_},E.default.createElement(n.default,{isVisible:"keypad"===C||"transfer"===C||v}),E.default.createElement(o.IslandMotion,null,E.default.createElement(u.AlertGuard,null,"call"===N?E.default.createElement(i.default,{forView:"call"},E.default.createElement(r.default,null)):"keypad"===N?E.default.createElement(i.default,{forView:"keypad"},E.default.createElement(l.default,null)):"transfer"===N?E.default.createElement(i.default,{forView:"transfer"},E.default.createElement(s.TransferListView,null)):"player"===N?E.default.createElement(i.default,{forView:"player"},E.default.createElement(a.KeypadView,null)):E.default.createElement(E.default.Fragment,null))),E.default.createElement(f.Close,null))),E.default.createElement("div",{className:"pi-hidden"},E.default.createElement("audio",{loop:P,ref:k}),E.default.createElement("audio",{muted:!0,ref:A}),E.default.createElement("audio",{autoPlay:!0,ref:R}),E.default.createElement("video",{muted:!0,autoPlay:!0,ref:S}),E.default.createElement("video",{autoPlay:!0,ref:T})))};y.displayName="Island",exports.Island=y;
|
|
2
2
|
//# sourceMappingURL=Island.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Island.js","sources":["../../src/components/Island.tsx"],"sourcesContent":["// Copyright (C) 2022 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 {\n useLongPress,\n useIsomorphicLayoutEffect,\n useLocalStorage,\n styleTransformValues,\n} from '../utils'\nimport { motion, useDragControls } from 'framer-motion/dist/framer-motion'\nimport CallView from './CallView'\nimport KeyboardView from './KeypadView'\nimport { xPosition, yPosition } from '../lib/island/island'\nimport { AlertGuard } from './AlertGuard'\nimport BackCall from './CallView/BackCall'\nimport ViewsTransition from './ViewsTransition'\nimport { TransferListView } from './TransferView'\n\n/**\n * Provides the Island logic\n *\n * @param showAlways Sets the Island ever visible\n *\n */\nexport const Island: FC<IslandProps> = ({ showAlways }) => {\n // Get the currentCall info\n const { incoming, accepted, outgoing, transferring, transferringName, displayName, transferSwitching } = useSelector(\n (state: RootState) => state.currentCall,\n )\n // Get isOpen from island store\n const { isOpen, startPosition, view } = useSelector((state: RootState) => state.island)\n // Get activeAlertsCount from island store\n const { activeAlertsCount } = useSelector((state: RootState) => state.alerts.status)\n // Get variants from animations store\n const { variants } = useSelector((state: RootState) => state.animations)\n // Get audioPlayerLoop value from player store\n const { audioPlayerLoop } = useSelector((state: RootState) => state.player)\n\n // Initialize Island drag controls\n const controls = useDragControls()\n\n // Initialize Island storage\n const [phoneIslandStorage, setPhoneIslandStorage] =\n useLocalStorage<PhoneIslandStorageTypes | null>('phone-island', null)\n\n // The Island reference\n const islandRef = useRef<any>(null)\n // The Container reference\n const islandContainerRef = useRef<any>(null)\n\n // Initialize position or get from storage\n const [position, setPosition] = useState<PositionTypes | null>(\n phoneIslandStorage && phoneIslandStorage.position ? phoneIslandStorage.position : null,\n )\n\n // Initialize the moved property\n const [moved, setMoved] = useState<boolean>(false)\n // Initialize useDispatch\n const dispatch = useDispatch<Dispatch>()\n\n // Handles the drag started event\n function handleStartDrag(event) {\n controls.start(event)\n }\n // Handles log press event\n const handleLongPress = () => {}\n\n // Handle Island click\n const handleIslandClick = () => {\n dispatch.island.toggleIsOpen()\n }\n\n // Handles drag end event\n const handleDragEnd = () => {\n // Get initial transform values\n let { x, y }: any = styleTransformValues(islandRef.current)\n // Round position\n x = xPosition(Math.round(x), islandRef.current, islandContainerRef.current)\n y = yPosition(Math.round(y), islandRef.current, islandContainerRef.current)\n // Save the new position to localstorage\n setPhoneIslandStorage({\n position: {\n x,\n y,\n },\n })\n // Set position to variable\n setPosition({\n x,\n y,\n })\n }\n\n // Handles drag started event\n function handleDragStarted() {\n setMoved(true)\n }\n\n // Initialize the longPressEvent object\n const longPressEvent = useLongPress(\n handleLongPress,\n handleIslandClick,\n moved,\n () => setMoved(false),\n {\n shouldPreventDefault: true,\n delay: 250,\n },\n )\n\n const audioPlayer = useRef<HTMLAudioElement>(null)\n const localAudio = useRef<HTMLAudioElement>(null)\n const remoteAudio = useRef<HTMLAudioElement>(null)\n const localVideo = useRef<HTMLVideoElement>(null)\n const remoteVideo = useRef<HTMLVideoElement>(null)\n\n useIsomorphicLayoutEffect(() => {\n dispatch.player.updatePlayer({\n audioPlayer: audioPlayer.current,\n localAudio: localAudio.current,\n localVideo: localVideo.current,\n remoteVideo: remoteVideo.current,\n remoteAudio: remoteAudio.current,\n })\n }, [])\n\n // Handle and apply view switch logic\n useEffect(() => {\n if (incoming || outgoing) {\n dispatch.island.setIslandView('call')\n }\n }, [incoming, outgoing])\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 // Set transferring to false when names are equal\n useEffect(() => {\n if (transferringName === displayName && !transferSwitching) {\n dispatch.currentCall.updateTransferring(false)\n }\n }, [transferringName, displayName])\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 phone-island-container pi-z-1000'\n >\n {(incoming || outgoing || accepted || showAlways || activeAlertsCount > 0) && (\n <>\n <motion.div\n drag\n onPointerDown={handleStartDrag}\n onDragStart={handleDragStarted}\n dragTransition={{\n power: 0,\n }}\n initial={{\n x: position?.x || startPosition.x,\n y: position?.y || startPosition.y,\n }}\n dragControls={controls}\n dragConstraints={islandContainerRef}\n onDragEnd={handleDragEnd}\n ref={islandRef}\n {...longPressEvent}\n className='pi-absolute'\n >\n {/* Add background call visibility logic */}\n <BackCall isVisible={view === 'keypad' || view === 'transfer' || transferring} />\n <motion.div\n className='pi-font-sans pi-pointer-events-auto pi-overflow-hidden pi-bg-black pi-text-xs pi-cursor-pointer pi-text-white'\n animate={\n view === 'call' && !transferring\n ? isOpen && (incoming || outgoing) && !accepted\n ? // The call is incoming or outgoing\n activeAlertsCount > 0\n ? variants.callView.expandedIncomingWithAlerts // There are alerts and is incoming or outgoing\n : variants.callView.expandedIncoming // There aren't alerts and is incoming or outgoing\n : isOpen && accepted\n ? // The call is accepted and the island is expanded\n activeAlertsCount > 0\n ? // There is accepted and there are alerts\n variants.callView.expandedAcceptedWithAlerts\n : variants.callView.expandedAccepted\n : activeAlertsCount > 0\n ? // There are alerts\n variants.expandedWithAlerts\n : variants.callView.collapsed\n : view === 'call' && transferring\n ? activeAlertsCount > 0 && isOpen\n ? variants.callView.transfer.expandedWithAlerts\n : activeAlertsCount === 0 && isOpen\n ? variants.callView.transfer.expanded\n : variants.callView.transfer.collapsed\n : view === 'keypad'\n ? isOpen && activeAlertsCount > 0\n ? variants.keypadView.expandedWithAlerts\n : isOpen && activeAlertsCount === 0\n ? variants.keypadView.expanded\n : !isOpen\n ? variants.keypadView.collapsed\n : ''\n : view === 'transfer'\n ? isOpen && activeAlertsCount > 0\n ? variants.transferListView.expandedWithAlerts\n : isOpen && activeAlertsCount === 0\n ? variants.transferListView.expanded\n : !isOpen\n ? variants.transferListView.collapsed\n : ''\n : ''\n }\n >\n {/* The views logic */}\n <AlertGuard>\n {currentView === 'call' ? (\n <ViewsTransition forView='call'>\n <CallView />\n </ViewsTransition>\n ) : currentView === 'keypad' ? (\n <ViewsTransition forView='keypad'>\n <KeyboardView />\n </ViewsTransition>\n ) : currentView === 'transfer' ? (\n <ViewsTransition forView='transfer'>\n <TransferListView />\n </ViewsTransition>\n ) : (\n <></>\n )}\n </AlertGuard>\n </motion.div>\n </motion.div>\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 <video muted={true} autoPlay ref={localVideo}></video>\n <video autoPlay ref={remoteVideo}></video>\n </div>\n </div>\n )\n}\n\nIsland.displayName = 'Island'\n\ninterface IslandProps {\n showAlways?: boolean\n}\n\ninterface PositionTypes {\n x: number\n y: number\n}\n\ninterface PhoneIslandStorageTypes {\n position: PositionTypes\n}\n"],"names":["Island","_a","showAlways","_b","useSelector","state","currentCall","incoming","accepted","outgoing","transferring","transferringName","displayName","transferSwitching","_c","island","isOpen","startPosition","view","activeAlertsCount","alerts","status","variants","animations","audioPlayerLoop","player","controls","useDragControls","_d","useLocalStorage","phoneIslandStorage","setPhoneIslandStorage","islandRef","useRef","islandContainerRef","_e","useState","position","setPosition","_f","moved","setMoved","dispatch","useDispatch","longPressEvent","useLongPress","toggleIsOpen","shouldPreventDefault","delay","audioPlayer","localAudio","remoteAudio","localVideo","remoteVideo","useIsomorphicLayoutEffect","updatePlayer","current","useEffect","setIslandView","_g","currentView","setCurrentView","setTimeout","updateTransferring","React","ref","className","createElement","Fragment","motion","div","__assign","drag","onPointerDown","event","start","onDragStart","dragTransition","power","initial","x","y","dragControls","dragConstraints","onDragEnd","styleTransformValues","xPosition","Math","round","yPosition","BackCall","isVisible","animate","callView","transfer","expandedWithAlerts","expanded","collapsed","keypadView","transferListView","expandedIncomingWithAlerts","expandedIncoming","expandedAcceptedWithAlerts","expandedAccepted","AlertGuard","ViewsTransition","forView","CallView","KeyboardView","TransferListView","loop","muted","autoPlay"],"mappings":"2qCA2BaA,EAA0B,SAACC,GAAE,IAAAC,EAAUD,EAAAC,WAE5CC,EAAmGC,EAAWA,aAClH,SAACC,GAAqB,OAAAA,EAAMC,WAAN,IADhBC,EAAQJ,EAAAI,SAAEC,EAAQL,EAAAK,SAAEC,EAAQN,EAAAM,SAAEC,EAAYP,EAAAO,aAAEC,EAAgBR,EAAAQ,iBAAEC,EAAWT,EAAAS,YAAEC,sBAI7EC,EAAkCV,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMU,UAAxEC,EAAMF,EAAAE,OAAEC,EAAaH,EAAAG,cAAEC,EAAIJ,EAAAI,KAE3BC,EAAsBf,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMe,OAAOC,4BAErEC,EAAalB,eAAY,SAACC,GAAqB,OAAAA,EAAMkB,uBAErDC,EAAoBpB,eAAY,SAACC,GAAqB,OAAAA,EAAMoB,0BAG9DC,EAAWC,EAAAA,aAAAA,QAAAA,kBAGXC,EACJC,EAAAA,gBAAgD,eAAgB,MAD3DC,EAAkBF,EAAA,GAAEG,OAIrBC,EAAYC,SAAY,MAExBC,EAAqBD,SAAY,MAGjCE,EAA0BC,EAAAA,SAC9BN,GAAsBA,EAAmBO,SAAWP,EAAmBO,SAAW,MAD7EA,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAKtBI,EAAoBH,EAAAA,UAAkB,GAArCI,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAEhBG,EAAWC,EAAAA,cAyCjB,IAAMC,EAAiBC,EAAAA,cAlCC,eAGE,WACxBH,EAAS3B,OAAO+B,cAClB,GAgCEN,GACA,WAAM,OAAAC,GAAS,KACf,CACEM,sBAAsB,EACtBC,MAAO,MAILC,EAAchB,SAAyB,MACvCiB,EAAajB,SAAyB,MACtCkB,EAAclB,SAAyB,MACvCmB,EAAanB,SAAyB,MACtCoB,EAAcpB,SAAyB,MAE7CqB,EAAAA,2BAA0B,WACxBZ,EAASjB,OAAO8B,aAAa,CAC3BN,YAAaA,EAAYO,QACzBN,WAAYA,EAAWM,QACvBJ,WAAYA,EAAWI,QACvBH,YAAaA,EAAYG,QACzBL,YAAaA,EAAYK,SAE5B,GAAE,IAGHC,EAAAA,WAAU,YACJlD,GAAYE,IACdiC,EAAS3B,OAAO2C,cAAc,OAElC,GAAG,CAACnD,EAAUE,IAER,IAAAkD,EAAgCvB,EAAAA,SAAc,IAA7CwB,GAAWD,EAAA,GAAEE,GAAcF,EAAA,GAgBlC,OAbAF,EAAAA,WAAU,WACRK,YAAW,WACTD,GAAe3C,EAChB,GAAE,IACL,GAAG,CAACA,IAGJuC,EAAAA,WAAU,WACJ9C,IAAqBC,GAAgBC,GACvC6B,EAASpC,YAAYyD,oBAAmB,EAE5C,GAAG,CAACpD,EAAkBC,IAGpBoD,EAAAA,6BACEC,IAAK/B,EACLgC,UAAU,sMAER3D,GAAYE,GAAYD,GAAYN,GAAciB,EAAoB,IACtE6C,UAAAG,cAAAH,EAAA,QAAAI,SAAA,KACEJ,EAAAA,QAAAG,cAACE,EAAAA,aAAAA,QAAAA,OAAOC,IAAGC,EAAAA,SAAA,CACTC,MACA,EAAAC,cAjGV,SAAyBC,GACvBhD,EAASiD,MAAMD,EAChB,EAgGSE,YAjEV,WACEnC,GAAS,EACV,EAgESoC,eAAgB,CACdC,MAAO,GAETC,QAAS,CACPC,GAAG3C,aAAQ,EAARA,EAAU2C,IAAK/D,EAAc+D,EAChCC,GAAG5C,aAAQ,EAARA,EAAU4C,IAAKhE,EAAcgE,GAElCC,aAAcxD,EACdyD,gBAAiBjD,EACjBkD,UAhGY,WAEhB,IAAAnF,EAAgBoF,EAAAA,qBAAqBrD,EAAUwB,SAA7CwB,EAAC/E,EAAA+E,EAAEC,MAETD,EAAIM,EAAAA,UAAUC,KAAKC,MAAMR,GAAIhD,EAAUwB,QAAStB,EAAmBsB,SACnEyB,EAAIQ,EAAAA,UAAUF,KAAKC,MAAMP,GAAIjD,EAAUwB,QAAStB,EAAmBsB,SAEnEzB,EAAsB,CACpBM,SAAU,CACR2C,EAACA,EACDC,EAACA,KAIL3C,EAAY,CACV0C,EAACA,EACDC,EAACA,GAEL,EA+EUhB,IAAKjC,GACDY,EACJ,CAAAsB,UAAU,gBAGVF,UAAAG,cAACuB,EAAQ,QAAA,CAACC,UAAoB,WAATzE,GAA8B,aAATA,GAAuBR,IACjEsD,EAAAA,QAAAG,cAACE,8BAAOC,IAAG,CACTJ,UAAU,gHACV0B,QACW,SAAT1E,GAAoBR,EAgBP,SAATQ,GAAmBR,EACnBS,EAAoB,GAAKH,EACvBM,EAASuE,SAASC,SAASC,mBACL,IAAtB5E,GAA2BH,EAC3BM,EAASuE,SAASC,SAASE,SAC3B1E,EAASuE,SAASC,SAASG,UACpB,WAAT/E,EACAF,GAAUG,EAAoB,EAC5BG,EAAS4E,WAAWH,mBACpB/E,GAAgC,IAAtBG,EACVG,EAAS4E,WAAWF,SACnBhF,EAED,GADAM,EAAS4E,WAAWD,UAEb,aAAT/E,EACAF,GAAUG,EAAoB,EAC5BG,EAAS6E,iBAAiBJ,mBAC1B/E,GAAgC,IAAtBG,EACVG,EAAS6E,iBAAiBH,SACzBhF,EAED,GADAM,EAAS6E,iBAAiBF,UAE5B,GArCAjF,IAAWT,GAAYE,KAAcD,EAEnCW,EAAoB,EAClBG,EAASuE,SAASO,2BAClB9E,EAASuE,SAASQ,iBACpBrF,GAAUR,EAEVW,EAAoB,EAElBG,EAASuE,SAASS,2BAClBhF,EAASuE,SAASU,iBACpBpF,EAAoB,EAEpBG,EAASyE,mBACTzE,EAASuE,SAASI,WA2B1BjC,EAAAA,QAAAG,cAACqC,aAAU,KACQ,SAAhB5C,GACCI,EAAC,QAAAG,cAAAsC,EAAAA,QAAgB,CAAAC,QAAQ,QACvB1C,EAAAA,QAAAG,cAACwC,EAAAA,QAAW,OAEI,WAAhB/C,GACFI,EAAAA,QAAAG,cAACsC,EAAAA,QAAgB,CAAAC,QAAQ,UACvB1C,EAAAA,QAAAG,cAACyC,EAAAA,QAAe,OAEA,aAAhBhD,GACFI,EAAAA,QAAAG,cAACsC,EAAAA,QAAgB,CAAAC,QAAQ,YACvB1C,EAAAA,QAAAG,cAAC0C,EAAAA,iBAAgB,OAGnB7C,EAAA,QAAAG,cAAAH,EAAAA,QAAAI,SAAA,UAOZJ,EAAAA,QAAKG,cAAA,MAAA,CAAAD,UAAU,aACbF,EAAA,QAAAG,cAAA,QAAA,CAAO2C,KAAMtF,EAAiByC,IAAKhB,IACnCe,EAAA,QAAAG,cAAA,QAAA,CAAO4C,OAAO,EAAM9C,IAAKf,IACzBc,EAAA,QAAAG,cAAA,QAAA,CAAO6C,UAAQ,EAAC/C,IAAKd,IACrBa,UAAOG,cAAA,QAAA,CAAA4C,OAAO,EAAMC,UAAS,EAAA/C,IAAKb,IAClCY,UAAOG,cAAA,QAAA,CAAA6C,YAAS/C,IAAKZ,KAI7B,EAEArD,EAAOY,YAAc"}
|
|
1
|
+
{"version":3,"file":"Island.js","sources":["../../src/components/Island.tsx"],"sourcesContent":["// Copyright (C) 2022 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 ViewsTransition from './ViewsTransition'\nimport { TransferListView } from './TransferView'\nimport IslandMotions from './IslandMotion'\nimport IslandDrag from './IslandDrag'\nimport Close from './Close'\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 {\n incoming,\n accepted,\n outgoing,\n transferring,\n transferringName,\n displayName,\n transferSwitching,\n } = useSelector((state: RootState) => state.currentCall)\n\n // Get isOpen from island store\n const { view } = useSelector((state: RootState) => state.island)\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\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 const localVideo = useRef<HTMLVideoElement>(null)\n const remoteVideo = useRef<HTMLVideoElement>(null)\n\n useIsomorphicLayoutEffect(() => {\n dispatch.player.updatePlayer({\n audioPlayer: audioPlayer,\n localAudio: localAudio,\n localVideo: localVideo,\n remoteVideo: remoteVideo,\n remoteAudio: remoteAudio,\n })\n }, [])\n\n // Handle and apply view switch logic\n useEffect(() => {\n if (incoming || outgoing) {\n dispatch.island.setIslandView('call')\n }\n }, [incoming, outgoing])\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 // Set transferring to false when names are equal\n useEffect(() => {\n if (transferringName === displayName && !transferSwitching) {\n dispatch.currentCall.updateTransferring(false)\n }\n }, [transferringName, displayName])\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 <>\n <IslandDrag islandContainerRef={islandContainerRef}>\n {/* Add background call visibility logic */}\n <BackCall isVisible={view === 'keypad' || view === 'transfer' || transferring} />\n <IslandMotions>\n {/* The views logic */}\n <AlertGuard>\n {currentView === 'call' ? (\n <ViewsTransition forView='call'>\n <CallView />\n </ViewsTransition>\n ) : currentView === 'keypad' ? (\n <ViewsTransition forView='keypad'>\n <KeyboardView />\n </ViewsTransition>\n ) : currentView === 'transfer' ? (\n <ViewsTransition forView='transfer'>\n <TransferListView />\n </ViewsTransition>\n ) : currentView === 'player' ? (\n <ViewsTransition forView='player'>\n <AudioPlayerView />\n </ViewsTransition>\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 <video muted={true} autoPlay ref={localVideo}></video>\n <video autoPlay ref={remoteVideo}></video>\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","transferring","transferringName","displayName","transferSwitching","view","island","activeAlertsCount","alerts","status","audioPlayerLoop","player","islandContainerRef","useRef","dispatch","useDispatch","audioPlayer","localAudio","remoteAudio","localVideo","remoteVideo","useIsomorphicLayoutEffect","updatePlayer","useEffect","setIslandView","_c","useState","currentView","setCurrentView","setTimeout","updateTransferring","React","ref","className","createElement","Fragment","IslandDrag","BackCall","isVisible","IslandMotions","AlertGuard","ViewsTransition","forView","CallView","KeyboardView","TransferListView","AudioPlayerView","Close","loop","muted","autoPlay"],"mappings":"+7BAuBaA,EAA0B,SAACC,GAAE,IAAAC,EAAUD,EAAAC,WAE5CC,EAQFC,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMC,WAAN,IAPpCC,EAAQJ,EAAAI,SACRC,EAAQL,EAAAK,SACRC,EAAQN,EAAAM,SACRC,EAAYP,EAAAO,aACZC,EAAgBR,EAAAQ,iBAChBC,EAAWT,EAAAS,YACXC,sBAIMC,EAASV,eAAY,SAACC,GAAqB,OAAAA,EAAMU,eAGjDC,EAAsBZ,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMY,OAAOC,4BAGrEC,EAAoBf,eAAY,SAACC,GAAqB,OAAAA,EAAMe,0BAG9DC,EAAqBC,SAAY,MAGjCC,EAAWC,EAAAA,cAEXC,EAAcH,SAAyB,MACvCI,EAAaJ,SAAyB,MACtCK,EAAcL,SAAyB,MACvCM,EAAaN,SAAyB,MACtCO,EAAcP,SAAyB,MAE7CQ,EAAAA,2BAA0B,WACxBP,EAASH,OAAOW,aAAa,CAC3BN,YAAaA,EACbC,WAAYA,EACZE,WAAYA,EACZC,YAAaA,EACbF,YAAaA,GAEhB,GAAE,IAGHK,EAAAA,WAAU,YACJzB,GAAYE,IACdc,EAASR,OAAOkB,cAAc,OAElC,GAAG,CAAC1B,EAAUE,IAER,IAAAyB,EAAgCC,EAAAA,SAAc,IAA7CC,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAgBlC,OAbAF,EAAAA,WAAU,WACRM,YAAW,WACTD,EAAevB,EAChB,GAAE,IACL,GAAG,CAACA,IAGJkB,EAAAA,WAAU,WACJrB,IAAqBC,GAAgBC,GACvCU,EAASjB,YAAYiC,oBAAmB,EAE5C,GAAG,CAAC5B,EAAkBC,IAGpB4B,EAAAA,6BACEC,IAAKpB,EACLqB,UAAU,yMAERnC,GACAE,GACAD,GACAN,GACAc,EAAoB,GACX,WAATF,IACA0B,EAAA,QAAAG,cAAAH,EAAA,QAAAI,SAAA,KACEJ,EAAAA,QAAAG,cAACE,EAAAA,WAAU,CAACxB,mBAAoBA,GAE9BmB,UAAAG,cAACG,EAAQ,QAAA,CAACC,UAAoB,WAATjC,GAA8B,aAATA,GAAuBJ,IACjE8B,UAAAG,cAACK,EAAAA,aAAa,KAEZR,EAAAA,QAAAG,cAACM,aAAU,KACQ,SAAhBb,EACCI,EAAC,QAAAG,cAAAO,EAAAA,QAAgB,CAAAC,QAAQ,QACvBX,EAAAA,QAAAG,cAACS,EAAAA,QAAW,OAEI,WAAhBhB,EACFI,EAAAA,QAAAG,cAACO,EAAAA,QAAgB,CAAAC,QAAQ,UACvBX,EAAAA,QAAAG,cAACU,EAAAA,QAAe,OAEA,aAAhBjB,EACFI,EAAAA,QAAAG,cAACO,EAAAA,QAAgB,CAAAC,QAAQ,YACvBX,EAAAA,QAAAG,cAACW,EAAAA,iBAAmB,OAEJ,WAAhBlB,EACFI,EAAAA,QAAAG,cAACO,EAAAA,QAAgB,CAAAC,QAAQ,UACvBX,EAAAA,QAACG,cAAAY,aAAkB,OAGrBf,EAAAA,QAAAG,cAAAH,UAAAI,SAAA,QAINJ,EAAAA,QAAAG,cAACa,EAAAA,MAAK,QAIZhB,EAAAA,QAAKG,cAAA,MAAA,CAAAD,UAAU,aACbF,EAAA,QAAAG,cAAA,QAAA,CAAOc,KAAMtC,EAAiBsB,IAAKhB,IACnCe,EAAA,QAAAG,cAAA,QAAA,CAAOe,OAAO,EAAMjB,IAAKf,IACzBc,EAAA,QAAAG,cAAA,QAAA,CAAOgB,UAAQ,EAAClB,IAAKd,IACrBa,UAAOG,cAAA,QAAA,CAAAe,OAAO,EAAMC,UAAS,EAAAlB,IAAKb,IAClCY,UAAOG,cAAA,QAAA,CAAAgB,YAASlB,IAAKZ,KAI7B,EAEA7B,EAAOY,YAAc"}
|