@nethesis/phone-island 0.8.24 → 0.8.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),a=require("../Button.js"),i=require("../../node_modules/i18next/dist/esm/i18next.js"),s=require("../../utils/genericFunctions/eventDispatch.js"),l=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);exports.default=function(){var e=l.useSelector((function(e){return e.alerts})).data,o=n.useDispatch(),u=Object.values(e).filter((function(e){return e.active})),c=u.length>0?u[u.length-1]:null;return c&&d.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},d.default.createElement("div",{className:"pi-flex pi-items-center"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 pi-mt-[-0.8rem] ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},d.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==c?void 0:c.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-4 pi-w-4 ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),d.default.createElement("div",{className:"ml-3"},d.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100"},i.t("Errors.".concat(null==c?void 0:c.type))),d.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},i.t("Errors.".concat(null==c?void 0:c.message))))),d.default.createElement(a.Button,{variant:"transparent",onClick:function(){return o.alerts.removeAllAlerts(),void s.eventDispatch("phone-island-all-alerts-removed",{})},className:"pi-absolute pi-right-[-0.5rem] pi-top-[38%] pi-transform pi--translate-y-1/2"},d.default.createElement(t.FontAwesomeIcon,{icon:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../../node_modules/react-redux/es/index.js");var t=require("../../node_modules/@fortawesome/react-fontawesome/index.es.js"),r=require("../../node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js"),a=require("../Button.js"),i=require("../../node_modules/i18next/dist/esm/i18next.js"),s=require("../../utils/genericFunctions/eventDispatch.js"),l=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);exports.default=function(){var e=l.useSelector((function(e){return e.alerts})).data,o=n.useDispatch(),u=Object.values(e).filter((function(e){return e.active})),c=u.length>0?u[u.length-1]:null;return c&&d.default.createElement("div",{className:"pi-relative pi-rounded-md pi-w-full pi-flex"},d.default.createElement("div",{className:"pi-flex pi-items-center"},d.default.createElement("div",{className:"pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 pi-mt-[-0.8rem] ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-bg-green-200 dark:pi-bg-green-900":"pi-bg-rose-200 dark:pi-bg-rose-900")},d.default.createElement(t.FontAwesomeIcon,{icon:"call_transfered"===(null==c?void 0:c.type)?r.faCircleCheck:r.faCircleXmark,className:"pi-h-[1.1rem] pi-w-10 ".concat("call_transfered"===(null==c?void 0:c.type)?"pi-text-green-700 dark:pi-text-green-200":"pi-text-rose-700 dark:pi-text-rose-200"),"aria-hidden":"true"})),d.default.createElement("div",{className:"ml-3"},d.default.createElement("h3",{className:"pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100"},i.t("Errors.".concat(null==c?void 0:c.type))),d.default.createElement("div",{className:"pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5"},i.t("Errors.".concat(null==c?void 0:c.message))))),d.default.createElement(a.Button,{variant:"transparent",onClick:function(){return o.alerts.removeAllAlerts(),void s.eventDispatch("phone-island-all-alerts-removed",{})},className:"pi-absolute pi-right-[-0.5rem] pi-top-[38%] pi-transform pi--translate-y-[57%]"},d.default.createElement(t.FontAwesomeIcon,{icon:r.faTimes,className:"pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4"})))};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCircleXmark, faCircleCheck } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 pi-mt-[-0.8rem] ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-4 pi-w-4 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100'>\n {t(`Errors.${latestAlert?.type}`)}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() => handleClearAllAlerts()}\n className='pi-absolute pi-right-[-0.5rem] pi-top-[38%] pi-transform pi--translate-y-1/2'\n >\n <FontAwesomeIcon icon={faTimes} className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4' />\n </Button>\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","message","Button","variant","onClick","removeAllAlerts","eventDispatch","faTimes"],"mappings":"2qBAesB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACnDC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOR,GAAMS,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAOtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sHACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,iBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAA,QAAAC,cAAA,KAAA,CAAIC,UAAU,yFACXO,EAACA,EAAC,UAAUN,OAAAL,eAAAA,EAAaM,QAE5BJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaY,aAMhCV,EAAAA,QAAAC,cAACU,EAAAA,OACC,CAAAC,QAAQ,cACRC,QAAS,WAAM,OAxCrBvB,EAASD,OAAOyB,uBAChBC,gBAAc,kCAAmC,CAAA,IAwC3Cb,UAAU,gFAEVF,UAAAC,cAACI,EAAeA,gBAAA,CAACC,KAAMU,UAASd,UAAU,yDAKpD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AlertView/index.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { FC } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../../store'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTimes, faCircleXmark, faCircleCheck } from '@fortawesome/free-solid-svg-icons'\nimport { Button } from '../Button'\nimport { t } from 'i18next'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Shows user alerts\n */\nconst AlertView: FC = () => {\n const { data } = useSelector((state: RootState) => state.alerts)\n const dispatch = useDispatch<Dispatch>()\n\n // Extract active alerts\n const activeAlerts = Object.values(data).filter((alert: any) => alert.active)\n\n // Display the latest active alert\n const latestAlert = activeAlerts.length > 0 ? activeAlerts[activeAlerts.length - 1] : null\n\n const handleClearAllAlerts = () => {\n dispatch.alerts.removeAllAlerts()\n eventDispatch('phone-island-all-alerts-removed', {})\n }\n\n return (\n latestAlert && (\n <div className='pi-relative pi-rounded-md pi-w-full pi-flex'>\n <div className='pi-flex pi-items-center'>\n <div\n className={`pi-flex pi-items-center pi-justify-center pi-flex-shrink-0 pi-mr-4 pi-rounded-full pi-h-10 pi-w-10 pi-mt-[-0.8rem] ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-bg-green-200 dark:pi-bg-green-900'\n : 'pi-bg-rose-200 dark:pi-bg-rose-900'\n }`}\n >\n {/* Icon */}\n <FontAwesomeIcon\n icon={latestAlert?.type === 'call_transfered' ? faCircleCheck : faCircleXmark}\n className={`pi-h-[1.1rem] pi-w-10 ${\n latestAlert?.type === 'call_transfered'\n ? 'pi-text-green-700 dark:pi-text-green-200'\n : 'pi-text-rose-700 dark:pi-text-rose-200'\n }`}\n aria-hidden='true'\n />\n </div>\n\n <div className='ml-3'>\n <h3 className='pi-text-lg pi-font-medium pi-text-gray-900 dark:pi-text-gray-50 pi-dark:text-rose-100'>\n {t(`Errors.${latestAlert?.type}`)}\n </h3>\n <div className='pi-text-sm pi-font-normal pi-text-gray-700 dark:pi-text-gray-200 pi-dark:text-rose-200 pi-leading-5'>\n {t(`Errors.${latestAlert?.message}`)}\n </div>\n </div>\n </div>\n\n {/* Close button */}\n <Button\n variant='transparent'\n onClick={() => handleClearAllAlerts()}\n className='pi-absolute pi-right-[-0.5rem] pi-top-[38%] pi-transform pi--translate-y-[57%]'\n >\n <FontAwesomeIcon icon={faTimes} className='pi-text-gray-700 dark:pi-text-gray-50 pi-w-4 pi-h-4' />\n </Button>\n </div>\n )\n )\n}\n\nexport default AlertView\n"],"names":["data","useSelector","state","alerts","dispatch","useDispatch","activeAlerts","Object","values","filter","alert","active","latestAlert","length","React","createElement","className","concat","type","FontAwesomeIcon","icon","faCircleCheck","faCircleXmark","t","message","Button","variant","onClick","removeAllAlerts","eventDispatch","faTimes"],"mappings":"2qBAesB,WACZ,IAAAA,EAASC,eAAY,SAACC,GAAqB,OAAAA,EAAMC,eACnDC,EAAWC,EAAAA,cAGXC,EAAeC,OAAOC,OAAOR,GAAMS,QAAO,SAACC,GAAe,OAAAA,EAAMC,MAAM,IAGtEC,EAAcN,EAAaO,OAAS,EAAIP,EAAaA,EAAaO,OAAS,GAAK,KAOtF,OACED,GACEE,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,+CACbF,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,2BACbF,EAAA,QAAAC,cAAA,MAAA,CACEC,UAAW,sHACTC,OAAsB,qBAAtBL,aAAW,EAAXA,EAAaM,MACT,uCACA,uCAINJ,EAAAA,QAAAC,cAACI,EAAAA,gBAAe,CACdC,KAA4B,qBAAtBR,aAAW,EAAXA,EAAaM,MAA6BG,EAAaA,cAAGC,EAAaA,cAC7EN,UAAW,yBACTC,OAAsB,qBAAtBL,aAAA,EAAAA,EAAaM,MACT,2CACA,0CAEM,cAAA,UAIhBJ,EAAAA,QAAKC,cAAA,MAAA,CAAAC,UAAU,QACbF,EAAA,QAAAC,cAAA,KAAA,CAAIC,UAAU,yFACXO,EAACA,EAAC,UAAUN,OAAAL,eAAAA,EAAaM,QAE5BJ,UAAAC,cAAA,MAAA,CAAKC,UAAU,uGACZO,EAAAA,EAAE,iBAAUX,aAAW,EAAXA,EAAaY,aAMhCV,EAAAA,QAAAC,cAACU,EAAAA,OACC,CAAAC,QAAQ,cACRC,QAAS,WAAM,OAxCrBvB,EAASD,OAAOyB,uBAChBC,gBAAc,kCAAmC,CAAA,IAwC3Cb,UAAU,kFAEVF,UAAAC,cAACI,EAAeA,gBAAA,CAACC,KAAMU,UAASd,UAAU,yDAKpD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/framer-motion/dist/es/render/dom/motion.mjs.js"),d=require("../node_modules/react-redux/es/hooks/useSelector.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=i(e),r=function(e){var i=e.children,r=d.useSelector((function(e){return e.currentCall})),h=r.incoming,n=r.outgoing,c=r.accepted,l=r.transferring,o=d.useSelector((function(e){return e.listen})).isListen,s=d.useSelector((function(e){return e.island})),p=s.view,g=s.isOpen,u=s.actionsExpanded,x=d.useSelector((function(e){return e.alerts.status})).activeAlertsCount,w=d.useSelector((function(e){return e.motions})),f=w.variants,y=w.border_radius_collapsed,m=w.border_radius_expanded,v=w.padding_x_collapsed,_=w.padding_y_collapsed,b=w.padding_expanded;var k=function(){var e={width:0,height:0};switch(p){case"call":g?c&&l?e=u?{width:f.call.expanded.transfer.actionsExpanded.width,height:f.call.expanded.transfer.actionsExpanded.height}:{width:f.call.expanded.transfer.width,height:f.call.expanded.transfer.height}:c&&u?e={width:f.call.expanded.accepted.actionsExpanded.width,height:f.call.expanded.accepted.actionsExpanded.height}:c&&!o?e={width:f.call.expanded.accepted.width,height:f.call.expanded.accepted.height}:c&&o?e={width:f.call.expanded.listening.width,height:f.call.expanded.listening.height}:h?e={width:f.call.expanded.incoming.width,height:f.call.expanded.incoming.height}:n&&(e={width:f.call.expanded.outgoing.width,height:f.call.expanded.outgoing.height}):e={width:f.call.collapsed.width,height:f.call.collapsed.height};break;case"keypad":e=g?{width:f.keypad.expanded.width,height:f.keypad.expanded.height}:{width:f.transfer.collapsed.width,height:f.transfer.collapsed.height};break;case"transfer":e=g?{width:f.transfer.expanded.width,height:f.transfer.expanded.height}:{width:f.transfer.collapsed.width,height:f.transfer.collapsed.height};break;case"player":e=g?{width:f.player.expanded.width,height:f.player.expanded.height}:{width:f.player.collapsed.width,height:f.player.collapsed.height};break;case"recorder":e=g?{width:f.recorder.expanded.width,height:f.recorder.expanded.height}:{width:f.recorder.collapsed.width,height:f.recorder.collapsed.height};break;case"physicalPhoneRecorder":e=g?{width:f.physicalPhoneRecorder.expanded.width,height:f.physicalPhoneRecorder.expanded.height}:{width:f.physicalPhoneRecorder.collapsed.width,height:f.physicalPhoneRecorder.collapsed.height}}var t=x>0;return{width:"".concat(0===e.width&&t?f.alerts.width:e.width,"px"),height:"".concat(t&&g?f.alerts.height+(0===e.height?2*b:b):e.height,"px"),borderRadius:"".concat(g?m:y,"px"),padding:g?"".concat(b,"px"):"".concat(v,"px ").concat(_,"px")}}();return a.default.createElement(t.motion.div,{className:"pi-pointer-events-auto pi-overflow-hidden dark:pi-bg-gray-950 pi-bg-gray-50 pi-text-xs pi-cursor-pointer dark:pi-text-white pi-text-gray-900 hover:pi-shadow-2xl pi-rounded-3xl pi-transition-shadow",animate:k},i&&i)};exports.IslandMotion=r,exports.default=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/framer-motion/dist/es/render/dom/motion.mjs.js"),d=require("../node_modules/react-redux/es/hooks/useSelector.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(e),r=function(e){var a=e.children,r=d.useSelector((function(e){return e.currentCall})),h=r.incoming,n=r.outgoing,c=r.accepted,l=r.transferring,o=d.useSelector((function(e){return e.listen})).isListen,p=d.useSelector((function(e){return e.island})),s=p.view,g=p.isOpen,x=p.actionsExpanded,u=d.useSelector((function(e){return e.alerts.status})).activeAlertsCount,w=d.useSelector((function(e){return e.motions})),f=w.variants,y=w.border_radius_collapsed,m=w.border_radius_expanded,_=w.padding_x_collapsed,v=w.padding_y_collapsed,b=w.padding_expanded,k=w.alert_padding_expanded;var j=function(){var e={width:0,height:0};switch(s){case"call":g?c&&l?e=x?{width:f.call.expanded.transfer.actionsExpanded.width,height:f.call.expanded.transfer.actionsExpanded.height}:{width:f.call.expanded.transfer.width,height:f.call.expanded.transfer.height}:c&&x?e={width:f.call.expanded.accepted.actionsExpanded.width,height:f.call.expanded.accepted.actionsExpanded.height}:c&&!o?e={width:f.call.expanded.accepted.width,height:f.call.expanded.accepted.height}:c&&o?e={width:f.call.expanded.listening.width,height:f.call.expanded.listening.height}:h?e={width:f.call.expanded.incoming.width,height:f.call.expanded.incoming.height}:n&&(e={width:f.call.expanded.outgoing.width,height:f.call.expanded.outgoing.height}):e={width:f.call.collapsed.width,height:f.call.collapsed.height};break;case"keypad":e=g?{width:f.keypad.expanded.width,height:f.keypad.expanded.height}:{width:f.transfer.collapsed.width,height:f.transfer.collapsed.height};break;case"transfer":e=g?{width:f.transfer.expanded.width,height:f.transfer.expanded.height}:{width:f.transfer.collapsed.width,height:f.transfer.collapsed.height};break;case"player":e=g?{width:f.player.expanded.width,height:f.player.expanded.height}:{width:f.player.collapsed.width,height:f.player.collapsed.height};break;case"recorder":e=g?{width:f.recorder.expanded.width,height:f.recorder.expanded.height}:{width:f.recorder.collapsed.width,height:f.recorder.collapsed.height};break;case"physicalPhoneRecorder":e=g?{width:f.physicalPhoneRecorder.expanded.width,height:f.physicalPhoneRecorder.expanded.height}:{width:f.physicalPhoneRecorder.collapsed.width,height:f.physicalPhoneRecorder.collapsed.height}}var t=u>0;return{width:"".concat(0===e.width&&t?f.alerts.width:e.width,"px"),height:"".concat(t&&g?f.alerts.height+(0===e.height?2*k:k):e.height,"px"),borderRadius:"".concat(g?m:y,"px"),padding:g?"".concat(b,"px"):"".concat(_,"px ").concat(v,"px")}}();return i.default.createElement(t.motion.div,{className:"pi-pointer-events-auto pi-overflow-hidden dark:pi-bg-gray-950 pi-bg-gray-50 pi-text-xs pi-cursor-pointer dark:pi-text-white pi-text-gray-900 hover:pi-shadow-2xl pi-rounded-3xl pi-transition-shadow",animate:j},a&&a)};exports.IslandMotion=r,exports.default=r;
2
2
  //# sourceMappingURL=IslandMotion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IslandMotion.js","sources":["../../src/components/IslandMotion.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC } from 'react'\nimport { RootState } from '../store'\nimport { useSelector } from 'react-redux'\nimport { motion } from 'framer-motion'\n\nexport const IslandMotion: FC<IslandMotionProps> = ({ children }) => {\n // Retrieve needed stored variables\n const { incoming, outgoing, accepted, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const { isListen } = useSelector((state: RootState) => state.listen)\n const { view, isOpen, actionsExpanded } = useSelector((state: RootState) => state.island)\n const { activeAlertsCount } = useSelector((state: RootState) => state.alerts.status)\n const {\n variants,\n border_radius_collapsed,\n border_radius_expanded,\n padding_x_collapsed,\n padding_y_collapsed,\n padding_expanded,\n } = useSelector((state: RootState) => state.motions)\n\n function getVariant() {\n // Initial size\n let size: SizeTypes = {\n width: 0,\n height: 0,\n }\n switch (view) {\n case 'call':\n if (isOpen) {\n if (accepted && transferring) {\n if (actionsExpanded) {\n size = {\n width: variants.call.expanded.transfer.actionsExpanded.width,\n height: variants.call.expanded.transfer.actionsExpanded.height,\n }\n } else {\n size = {\n width: variants.call.expanded.transfer.width,\n height: variants.call.expanded.transfer.height,\n }\n }\n } else if (accepted && actionsExpanded) {\n size = {\n width: variants.call.expanded.accepted.actionsExpanded.width,\n height: variants.call.expanded.accepted.actionsExpanded.height,\n }\n } else if (accepted && !isListen) {\n size = {\n width: variants.call.expanded.accepted.width,\n height: variants.call.expanded.accepted.height,\n }\n } else if (accepted && isListen) {\n size = {\n width: variants.call.expanded.listening.width,\n height: variants.call.expanded.listening.height,\n }\n } else if (incoming) {\n size = {\n width: variants.call.expanded.incoming.width,\n height: variants.call.expanded.incoming.height,\n }\n } else if (outgoing) {\n size = {\n width: variants.call.expanded.outgoing.width,\n height: variants.call.expanded.outgoing.height,\n }\n }\n } else {\n size = {\n width: variants.call.collapsed.width,\n height: variants.call.collapsed.height,\n }\n }\n break\n case 'keypad':\n if (isOpen) {\n size = {\n width: variants.keypad.expanded.width,\n height: variants.keypad.expanded.height,\n }\n } else {\n size = {\n width: variants.transfer.collapsed.width,\n height: variants.transfer.collapsed.height,\n }\n }\n break\n case 'transfer':\n if (isOpen) {\n size = {\n width: variants.transfer.expanded.width,\n height: variants.transfer.expanded.height,\n }\n } else {\n size = {\n width: variants.transfer.collapsed.width,\n height: variants.transfer.collapsed.height,\n }\n }\n break\n case 'player':\n if (isOpen) {\n size = {\n width: variants.player.expanded.width,\n height: variants.player.expanded.height,\n }\n } else {\n size = {\n width: variants.player.collapsed.width,\n height: variants.player.collapsed.height,\n }\n }\n break\n case 'recorder':\n if (isOpen) {\n size = {\n width: variants.recorder.expanded.width,\n height: variants.recorder.expanded.height,\n }\n } else {\n size = {\n width: variants.recorder.collapsed.width,\n height: variants.recorder.collapsed.height,\n }\n }\n break\n case 'physicalPhoneRecorder':\n if (isOpen) {\n size = {\n width: variants.physicalPhoneRecorder.expanded.width,\n height: variants.physicalPhoneRecorder.expanded.height,\n }\n } else {\n size = {\n width: variants.physicalPhoneRecorder.collapsed.width,\n height: variants.physicalPhoneRecorder.collapsed.height,\n }\n }\n break\n }\n\n const isAlert: boolean = activeAlertsCount > 0\n\n return {\n width: `${size.width === 0 && isAlert ? variants.alerts.width : size.width}px`,\n height: `${\n // If there is an alert and the island is open put the correct height\n isAlert && isOpen\n ? variants.alerts.height + (size.height === 0 ? padding_expanded * 2 : padding_expanded)\n : size.height\n }px`,\n borderRadius: isOpen ? `${border_radius_expanded}px` : `${border_radius_collapsed}px`,\n padding: isOpen\n ? `${padding_expanded}px`\n : `${padding_x_collapsed}px ${padding_y_collapsed}px`,\n }\n }\n\n const motionVariants = getVariant()\n\n return (\n <motion.div\n className='pi-pointer-events-auto pi-overflow-hidden dark:pi-bg-gray-950 pi-bg-gray-50 pi-text-xs pi-cursor-pointer dark:pi-text-white pi-text-gray-900 hover:pi-shadow-2xl pi-rounded-3xl pi-transition-shadow'\n animate={motionVariants}\n >\n {children && children}\n </motion.div>\n )\n}\n\nexport interface IslandMotionProps {\n children: ReactNode\n}\n\ntype SizeTypes = {\n width: number\n height: number\n}\n\nexport default IslandMotion\n"],"names":["IslandMotion","_a","children","_b","useSelector","state","currentCall","incoming","outgoing","accepted","transferring","isListen","listen","_c","island","view","isOpen","actionsExpanded","activeAlertsCount","alerts","status","_d","motions","variants","border_radius_collapsed","border_radius_expanded","padding_x_collapsed","padding_y_collapsed","padding_expanded","motionVariants","size","width","height","call","expanded","transfer","listening","collapsed","keypad","player","recorder","physicalPhoneRecorder","isAlert","concat","borderRadius","padding","getVariant","React","createElement","motion","div","className","animate"],"mappings":"kXAQaA,EAAsC,SAACC,GAAE,IAAAC,EAAQD,EAAAC,SAEtDC,EAAiDC,eACrD,SAACC,GAAqB,OAAAA,EAAMC,eADtBC,EAAQJ,EAAAI,SAAEC,EAAQL,EAAAK,SAAEC,EAAQN,EAAAM,SAAEC,EAAYP,EAAAO,aAG1CC,EAAaP,eAAY,SAACC,GAAqB,OAAAA,EAAMO,mBACvDC,EAAoCT,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMS,UAA1EC,EAAIF,EAAAE,KAAEC,EAAMH,EAAAG,OAAEC,EAAeJ,EAAAI,gBAC7BC,EAAsBd,EAAAA,aAAY,SAACC,GAAqB,OAAAA,EAAMc,OAAOC,4BACvEC,EAOFjB,EAAWA,aAAC,SAACC,GAAqB,OAAAA,EAAMiB,OAAN,IANpCC,EAAQF,EAAAE,SACRC,EAAuBH,EAAAG,wBACvBC,2BACAC,EAAmBL,EAAAK,oBACnBC,EAAmBN,EAAAM,oBACnBC,qBA6IF,IAAMC,EA1IN,WAEE,IAAIC,EAAkB,CACpBC,MAAO,EACPC,OAAQ,GAEV,OAAQjB,GACN,IAAK,OACCC,EACEP,GAAYC,EAEZoB,EADEb,EACK,CACLc,MAAOR,EAASU,KAAKC,SAASC,SAASlB,gBAAgBc,MACvDC,OAAQT,EAASU,KAAKC,SAASC,SAASlB,gBAAgBe,QAGnD,CACLD,MAAOR,EAASU,KAAKC,SAASC,SAASJ,MACvCC,OAAQT,EAASU,KAAKC,SAASC,SAASH,QAGnCvB,GAAYQ,EACrBa,EAAO,CACLC,MAAOR,EAASU,KAAKC,SAASzB,SAASQ,gBAAgBc,MACvDC,OAAQT,EAASU,KAAKC,SAASzB,SAASQ,gBAAgBe,QAEjDvB,IAAaE,EACtBmB,EAAO,CACLC,MAAOR,EAASU,KAAKC,SAASzB,SAASsB,MACvCC,OAAQT,EAASU,KAAKC,SAASzB,SAASuB,QAEjCvB,GAAYE,EACrBmB,EAAO,CACLC,MAAOR,EAASU,KAAKC,SAASE,UAAUL,MACxCC,OAAQT,EAASU,KAAKC,SAASE,UAAUJ,QAElCzB,EACTuB,EAAO,CACLC,MAAOR,EAASU,KAAKC,SAAS3B,SAASwB,MACvCC,OAAQT,EAASU,KAAKC,SAAS3B,SAASyB,QAEjCxB,IACTsB,EAAO,CACLC,MAAOR,EAASU,KAAKC,SAAS1B,SAASuB,MACvCC,OAAQT,EAASU,KAAKC,SAAS1B,SAASwB,SAI5CF,EAAO,CACLC,MAAOR,EAASU,KAAKI,UAAUN,MAC/BC,OAAQT,EAASU,KAAKI,UAAUL,QAGpC,MACF,IAAK,SAEDF,EADEd,EACK,CACLe,MAAOR,EAASe,OAAOJ,SAASH,MAChCC,OAAQT,EAASe,OAAOJ,SAASF,QAG5B,CACLD,MAAOR,EAASY,SAASE,UAAUN,MACnCC,OAAQT,EAASY,SAASE,UAAUL,QAGxC,MACF,IAAK,WAEDF,EADEd,EACK,CACLe,MAAOR,EAASY,SAASD,SAASH,MAClCC,OAAQT,EAASY,SAASD,SAASF,QAG9B,CACLD,MAAOR,EAASY,SAASE,UAAUN,MACnCC,OAAQT,EAASY,SAASE,UAAUL,QAGxC,MACF,IAAK,SAEDF,EADEd,EACK,CACLe,MAAOR,EAASgB,OAAOL,SAASH,MAChCC,OAAQT,EAASgB,OAAOL,SAASF,QAG5B,CACLD,MAAOR,EAASgB,OAAOF,UAAUN,MACjCC,OAAQT,EAASgB,OAAOF,UAAUL,QAGtC,MACF,IAAK,WAEDF,EADEd,EACK,CACLe,MAAOR,EAASiB,SAASN,SAASH,MAClCC,OAAQT,EAASiB,SAASN,SAASF,QAG9B,CACLD,MAAOR,EAASiB,SAASH,UAAUN,MACnCC,OAAQT,EAASiB,SAASH,UAAUL,QAGxC,MACF,IAAK,wBAEDF,EADEd,EACK,CACLe,MAAOR,EAASkB,sBAAsBP,SAASH,MAC/CC,OAAQT,EAASkB,sBAAsBP,SAASF,QAG3C,CACLD,MAAOR,EAASkB,sBAAsBJ,UAAUN,MAChDC,OAAQT,EAASkB,sBAAsBJ,UAAUL,QAMzD,IAAMU,EAAmBxB,EAAoB,EAE7C,MAAO,CACLa,MAAO,UAAkB,IAAfD,EAAKC,OAAeW,EAAUnB,EAASJ,OAAOY,MAAQD,EAAKC,MAAS,MAC9EC,OAAQ,GAAAW,OAEND,GAAW1B,EACPO,EAASJ,OAAOa,QAA0B,IAAhBF,EAAKE,OAAkC,EAAnBJ,EAAuBA,GACrEE,EAAKE,OACP,MACJY,aAAuB,GAAAD,OAAT3B,EAAYS,EAAgCD,EAAV,MAChDqB,QAAS7B,EACL,GAAG2B,OAAAf,EAAoB,MACvB,GAAAe,OAAGjB,EAAmB,OAAAiB,OAAMhB,EAAuB,MAE1D,CAEsBmB,GAEvB,OACEC,UAACC,cAAAC,EAAMA,OAACC,IAAG,CACTC,UAAU,uMACVC,QAASvB,GAER3B,GAAYA,EAGnB"}
1
+ {"version":3,"file":"IslandMotion.js","sources":["../../src/components/IslandMotion.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC } from 'react'\nimport { RootState } from '../store'\nimport { useSelector } from 'react-redux'\nimport { motion } from 'framer-motion'\n\nexport const IslandMotion: FC<IslandMotionProps> = ({ children }) => {\n // Retrieve needed stored variables\n const { incoming, outgoing, accepted, transferring } = useSelector(\n (state: RootState) => state.currentCall,\n )\n const { isListen } = useSelector((state: RootState) => state.listen)\n const { view, isOpen, actionsExpanded } = useSelector((state: RootState) => state.island)\n const { activeAlertsCount } = useSelector((state: RootState) => state.alerts.status)\n const {\n variants,\n border_radius_collapsed,\n border_radius_expanded,\n padding_x_collapsed,\n padding_y_collapsed,\n padding_expanded,\n alert_padding_expanded\n } = useSelector((state: RootState) => state.motions)\n\n function getVariant() {\n // Initial size\n let size: SizeTypes = {\n width: 0,\n height: 0,\n }\n switch (view) {\n case 'call':\n if (isOpen) {\n if (accepted && transferring) {\n if (actionsExpanded) {\n size = {\n width: variants.call.expanded.transfer.actionsExpanded.width,\n height: variants.call.expanded.transfer.actionsExpanded.height,\n }\n } else {\n size = {\n width: variants.call.expanded.transfer.width,\n height: variants.call.expanded.transfer.height,\n }\n }\n } else if (accepted && actionsExpanded) {\n size = {\n width: variants.call.expanded.accepted.actionsExpanded.width,\n height: variants.call.expanded.accepted.actionsExpanded.height,\n }\n } else if (accepted && !isListen) {\n size = {\n width: variants.call.expanded.accepted.width,\n height: variants.call.expanded.accepted.height,\n }\n } else if (accepted && isListen) {\n size = {\n width: variants.call.expanded.listening.width,\n height: variants.call.expanded.listening.height,\n }\n } else if (incoming) {\n size = {\n width: variants.call.expanded.incoming.width,\n height: variants.call.expanded.incoming.height,\n }\n } else if (outgoing) {\n size = {\n width: variants.call.expanded.outgoing.width,\n height: variants.call.expanded.outgoing.height,\n }\n }\n } else {\n size = {\n width: variants.call.collapsed.width,\n height: variants.call.collapsed.height,\n }\n }\n break\n case 'keypad':\n if (isOpen) {\n size = {\n width: variants.keypad.expanded.width,\n height: variants.keypad.expanded.height,\n }\n } else {\n size = {\n width: variants.transfer.collapsed.width,\n height: variants.transfer.collapsed.height,\n }\n }\n break\n case 'transfer':\n if (isOpen) {\n size = {\n width: variants.transfer.expanded.width,\n height: variants.transfer.expanded.height,\n }\n } else {\n size = {\n width: variants.transfer.collapsed.width,\n height: variants.transfer.collapsed.height,\n }\n }\n break\n case 'player':\n if (isOpen) {\n size = {\n width: variants.player.expanded.width,\n height: variants.player.expanded.height,\n }\n } else {\n size = {\n width: variants.player.collapsed.width,\n height: variants.player.collapsed.height,\n }\n }\n break\n case 'recorder':\n if (isOpen) {\n size = {\n width: variants.recorder.expanded.width,\n height: variants.recorder.expanded.height,\n }\n } else {\n size = {\n width: variants.recorder.collapsed.width,\n height: variants.recorder.collapsed.height,\n }\n }\n break\n case 'physicalPhoneRecorder':\n if (isOpen) {\n size = {\n width: variants.physicalPhoneRecorder.expanded.width,\n height: variants.physicalPhoneRecorder.expanded.height,\n }\n } else {\n size = {\n width: variants.physicalPhoneRecorder.collapsed.width,\n height: variants.physicalPhoneRecorder.collapsed.height,\n }\n }\n break\n }\n\n const isAlert: boolean = activeAlertsCount > 0\n\n return {\n width: `${size.width === 0 && isAlert ? variants.alerts.width : size.width}px`,\n height: `${\n // If there is an alert and the island is open put the correct height\n isAlert && isOpen\n ? variants.alerts.height + (size.height === 0 ? alert_padding_expanded * 2 : alert_padding_expanded)\n : size.height\n }px`,\n borderRadius: isOpen ? `${border_radius_expanded}px` : `${border_radius_collapsed}px`,\n padding: isOpen\n ? `${padding_expanded}px`\n : `${padding_x_collapsed}px ${padding_y_collapsed}px`,\n }\n }\n\n const motionVariants = getVariant()\n\n return (\n <motion.div\n className='pi-pointer-events-auto pi-overflow-hidden dark:pi-bg-gray-950 pi-bg-gray-50 pi-text-xs pi-cursor-pointer dark:pi-text-white pi-text-gray-900 hover:pi-shadow-2xl pi-rounded-3xl pi-transition-shadow'\n animate={motionVariants}\n >\n {children && children}\n </motion.div>\n )\n}\n\nexport interface IslandMotionProps {\n children: ReactNode\n}\n\ntype SizeTypes = {\n width: number\n height: number\n}\n\nexport default IslandMotion\n"],"names":["IslandMotion","_a","children","_b","useSelector","state","currentCall","incoming","outgoing","accepted","transferring","isListen","listen","_c","island","view","isOpen","actionsExpanded","activeAlertsCount","alerts","status","_d","motions","variants","border_radius_collapsed","border_radius_expanded","padding_x_collapsed","padding_y_collapsed","padding_expanded","alert_padding_expanded","motionVariants","size","width","height","call","expanded","transfer","listening","collapsed","keypad","player","recorder","physicalPhoneRecorder","isAlert","concat","borderRadius","padding","getVariant","React","createElement","motion","div","className","animate"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("../lib/phone/conversation.js"),c=require("../utils/genericFunctions/eventDispatch.js"),o=require("../utils/genericFunctions/withTimeout.js");require("../lib/webrtc/janus.js");var s=require("../store/index.js");require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../node_modules/mic-check/lib/index.js");var a=require("../events/SocketEvents.js"),i=require("../utils/genericFunctions/timestamp.js"),u=require("../lib/user/extensions.js"),l=require("../utils/genericFunctions/isEmpty.js"),d=require("../node_modules/react-redux/es/hooks/useSelector.js");require("../node_modules/react-redux/es/components/Context.js"),require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var p=require("../node_modules/react-redux/es/hooks/useDispatch.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=m(n);exports.Socket=function(m){var v=m.hostName,h=m.username,g=m.authToken,b=m.reload,k=m.reloadedCallback,y=m.children,C=m.uaType,_=p.useDispatch(),N=n.useRef(),S=n.useRef(),j=d.useSelector((function(e){return e.currentUser}));return n.useEffect((function(){var n=function(e,n){var t,o=s.store.getState().currentCall,a=o.transferring,l=o.transferSwitching,d=o.transferCalls,p=s.store.getState().island.view;if(Object.keys(n).length>0){if(e.status){var m=s.store.getState().users.extensions;switch(e.status){case"ringing":_.currentCall.checkIncomingUpdatePlay({conversationId:n.id,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),incomingSocket:!0,username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||"",ownerExtension:n.owner}),c.eventDispatch("phone-island-call-ringing",{});break;case"busy":if(n&&n.connected)_.currentCall.updateCurrentCall({conversationId:n.id,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),ownerExtension:n.owner,username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||""}),_.currentCall.addTransferCalls({type:"transferred",displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),startTime:"".concat(i.getTimestampInSeconds())}),"physical"===(null===(t=null==j?void 0:j.default_device)||void 0===t?void 0:t.type)&&function(e){_.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),c.eventDispatch("phone-island-call-answered",{}),s.store.dispatch.player.stopAudioPlayer()}(n),"call"===p&&a&&_.currentCall.updateCurrentCall({transferring:!1});else if(n&&!n.connected){if(a&&!l){var f=d.find((function(e){return e.number===n.counterpartNum}));!n.connected&&f&&(_.currentCall.updateCurrentCall({transferring:!1}),c.eventDispatch("phone-island-call-transfer-failed",{}),_.currentCall.updateTransferSwitching(!1))}"REC"===(null==n?void 0:n.counterpartName)&&_.physicalRecorder.setRecordingTempVariable(!0)}n&&!n.connected&&"out"===n.direction&&_.currentCall.checkOutgoingUpdate({outgoingSocket:!0,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||""});case"onhold":var v=n.counterpartName,h=n.counterpartNum,g=n.startTime;a&&h&&v&&"<unknown>"!==v&&(_.currentCall.addTransferCalls({type:"destination",displayName:r.getDisplayName(n),number:h,startTime:"".concat(i.getTimestampInSeconds())}),_.currentCall.updateCurrentCall({displayName:r.getDisplayName(n),number:h,startTime:"".concat(g/1e3),conversationId:n.id}),_.island.setIslandView("call"));break;case"busy_ringing":c.eventDispatch("phone-island-call-ringing",{})}}}else"online"==e.status&&u.userTotallyFree()&&(_.player.stopAudioPlayer(),_.currentCall.reset(),_.physicalRecorder.setRecordingTempVariable(!1))};return S.current=t.io("https://"+v,{upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3}),S.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(S.current.id)),c.eventDispatch("phone-island-socket-connected",{})})),S.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),e.includes("server disconnect")?c.eventDispatch("phone-island-server-disconnected",{}):c.eventDispatch("phone-island-socket-disconnected",{})})),S.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),S.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),S.current.io.on("reconnect",(function(e){c.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(S.current.id,")"))})),S.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),S.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),S.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),N.current=setInterval((function(){var e=Date.now();S.current.volatile.emit("ping",o.withTimeout((function(){_.alerts.removeAlert("socket_down"),c.eventDispatch("phone-island-socket-disconnected-popup-close",{});var n=Date.now()-e;console.debug("Socket latency: ".concat(n,"ms")),console.debug("Socket is reachable!")}),(function(){_.alerts.setAlert("socket_down"),c.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.debug("Socket is unreachable!")}),7e3))}),7e3),S.current.on("connect",(function(){console.debug("Socket on: "+v+" is connected!"),S.current.emit("login",{accessKeyId:"".concat(h),token:g,uaType:C})})),S.current.on("authe_ok",(function(){console.debug("Socket authentication success!")})),S.current.on("userMainPresenceUpdate",(function(n){s.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),a.dispatchMainPresence(n)})),S.current.on("extenUpdate",(function(e){_.users.updateExtension(e);var t=s.store.getState().users.extensions,r={};for(var c in t){var o=t[c].username,i=t[c].exten;r[o]||(r[o]=[]),r[o].push(i)}var u=r[e.username],d=e.conversations[Object.keys(e.conversations)[0]]||{};if(a.dispatchExtensions(e),l.isEmpty(d)){var p=null==u?void 0:u.some((function(e){var n,r=null===(n=t[e])||void 0===n?void 0:n.conversations;return!l.isEmpty(r)}));p||a.dispatchConversations(e)}else a.dispatchConversations(e);e.username===h&&(n(e,d),_.currentUser.updateConversations(e))})),S.current.on("queueUpdate",(function(e){a.dispatchQueueUpdate(e)})),S.current.on("queueMemberUpdate",(function(e){a.dispatchQueueMemberUpdate(e)})),S.current.on("takeOver",(function(){a.dispatchAlreadyLogin()})),S.current.on("serverReloaded",(function(){a.dispatchServerReload()})),S.current.on("parkingUpdate",(function(){a.dispatchParkingUpdate()})),S.current.on("callNethLink",(function(e,n){a.dispatchUrlCall(e,n)})),function(){clearInterval(N.current),S.current.close()}}),[]),n.useEffect((function(){b&&(console.info("websocket reconnection"),S.current.disconnect(),S.current.connect(),k())}),[b]),f.default.createElement(f.default.Fragment,null,y)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),n=require("react");require("../node_modules/react-redux/es/index.js");var t=require("../node_modules/socket.io-client/build/esm/index.js"),r=require("../lib/phone/conversation.js"),c=require("../utils/genericFunctions/eventDispatch.js"),o=require("../utils/genericFunctions/withTimeout.js");require("../lib/webrtc/janus.js");var a=require("../store/index.js");require("../node_modules/webrtc-adapter/src/js/adapter_core.js"),require("../node_modules/mic-check/lib/index.js");var s=require("../events/SocketEvents.js"),i=require("../utils/genericFunctions/timestamp.js"),u=require("../lib/user/extensions.js"),d=require("../utils/genericFunctions/isEmpty.js"),l=require("../node_modules/react-redux/es/hooks/useSelector.js");require("../node_modules/react-redux/es/components/Context.js"),require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var p=require("../node_modules/react-redux/es/hooks/useDispatch.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=m(n);exports.Socket=function(m){var h=m.hostName,v=m.username,g=m.authToken,k=m.reload,b=m.reloadedCallback,y=m.children,C=m.uaType,S=p.useDispatch(),_=n.useRef(),N=n.useRef(),j=l.useSelector((function(e){return e.currentUser}));return n.useEffect((function(){var n=function(e,n){var t,o=a.store.getState().currentCall,s=o.transferring,d=o.transferSwitching,l=o.transferCalls,p=a.store.getState().island.view;if(Object.keys(n).length>0){if(e.status){var m=a.store.getState().users.extensions;switch(e.status){case"ringing":S.currentCall.checkIncomingUpdatePlay({conversationId:n.id,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),incomingSocket:!0,username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||"",ownerExtension:n.owner}),c.eventDispatch("phone-island-call-ringing",{});break;case"busy":if(n&&n.connected)S.currentCall.updateCurrentCall({conversationId:n.id,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),ownerExtension:n.owner,username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||""}),S.currentCall.checkAcceptedUpdate({acceptedSocket:!0}),S.currentCall.addTransferCalls({type:"transferred",displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),startTime:"".concat(i.getTimestampInSeconds())}),"physical"===(null===(t=null==j?void 0:j.default_device)||void 0===t?void 0:t.type)&&function(e){S.currentCall.updateCurrentCall({conversationId:e.id,accepted:!0,incoming:"in"!==e.direction&&void 0}),c.eventDispatch("phone-island-call-answered",{}),a.store.dispatch.player.stopAudioPlayer()}(n),"call"===p&&s&&S.currentCall.updateCurrentCall({transferring:!1});else if(n&&!n.connected){if(s&&!d){var f=l.find((function(e){return e.number===n.counterpartNum}));!n.connected&&f&&(S.currentCall.updateCurrentCall({transferring:!1}),c.eventDispatch("phone-island-call-transfer-failed",{}),S.currentCall.updateTransferSwitching(!1))}"REC"===(null==n?void 0:n.counterpartName)&&S.physicalRecorder.setRecordingTempVariable(!0)}n&&!n.connected&&"out"===n.direction&&S.currentCall.checkOutgoingUpdate({outgoingSocket:!0,displayName:r.getDisplayName(n),number:"".concat(n.counterpartNum),username:"".concat(m&&m[n.counterpartNum]&&m[n.counterpartNum].username)||""});case"onhold":var h=n.counterpartName,v=n.counterpartNum,g=n.startTime;s&&v&&h&&"<unknown>"!==h&&(S.currentCall.addTransferCalls({type:"destination",displayName:r.getDisplayName(n),number:v,startTime:"".concat(i.getTimestampInSeconds())}),S.currentCall.updateCurrentCall({displayName:r.getDisplayName(n),number:v,startTime:"".concat(g/1e3),conversationId:n.id}),S.island.setIslandView("call"));break;case"busy_ringing":c.eventDispatch("phone-island-call-ringing",{})}}}else"online"==e.status&&u.userTotallyFree()&&(S.player.stopAudioPlayer(),S.currentCall.reset(),S.physicalRecorder.setRecordingTempVariable(!1))};return N.current=t.io("https://"+h,{upgrade:!1,transports:["websocket"],reconnection:!0,reconnectionDelay:2e3}),N.current.on("connect",(function(){console.debug("Socket connected sid: ".concat(N.current.id)),c.eventDispatch("phone-island-socket-connected",{})})),N.current.on("disconnect",(function(e){console.debug("Socket disconnect - reason: ".concat(e)),e.includes("server disconnect")?c.eventDispatch("phone-island-server-disconnected",{}):c.eventDispatch("phone-island-socket-disconnected",{})})),N.current.io.on("error",(function(e){console.debug("Socket error: ",e)})),N.current.on("connect_error",(function(e){console.debug("Socket connect_error: ",e)})),N.current.io.on("reconnect",(function(e){c.eventDispatch("phone-island-socket-reconnected",{}),console.debug("Socket reconnect attemp ".concat(e," (sid: ").concat(N.current.id,")"))})),N.current.io.on("reconnect_attempt",(function(e){console.debug("Socket reconnect_attempt ".concat(e))})),N.current.io.on("reconnect_error",(function(e){console.debug("Socket reconnect_error: ",e)})),N.current.io.on("reconnect_failed",(function(){console.debug("Socket reconnect_failed")})),_.current=setInterval((function(){var e=Date.now();N.current.volatile.emit("ping",o.withTimeout((function(){S.alerts.removeAlert("socket_down"),c.eventDispatch("phone-island-socket-disconnected-popup-close",{});var n=Date.now()-e;console.debug("Socket latency: ".concat(n,"ms")),console.debug("Socket is reachable!")}),(function(){S.alerts.setAlert("socket_down"),c.eventDispatch("phone-island-socket-disconnected-popup-open",{}),console.debug("Socket is unreachable!")}),7e3))}),7e3),N.current.on("connect",(function(){console.debug("Socket on: "+h+" is connected!"),N.current.emit("login",{accessKeyId:"".concat(v),token:g,uaType:C})})),N.current.on("authe_ok",(function(){console.debug("Socket authentication success!")})),N.current.on("userMainPresenceUpdate",(function(n){a.store.dispatch.users.updateEndpointMainPresence(e.__assign({},n.mainPresence)),s.dispatchMainPresence(n)})),N.current.on("extenUpdate",(function(e){S.users.updateExtension(e);var t=a.store.getState().users.extensions,r={};for(var c in t){var o=t[c].username,i=t[c].exten;r[o]||(r[o]=[]),r[o].push(i)}var u=r[e.username],l=e.conversations[Object.keys(e.conversations)[0]]||{};if(s.dispatchExtensions(e),d.isEmpty(l)){var p=null==u?void 0:u.some((function(e){var n,r=null===(n=t[e])||void 0===n?void 0:n.conversations;return!d.isEmpty(r)}));p||s.dispatchConversations(e)}else s.dispatchConversations(e);e.username===v&&(n(e,l),S.currentUser.updateConversations(e))})),N.current.on("queueUpdate",(function(e){s.dispatchQueueUpdate(e)})),N.current.on("queueMemberUpdate",(function(e){s.dispatchQueueMemberUpdate(e)})),N.current.on("takeOver",(function(){s.dispatchAlreadyLogin()})),N.current.on("serverReloaded",(function(){s.dispatchServerReload()})),N.current.on("parkingUpdate",(function(){s.dispatchParkingUpdate()})),N.current.on("actionNethLink",(function(e,n){s.dispatchUrlCall(e,n)})),function(){clearInterval(_.current),N.current.close()}}),[]),n.useEffect((function(){k&&(console.info("websocket reconnection"),N.current.disconnect(),N.current.connect(),b())}),[k]),f.default.createElement(f.default.Fragment,null,y)};
2
2
  //# sourceMappingURL=Socket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Socket.js","sources":["../../src/components/Socket.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC, useEffect, useRef } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../store'\nimport { io } from 'socket.io-client'\nimport { getDisplayName } from '../lib/phone/conversation'\nimport {\n dispatchMainPresence,\n dispatchConversations,\n dispatchQueueUpdate,\n dispatchQueueMemberUpdate,\n dispatchAlreadyLogin,\n dispatchServerReload,\n dispatchParkingUpdate,\n dispatchExtensions,\n dispatchUrlCall,\n} from '../events'\nimport { store } from '../store'\nimport { eventDispatch, withTimeout } from '../utils'\nimport type {\n ConversationTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueueUpdateMemberTypes,\n MainPresenceTypes,\n} from '../types'\nimport { getTimestampInSeconds } from '../utils/genericFunctions/timestamp'\nimport { userTotallyFree } from '../lib/user/extensions'\nimport { isEmpty } from '../utils/genericFunctions/isEmpty'\n\ninterface SocketProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n reload: boolean\n reloadedCallback: () => void\n uaType: string\n}\n\nexport const Socket: FC<SocketProps> = ({\n hostName,\n username,\n authToken,\n reload,\n reloadedCallback,\n children,\n uaType,\n}) => {\n const dispatch = useDispatch<Dispatch>()\n const connectionCheckInterval = useRef<any>()\n const socket = useRef<any>()\n\n // get user information\n const userInformation = useSelector((state: RootState) => state.currentUser)\n\n const checkDefaultDeviceConversationActive = (conv: any) => {\n dispatch.currentCall.updateCurrentCall({\n conversationId: conv.id,\n accepted: true,\n incoming: conv.direction === 'in' ? false : undefined,\n })\n eventDispatch('phone-island-call-answered', {})\n\n // Stop the local audio element ringing\n store.dispatch.player.stopAudioPlayer()\n }\n\n const checkDefaultDeviceConversationClosed = (conv: any) => {\n // store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n // store.dispatch.listen.reset()\n }\n\n useEffect(() => {\n /**\n * Manages event and data for the currentUser\n *\n * @param res The data from the socket\n * @param conv The conversation data\n */\n const handleCurrentUserEvents = (res: ExtensionTypes, conv: ConversationTypes) => {\n // Handle transferring data\n const { transferring, transferSwitching, transferCalls } = store.getState().currentCall\n\n const view = store.getState().island.view\n // Check conversation isn't empty\n if (Object.keys(conv).length > 0) {\n // With conversation\n if (res.status) {\n const { extensions } = store.getState().users\n switch (res.status) {\n case 'ringing':\n // The name and the number are updated here not in webrtc\n dispatch.currentCall.checkIncomingUpdatePlay({\n conversationId: conv.id,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n incomingSocket: true,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n ownerExtension: conv.owner,\n })\n\n eventDispatch('phone-island-call-ringing', {})\n\n break\n // @ts-ignore\n case 'busy':\n if (conv && conv.connected) {\n // Current call accepted and update connected call\n dispatch.currentCall.updateCurrentCall({\n conversationId: conv.id,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n ownerExtension: conv.owner,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n })\n // Add call to transfer calls\n dispatch.currentCall.addTransferCalls({\n type: 'transferred',\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n startTime: `${getTimestampInSeconds()}`,\n })\n\n if (userInformation?.default_device?.type === 'physical') {\n checkDefaultDeviceConversationActive(conv)\n }\n if (view === 'call' && transferring) {\n dispatch.currentCall.updateCurrentCall({\n transferring: false,\n })\n }\n }\n // Handle not connected calls\n else if (conv && !conv.connected) {\n if (transferring && !transferSwitching) {\n // Handle hangup during transfer\n const inTransferCalls = transferCalls.find(\n (item) => item.number === conv.counterpartNum,\n )\n if (!conv.connected && inTransferCalls) {\n // Update transferring data for the current call\n dispatch.currentCall.updateCurrentCall({\n transferring: false,\n })\n eventDispatch('phone-island-call-transfer-failed', {})\n // Reset transfer switching\n // TODO - It needs to enhance how conversation connections (conv.connected) are updated server side\n // TODO - The transfer end is not handled when the an user hangups or after call switch\n dispatch.currentCall.updateTransferSwitching(false)\n }\n }\n if (conv?.counterpartName === 'REC') {\n dispatch.physicalRecorder.setRecordingTempVariable(true)\n }\n }\n // Handle outgoing call\n if (conv && !conv.connected && conv.direction === 'out') {\n // Update the current outgoing conversation\n dispatch.currentCall.checkOutgoingUpdate({\n outgoingSocket: true,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n })\n }\n case 'onhold':\n // The new conversation during transferring\n const { counterpartName, counterpartNum, startTime } = conv\n if (\n transferring &&\n counterpartNum &&\n counterpartName &&\n counterpartName !== '<unknown>'\n ) {\n // Add call to transfer calls\n dispatch.currentCall.addTransferCalls({\n type: 'destination',\n displayName: getDisplayName(conv),\n number: counterpartNum,\n startTime: `${getTimestampInSeconds()}`,\n })\n // Set the current call informations\n dispatch.currentCall.updateCurrentCall({\n displayName: getDisplayName(conv),\n number: counterpartNum,\n startTime: `${startTime / 1000}`,\n conversationId: conv.id,\n })\n // Set the view of the island to call\n dispatch.island.setIslandView('call')\n }\n break\n case 'busy_ringing':\n eventDispatch('phone-island-call-ringing', {})\n break\n default:\n break\n }\n }\n } else {\n // Without conversation for physical phone management\n if (res.status == 'online' && userTotallyFree()) {\n // Stop ringing sounds\n dispatch.player.stopAudioPlayer()\n // Reset current call info\n dispatch.currentCall.reset()\n dispatch.physicalRecorder.setRecordingTempVariable(false)\n }\n }\n }\n\n /**\n * Initialize socket connection and listeners\n */\n const initSocketConnection = () => {\n socket.current = io('https://' + hostName, {\n upgrade: false,\n transports: ['websocket'],\n reconnection: true,\n reconnectionDelay: 2000,\n })\n\n // Handle socket errors\n socket.current.on('connect', () => {\n console.debug(`Socket connected sid: ${socket.current.id}`)\n eventDispatch('phone-island-socket-connected', {})\n })\n socket.current.on('disconnect', (reason) => {\n console.debug(`Socket disconnect - reason: ${reason}`)\n if (reason.includes('server disconnect')) {\n eventDispatch('phone-island-server-disconnected', {})\n } else {\n eventDispatch('phone-island-socket-disconnected', {})\n }\n })\n socket.current.io.on('error', (err) => {\n console.debug(`Socket error: `, err)\n })\n socket.current.on('connect_error', (err) => {\n console.debug(`Socket connect_error: `, err)\n })\n socket.current.io.on('reconnect', (attempt) => {\n eventDispatch('phone-island-socket-reconnected', {})\n console.debug(`Socket reconnect attemp ${attempt} (sid: ${socket.current.id})`)\n })\n socket.current.io.on('reconnect_attempt', (attempt) => {\n console.debug(`Socket reconnect_attempt ${attempt}`)\n })\n socket.current.io.on('reconnect_error', (err) => {\n console.debug(`Socket reconnect_error: `, err)\n })\n socket.current.io.on('reconnect_failed', () => {\n console.debug(`Socket reconnect_failed`)\n })\n\n // Checks if socket is reachable every 5 seconds\n connectionCheckInterval.current = setInterval(() => {\n const start = Date.now()\n socket.current.volatile.emit(\n 'ping',\n withTimeout(\n () => {\n // Remove socket_down alert\n dispatch.alerts.removeAlert('socket_down')\n eventDispatch('phone-island-socket-disconnected-popup-close', {})\n // Calculate and log latency\n const latency = Date.now() - start\n console.debug(`Socket latency: ${latency}ms`)\n console.debug('Socket is reachable!')\n },\n () => {\n // Set socket_down alert\n dispatch.alerts.setAlert('socket_down')\n eventDispatch('phone-island-socket-disconnected-popup-open', {})\n console.debug('Socket is unreachable!')\n },\n 7 * 1000, // Waits for the response 7 seconds\n ),\n )\n }, 7 * 1000) // Executes a new check every 7 seconds\n\n // Handle connection message\n socket.current.on('connect', () => {\n console.debug('Socket on: ' + hostName + ' is connected!')\n socket.current.emit('login', {\n accessKeyId: `${username}`,\n token: authToken,\n uaType: uaType,\n })\n })\n\n // Handle authentication success message\n socket.current.on('authe_ok', () => {\n console.debug('Socket authentication success!')\n })\n\n socket.current.on('userMainPresenceUpdate', (res: MainPresenceTypes) => {\n // Update endpoints store\n store.dispatch.users.updateEndpointMainPresence({ ...res.mainPresence })\n // Dispatch dispatchMainPresence Event\n dispatchMainPresence(res)\n })\n\n socket.current.on('extenUpdate', (res: ExtensionTypes) => {\n // Update extensions and conversations in users store\n dispatch.users.updateExtension(res)\n\n //retrieve all extensions from store\n const { extensions }: any = store.getState().users\n const deviceMap: any = {}\n\n // Create a map of extensions for each user\n for (const key in extensions) {\n const user: any = extensions[key].username\n const ext: any = extensions[key].exten\n\n if (!deviceMap[user]) {\n deviceMap[user] = []\n }\n\n deviceMap[user].push(ext)\n }\n\n const associatedExtensions: any = deviceMap[res.username]\n\n // Initialize conversation\n let conv = res.conversations[Object.keys(res.conversations)[0]] || {}\n\n // Update all extensions and send the dispatch event\n dispatchExtensions(res)\n\n // second step update conversation\n\n // Check if conversation is empty\n if (isEmpty(conv)) {\n // Check if there is at least one conversation not empty\n const hasNonEmptyConversation = associatedExtensions?.some((ext: any) => {\n const extConversations = extensions[ext]?.conversations\n\n if (!isEmpty(extConversations)) {\n // not empty conversation found\n return true\n }\n\n return false\n })\n\n if (!hasNonEmptyConversation) {\n // Conversation is empty and there is no conversation for the user\n dispatchConversations(res)\n }\n } else {\n // Dispatch conversation event\n dispatchConversations(res)\n }\n\n // Handle only the events of the user\n if (res.username === username) {\n handleCurrentUserEvents(res, conv)\n // Update the conversations of the user\n dispatch.currentUser.updateConversations(res)\n }\n })\n\n // `queueUpdate` is the socket event when the data of a queue updates\n socket.current.on('queueUpdate', (res: QueuesUpdateTypes) => {\n // Dispatch queueUpdate event\n dispatchQueueUpdate(res)\n })\n\n // `queueMemberUpdate` is the socket event when the data of a queue member changes\n socket.current.on('queueMemberUpdate', (res: QueueUpdateMemberTypes) => {\n // Dispatch queueMemberUpdate event\n dispatchQueueMemberUpdate(res)\n })\n\n // `takeOver` is the socket event when the user does login from another new window\n socket.current.on('takeOver', () => {\n // Dispatch takeOver event\n dispatchAlreadyLogin()\n })\n\n // `serverReload` is the socket event when server is reloaded\n socket.current.on('serverReloaded', () => {\n // Dispatch serverReload event\n dispatchServerReload()\n })\n\n // `serverReload` is the socket event when server is reloaded\n socket.current.on('parkingUpdate', () => {\n // Dispatch serverReload event\n dispatchParkingUpdate()\n })\n\n // `callNethLink` is the socket event when user make a call or a action from NethLink and has a physical device\n socket.current.on('callNethLink', (link, urlType) => {\n // Dispatch phone island physical call event with the link and the urlType\n dispatchUrlCall(link, urlType)\n })\n }\n\n initSocketConnection()\n\n // Stop the check socket interval\n // Close the socket connection\n return () => {\n clearInterval(connectionCheckInterval.current)\n socket.current.close()\n }\n }, [])\n\n // Manage reload events\n useEffect(() => {\n if (reload) {\n console.info('websocket reconnection')\n socket.current.disconnect()\n socket.current.connect()\n reloadedCallback()\n }\n }, [reload])\n\n return <>{children}</>\n}\n"],"names":["_a","hostName","username","authToken","reload","reloadedCallback","children","uaType","dispatch","useDispatch","connectionCheckInterval","useRef","socket","userInformation","useSelector","state","currentUser","useEffect","handleCurrentUserEvents","res","conv","_b","store","getState","currentCall","transferring","transferSwitching","transferCalls","view","island","Object","keys","length","status","extensions","users","checkIncomingUpdatePlay","conversationId","id","displayName","getDisplayName","number","concat","counterpartNum","incomingSocket","ownerExtension","owner","eventDispatch","connected","updateCurrentCall","addTransferCalls","type","startTime","getTimestampInSeconds","default_device","accepted","incoming","direction","undefined","player","stopAudioPlayer","checkDefaultDeviceConversationActive","inTransferCalls","find","item","updateTransferSwitching","counterpartName","physicalRecorder","setRecordingTempVariable","checkOutgoingUpdate","outgoingSocket","setIslandView","userTotallyFree","reset","current","io","upgrade","transports","reconnection","reconnectionDelay","on","console","debug","reason","includes","err","attempt","setInterval","start","Date","now","volatile","emit","withTimeout","alerts","removeAlert","latency","setAlert","accessKeyId","token","updateEndpointMainPresence","__assign","mainPresence","dispatchMainPresence","updateExtension","deviceMap","key","user","ext","exten","push","associatedExtensions","conversations","dispatchExtensions","isEmpty","hasNonEmptyConversation","some","extConversations","dispatchConversations","updateConversations","dispatchQueueUpdate","dispatchQueueMemberUpdate","dispatchAlreadyLogin","dispatchServerReload","dispatchParkingUpdate","link","urlType","dispatchUrlCall","clearInterval","close","info","disconnect","connect","React","createElement","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Socket.js","sources":["../../src/components/Socket.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type ReactNode, FC, useEffect, useRef } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Dispatch, RootState } from '../store'\nimport { io } from 'socket.io-client'\nimport { getDisplayName } from '../lib/phone/conversation'\nimport {\n dispatchMainPresence,\n dispatchConversations,\n dispatchQueueUpdate,\n dispatchQueueMemberUpdate,\n dispatchAlreadyLogin,\n dispatchServerReload,\n dispatchParkingUpdate,\n dispatchExtensions,\n dispatchUrlCall,\n} from '../events'\nimport { store } from '../store'\nimport { eventDispatch, withTimeout } from '../utils'\nimport type {\n ConversationTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueueUpdateMemberTypes,\n MainPresenceTypes,\n} from '../types'\nimport { getTimestampInSeconds } from '../utils/genericFunctions/timestamp'\nimport { userTotallyFree } from '../lib/user/extensions'\nimport { isEmpty } from '../utils/genericFunctions/isEmpty'\n\ninterface SocketProps {\n children: ReactNode\n hostName: string\n username: string\n authToken: string\n reload: boolean\n reloadedCallback: () => void\n uaType: string\n}\n\nexport const Socket: FC<SocketProps> = ({\n hostName,\n username,\n authToken,\n reload,\n reloadedCallback,\n children,\n uaType,\n}) => {\n const dispatch = useDispatch<Dispatch>()\n const connectionCheckInterval = useRef<any>()\n const socket = useRef<any>()\n\n // get user information\n const userInformation = useSelector((state: RootState) => state.currentUser)\n\n const checkDefaultDeviceConversationActive = (conv: any) => {\n dispatch.currentCall.updateCurrentCall({\n conversationId: conv.id,\n accepted: true,\n incoming: conv.direction === 'in' ? false : undefined,\n })\n eventDispatch('phone-island-call-answered', {})\n\n // Stop the local audio element ringing\n store.dispatch.player.stopAudioPlayer()\n }\n\n const checkDefaultDeviceConversationClosed = (conv: any) => {\n // store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n // store.dispatch.listen.reset()\n }\n\n useEffect(() => {\n /**\n * Manages event and data for the currentUser\n *\n * @param res The data from the socket\n * @param conv The conversation data\n */\n const handleCurrentUserEvents = (res: ExtensionTypes, conv: ConversationTypes) => {\n // Handle transferring data\n const { transferring, transferSwitching, transferCalls } = store.getState().currentCall\n\n const view = store.getState().island.view\n // Check conversation isn't empty\n if (Object.keys(conv).length > 0) {\n // With conversation\n if (res.status) {\n const { extensions } = store.getState().users\n switch (res.status) {\n case 'ringing':\n // The name and the number are updated here not in webrtc\n dispatch.currentCall.checkIncomingUpdatePlay({\n conversationId: conv.id,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n incomingSocket: true,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n ownerExtension: conv.owner,\n })\n\n eventDispatch('phone-island-call-ringing', {})\n\n break\n // @ts-ignore\n case 'busy':\n if (conv && conv.connected) {\n // Current call accepted and update connected call\n dispatch.currentCall.updateCurrentCall({\n conversationId: conv.id,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n ownerExtension: conv.owner,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n })\n // Update the current call informations for physical devices\n dispatch.currentCall.checkAcceptedUpdate({\n acceptedSocket: true,\n })\n // Add call to transfer calls\n dispatch.currentCall.addTransferCalls({\n type: 'transferred',\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n startTime: `${getTimestampInSeconds()}`,\n })\n\n if (userInformation?.default_device?.type === 'physical') {\n checkDefaultDeviceConversationActive(conv)\n }\n if (view === 'call' && transferring) {\n dispatch.currentCall.updateCurrentCall({\n transferring: false,\n })\n }\n }\n // Handle not connected calls\n else if (conv && !conv.connected) {\n if (transferring && !transferSwitching) {\n // Handle hangup during transfer\n const inTransferCalls = transferCalls.find(\n (item) => item.number === conv.counterpartNum,\n )\n if (!conv.connected && inTransferCalls) {\n // Update transferring data for the current call\n dispatch.currentCall.updateCurrentCall({\n transferring: false,\n })\n eventDispatch('phone-island-call-transfer-failed', {})\n // Reset transfer switching\n // TODO - It needs to enhance how conversation connections (conv.connected) are updated server side\n // TODO - The transfer end is not handled when the an user hangups or after call switch\n dispatch.currentCall.updateTransferSwitching(false)\n }\n }\n if (conv?.counterpartName === 'REC') {\n dispatch.physicalRecorder.setRecordingTempVariable(true)\n }\n }\n // Handle outgoing call\n if (conv && !conv.connected && conv.direction === 'out') {\n // Update the current outgoing conversation\n dispatch.currentCall.checkOutgoingUpdate({\n outgoingSocket: true,\n displayName: getDisplayName(conv),\n number: `${conv.counterpartNum}`,\n username:\n `${\n extensions &&\n extensions[conv.counterpartNum] &&\n extensions[conv.counterpartNum].username\n }` || '',\n })\n }\n case 'onhold':\n // The new conversation during transferring\n const { counterpartName, counterpartNum, startTime } = conv\n if (\n transferring &&\n counterpartNum &&\n counterpartName &&\n counterpartName !== '<unknown>'\n ) {\n // Add call to transfer calls\n dispatch.currentCall.addTransferCalls({\n type: 'destination',\n displayName: getDisplayName(conv),\n number: counterpartNum,\n startTime: `${getTimestampInSeconds()}`,\n })\n // Set the current call informations\n dispatch.currentCall.updateCurrentCall({\n displayName: getDisplayName(conv),\n number: counterpartNum,\n startTime: `${startTime / 1000}`,\n conversationId: conv.id,\n })\n // Set the view of the island to call\n dispatch.island.setIslandView('call')\n }\n break\n case 'busy_ringing':\n eventDispatch('phone-island-call-ringing', {})\n break\n default:\n break\n }\n }\n } else {\n // Without conversation for physical phone management\n if (res.status == 'online' && userTotallyFree()) {\n // Stop ringing sounds\n dispatch.player.stopAudioPlayer()\n // Reset current call info\n dispatch.currentCall.reset()\n dispatch.physicalRecorder.setRecordingTempVariable(false)\n }\n }\n }\n\n /**\n * Initialize socket connection and listeners\n */\n const initSocketConnection = () => {\n socket.current = io('https://' + hostName, {\n upgrade: false,\n transports: ['websocket'],\n reconnection: true,\n reconnectionDelay: 2000,\n })\n\n // Handle socket errors\n socket.current.on('connect', () => {\n console.debug(`Socket connected sid: ${socket.current.id}`)\n eventDispatch('phone-island-socket-connected', {})\n })\n socket.current.on('disconnect', (reason) => {\n console.debug(`Socket disconnect - reason: ${reason}`)\n if (reason.includes('server disconnect')) {\n eventDispatch('phone-island-server-disconnected', {})\n } else {\n eventDispatch('phone-island-socket-disconnected', {})\n }\n })\n socket.current.io.on('error', (err) => {\n console.debug(`Socket error: `, err)\n })\n socket.current.on('connect_error', (err) => {\n console.debug(`Socket connect_error: `, err)\n })\n socket.current.io.on('reconnect', (attempt) => {\n eventDispatch('phone-island-socket-reconnected', {})\n console.debug(`Socket reconnect attemp ${attempt} (sid: ${socket.current.id})`)\n })\n socket.current.io.on('reconnect_attempt', (attempt) => {\n console.debug(`Socket reconnect_attempt ${attempt}`)\n })\n socket.current.io.on('reconnect_error', (err) => {\n console.debug(`Socket reconnect_error: `, err)\n })\n socket.current.io.on('reconnect_failed', () => {\n console.debug(`Socket reconnect_failed`)\n })\n\n // Checks if socket is reachable every 5 seconds\n connectionCheckInterval.current = setInterval(() => {\n const start = Date.now()\n socket.current.volatile.emit(\n 'ping',\n withTimeout(\n () => {\n // Remove socket_down alert\n dispatch.alerts.removeAlert('socket_down')\n eventDispatch('phone-island-socket-disconnected-popup-close', {})\n // Calculate and log latency\n const latency = Date.now() - start\n console.debug(`Socket latency: ${latency}ms`)\n console.debug('Socket is reachable!')\n },\n () => {\n // Set socket_down alert\n dispatch.alerts.setAlert('socket_down')\n eventDispatch('phone-island-socket-disconnected-popup-open', {})\n console.debug('Socket is unreachable!')\n },\n 7 * 1000, // Waits for the response 7 seconds\n ),\n )\n }, 7 * 1000) // Executes a new check every 7 seconds\n\n // Handle connection message\n socket.current.on('connect', () => {\n console.debug('Socket on: ' + hostName + ' is connected!')\n socket.current.emit('login', {\n accessKeyId: `${username}`,\n token: authToken,\n uaType: uaType,\n })\n })\n\n // Handle authentication success message\n socket.current.on('authe_ok', () => {\n console.debug('Socket authentication success!')\n })\n\n socket.current.on('userMainPresenceUpdate', (res: MainPresenceTypes) => {\n // Update endpoints store\n store.dispatch.users.updateEndpointMainPresence({ ...res.mainPresence })\n // Dispatch dispatchMainPresence Event\n dispatchMainPresence(res)\n })\n\n socket.current.on('extenUpdate', (res: ExtensionTypes) => {\n // Update extensions and conversations in users store\n dispatch.users.updateExtension(res)\n\n //retrieve all extensions from store\n const { extensions }: any = store.getState().users\n const deviceMap: any = {}\n\n // Create a map of extensions for each user\n for (const key in extensions) {\n const user: any = extensions[key].username\n const ext: any = extensions[key].exten\n\n if (!deviceMap[user]) {\n deviceMap[user] = []\n }\n\n deviceMap[user].push(ext)\n }\n\n const associatedExtensions: any = deviceMap[res.username]\n\n // Initialize conversation\n let conv = res.conversations[Object.keys(res.conversations)[0]] || {}\n\n // Update all extensions and send the dispatch event\n dispatchExtensions(res)\n\n // second step update conversation\n\n // Check if conversation is empty\n if (isEmpty(conv)) {\n // Check if there is at least one conversation not empty\n const hasNonEmptyConversation = associatedExtensions?.some((ext: any) => {\n const extConversations = extensions[ext]?.conversations\n\n if (!isEmpty(extConversations)) {\n // not empty conversation found\n return true\n }\n\n return false\n })\n\n if (!hasNonEmptyConversation) {\n // Conversation is empty and there is no conversation for the user\n dispatchConversations(res)\n }\n } else {\n // Dispatch conversation event\n dispatchConversations(res)\n }\n\n // Handle only the events of the user\n if (res.username === username) {\n handleCurrentUserEvents(res, conv)\n // Update the conversations of the user\n dispatch.currentUser.updateConversations(res)\n }\n })\n\n // `queueUpdate` is the socket event when the data of a queue updates\n socket.current.on('queueUpdate', (res: QueuesUpdateTypes) => {\n // Dispatch queueUpdate event\n dispatchQueueUpdate(res)\n })\n\n // `queueMemberUpdate` is the socket event when the data of a queue member changes\n socket.current.on('queueMemberUpdate', (res: QueueUpdateMemberTypes) => {\n // Dispatch queueMemberUpdate event\n dispatchQueueMemberUpdate(res)\n })\n\n // `takeOver` is the socket event when the user does login from another new window\n socket.current.on('takeOver', () => {\n // Dispatch takeOver event\n dispatchAlreadyLogin()\n })\n\n // `serverReload` is the socket event when server is reloaded\n socket.current.on('serverReloaded', () => {\n // Dispatch serverReload event\n dispatchServerReload()\n })\n\n // `serverReload` is the socket event when server is reloaded\n socket.current.on('parkingUpdate', () => {\n // Dispatch serverReload event\n dispatchParkingUpdate()\n })\n\n // `actionNethLink` is the socket event when user make a call or a action from NethLink and has a physical device\n socket.current.on('actionNethLink', (link, urlType) => {\n // Dispatch phone island physical call event with the link and the urlType\n dispatchUrlCall(link, urlType)\n })\n }\n\n initSocketConnection()\n\n // Stop the check socket interval\n // Close the socket connection\n return () => {\n clearInterval(connectionCheckInterval.current)\n socket.current.close()\n }\n }, [])\n\n // Manage reload events\n useEffect(() => {\n if (reload) {\n console.info('websocket reconnection')\n socket.current.disconnect()\n socket.current.connect()\n reloadedCallback()\n }\n }, [reload])\n\n return <>{children}</>\n}\n"],"names":["_a","hostName","username","authToken","reload","reloadedCallback","children","uaType","dispatch","useDispatch","connectionCheckInterval","useRef","socket","userInformation","useSelector","state","currentUser","useEffect","handleCurrentUserEvents","res","conv","_b","store","getState","currentCall","transferring","transferSwitching","transferCalls","view","island","Object","keys","length","status","extensions","users","checkIncomingUpdatePlay","conversationId","id","displayName","getDisplayName","number","concat","counterpartNum","incomingSocket","ownerExtension","owner","eventDispatch","connected","updateCurrentCall","checkAcceptedUpdate","acceptedSocket","addTransferCalls","type","startTime","getTimestampInSeconds","default_device","accepted","incoming","direction","undefined","player","stopAudioPlayer","checkDefaultDeviceConversationActive","inTransferCalls","find","item","updateTransferSwitching","counterpartName","physicalRecorder","setRecordingTempVariable","checkOutgoingUpdate","outgoingSocket","setIslandView","userTotallyFree","reset","current","io","upgrade","transports","reconnection","reconnectionDelay","on","console","debug","reason","includes","err","attempt","setInterval","start","Date","now","volatile","emit","withTimeout","alerts","removeAlert","latency","setAlert","accessKeyId","token","updateEndpointMainPresence","__assign","mainPresence","dispatchMainPresence","updateExtension","deviceMap","key","user","ext","exten","push","associatedExtensions","conversations","dispatchExtensions","isEmpty","hasNonEmptyConversation","some","extConversations","dispatchConversations","updateConversations","dispatchQueueUpdate","dispatchQueueMemberUpdate","dispatchAlreadyLogin","dispatchServerReload","dispatchParkingUpdate","link","urlType","dispatchUrlCall","clearInterval","close","info","disconnect","connect","React","createElement","Fragment"],"mappings":"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"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- *,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }@supports (-moz-appearance:none){*{scrollbar-color:auto;scrollbar-width:auto}}.pi-pointer-events-none{pointer-events:none}.pi-pointer-events-auto{pointer-events:auto}.pi-fixed{position:fixed}.pi-absolute{position:absolute}.pi-relative{position:relative}.pi-inset-0{inset:0}.pi-bottom-4{bottom:1rem}.pi-left-0{left:0}.pi-right-0{right:0}.pi-right-4{right:1rem}.pi-right-\[-0\.5rem\]{right:-.5rem}.pi-right-\[1\.5rem\]{right:1.5rem}.pi-right-\[4\.5rem\]{right:4.5rem}.pi-top-0{top:0}.pi-top-\[38\%\]{top:38%}.-pi-z-10{z-index:-10}.pi-z-1000{z-index:1000}.pi-z-20{z-index:20}.pi-z-30{z-index:30}.pi-z-50{z-index:50}.pi-col-span-2{grid-column:span 2/span 2}.pi-col-start-auto{grid-column-start:auto}.pi-mx-auto{margin-left:auto;margin-right:auto}.pi-my-4{margin-bottom:1rem;margin-top:1rem}.-pi-mt-10{margin-top:-2.5rem}.pi-mb-2{margin-bottom:.5rem}.pi-mb-6{margin-bottom:1.5rem}.pi-ml-11{margin-left:2.75rem}.pi-ml-16{margin-left:4rem}.pi-ml-2{margin-left:.5rem}.pi-ml-4{margin-left:1rem}.pi-ml-6{margin-left:1.5rem}.pi-ml-8{margin-left:2rem}.pi-ml-\[-0\.15rem\]{margin-left:-.15rem}.pi-ml-\[-7\.05rem\]{margin-left:-7.05rem}.pi-ml-\[1\.49rem\]{margin-left:1.49rem}.pi-ml-\[1\.4rem\]{margin-left:1.4rem}.pi-ml-\[4\.7rem\]{margin-left:4.7rem}.pi-mr-1{margin-right:.25rem}.pi-mr-2{margin-right:.5rem}.pi-mr-4{margin-right:1rem}.pi-mr-\[0\.27rem\]{margin-right:.27rem}.pi-mr-\[0\.28rem\]{margin-right:.28rem}.pi-mr-\[0\.42rem\]{margin-right:.42rem}.pi-mr-\[0\.4rem\]{margin-right:.4rem}.pi-mr-\[0\.57rem\]{margin-right:.57rem}.pi-mt-1{margin-top:.25rem}.pi-mt-2{margin-top:.5rem}.pi-mt-4{margin-top:1rem}.pi-mt-7{margin-top:1.75rem}.pi-mt-8{margin-top:2rem}.pi-mt-\[-0\.25rem\]{margin-top:-.25rem}.pi-mt-\[-0\.8rem\]{margin-top:-.8rem}.pi-mt-\[-5\.5rem\]{margin-top:-5.5rem}.pi-mt-\[-9\.5rem\]{margin-top:-9.5rem}.pi-mt-\[3rem\]{margin-top:3rem}.pi-block{display:block}.pi-inline-block{display:inline-block}.pi-flex{display:flex}.pi-inline-flex{display:inline-flex}.pi-grid{display:grid}.pi-hidden{display:none}.pi-h-1{height:.25rem}.pi-h-10{height:2.5rem}.pi-h-12{height:3rem}.pi-h-3{height:.75rem}.pi-h-4{height:1rem}.pi-h-6{height:1.5rem}.pi-h-8{height:2rem}.pi-h-9{height:2.25rem}.pi-h-fit{height:-moz-fit-content;height:fit-content}.pi-h-full{height:100%}.pi-max-h-\[13\.125rem\]{max-height:13.125rem}.pi-max-h-\[9\.125rem\]{max-height:9.125rem}.pi-min-h-full{min-height:100%}.pi-w-0\.5{width:.125rem}.pi-w-10{width:2.5rem}.pi-w-12{width:3rem}.pi-w-16{width:4rem}.pi-w-2{width:.5rem}.pi-w-3{width:.75rem}.pi-w-4{width:1rem}.pi-w-44{width:11rem}.pi-w-56{width:14rem}.pi-w-6{width:1.5rem}.pi-w-8{width:2rem}.pi-w-9{width:2.25rem}.pi-w-fit{width:-moz-fit-content;width:fit-content}.pi-w-full{width:100%}.pi-min-w-12{min-width:3rem}.pi-min-w-full{min-width:100%}.pi-max-w-40{max-width:10rem}.pi-max-w-lg{max-width:32rem}.pi-flex-none{flex:none}.pi-flex-shrink-0,.pi-shrink-0{flex-shrink:0}.pi-flex-grow-0{flex-grow:0}.pi-origin-top-right{transform-origin:top right}.pi--translate-y-1\/2{--tw-translate-y:-50%}.pi--rotate-45,.pi--translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi--rotate-45{--tw-rotate:-45deg}.pi-rotate-135{--tw-rotate:135deg}.pi-rotate-135,.pi-rotate-45{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi-rotate-45{--tw-rotate:45deg}.pi-rotate-90{--tw-rotate:90deg}.pi-rotate-90,.pi-rotate-\[135deg\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi-rotate-\[135deg\]{--tw-rotate:135deg}.pi-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pi-ping{75%,to{opacity:0;transform:scale(2)}}.pi-animate-ping{animation:pi-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pi-scroll{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.pi-animate-scroll-text{animation:pi-scroll 10s linear infinite}.pi-cursor-auto{cursor:auto}.pi-cursor-pointer{cursor:pointer}.pi-auto-cols-max{grid-auto-columns:max-content}.pi-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.pi-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.pi-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.pi-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.pi-flex-col{flex-direction:column}.pi-place-items-center{place-items:center}.pi-content-center{align-content:center}.pi-items-center{align-items:center}.pi-justify-start{justify-content:flex-start}.pi-justify-end{justify-content:flex-end}.pi-justify-center{justify-content:center}.pi-justify-between{justify-content:space-between}.pi-justify-items-end{justify-items:end}.pi-justify-items-center{justify-items:center}.pi-gap-1{gap:.25rem}.pi-gap-2{gap:.5rem}.pi-gap-3\.5{gap:.875rem}.pi-gap-4{gap:1rem}.pi-gap-5{gap:1.25rem}.pi-gap-6{gap:1.5rem}.pi-gap-7{gap:1.75rem}.pi-gap-y-5{row-gap:1.25rem}.pi-gap-y-6{row-gap:1.5rem}.pi-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.pi-overflow-auto{overflow:auto}.pi-overflow-hidden{overflow:hidden}.pi-overflow-y-auto{overflow-y:auto}.pi-overflow-x-hidden{overflow-x:hidden}.pi-truncate{overflow:hidden;white-space:nowrap}.pi-text-ellipsis,.pi-truncate{text-overflow:ellipsis}.pi-whitespace-nowrap{white-space:nowrap}.pi-rounded-2xl{border-radius:1rem}.pi-rounded-3xl{border-radius:1.5rem}.pi-rounded-full{border-radius:9999px}.pi-rounded-lg{border-radius:.5rem}.pi-rounded-md{border-radius:.375rem}.pi-rounded-sm{border-radius:.125rem}.pi-rounded-xl{border-radius:.75rem}.pi-border{border-width:1px}.pi-border-2{border-width:2px}.pi-border-4{border-width:4px}.pi-border-t{border-top-width:1px}.pi-border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.pi-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.pi-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.pi-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.pi-border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.pi-border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.pi-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.pi-border-transparent{border-color:#0000}.pi-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.pi-bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.pi-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.pi-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.pi-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.pi-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.pi-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.pi-bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.pi-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.pi-bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.pi-bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.pi-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.pi-bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.pi-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.pi-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.pi-bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.pi-bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.pi-bg-transparent{background-color:initial}.pi-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.pi-bg-opacity-\[0\.99\]{--tw-bg-opacity:0.99}.pi-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.pi-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.pi-from-gray-100{--tw-gradient-from:#f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to:#f3f4f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.pi-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.pi-to-gray-50{--tw-gradient-to:#f9fafb var(--tw-gradient-to-position)}.pi-to-gray-500{--tw-gradient-to:#6b7280 var(--tw-gradient-to-position)}.pi-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.pi-bg-cover{background-size:cover}.pi-p-4{padding:1rem}.pi-p-6{padding:1.5rem}.pi-px-0\.5{padding-left:.125rem;padding-right:.125rem}.pi-px-2{padding-left:.5rem;padding-right:.5rem}.pi-px-3{padding-left:.75rem;padding-right:.75rem}.pi-px-4{padding-left:1rem;padding-right:1rem}.pi-px-6{padding-left:1.5rem;padding-right:1.5rem}.pi-py-1{padding-bottom:.25rem;padding-top:.25rem}.pi-py-2{padding-bottom:.5rem;padding-top:.5rem}.pi-pb-9{padding-bottom:2.25rem}.pi-pr-4{padding-right:1rem}.pi-pt-2{padding-top:.5rem}.pi-pt-3{padding-top:.75rem}.pi-pt-4{padding-top:1rem}.pi-pt-7{padding-top:1.75rem}.pi-pt-9{padding-top:2.25rem}.pi-text-center{text-align:center}.pi-text-2xl{font-size:1.5rem;line-height:2rem}.pi-text-4xl{font-size:2.25rem;line-height:2.5rem}.pi-text-base{font-size:1rem;line-height:1.5rem}.pi-text-lg{font-size:1.125rem;line-height:1.75rem}.pi-text-sm{font-size:.875rem;line-height:1.25rem}.pi-text-xl{font-size:1.25rem;line-height:1.75rem}.pi-text-xs{font-size:.75rem;line-height:1rem}.pi-font-bold{font-weight:700}.pi-font-light{font-weight:300}.pi-font-medium{font-weight:500}.pi-font-normal{font-weight:400}.pi-font-semibold{font-weight:600}.pi-leading-4{line-height:1rem}.pi-leading-5{line-height:1.25rem}.pi-tracking-wide{letter-spacing:.025em}.pi-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.pi-text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.pi-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.pi-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.pi-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.pi-text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.pi-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.pi-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.pi-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.pi-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.pi-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.pi-text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.pi-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.pi-placeholder-gray-800::placeholder{--tw-placeholder-opacity:1;color:rgb(31 41 55/var(--tw-placeholder-opacity))}.pi-opacity-60{opacity:.6}.pi-opacity-75{opacity:.75}.pi-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.pi-shadow-lg,.pi-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.pi-shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.pi-outline-none{outline:2px solid #0000;outline-offset:2px}.pi-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.pi-ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.pi-ring-opacity-5{--tw-ring-opacity:0.05}.pi-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-duration-200{transition-duration:.2s}.pi-scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.pi-scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover,var(--scrollbar-track))}.pi-scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active,var(--scrollbar-track-hover,var(--scrollbar-track)))}.pi-scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.pi-scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover,var(--scrollbar-thumb))}.pi-scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active,var(--scrollbar-thumb-hover,var(--scrollbar-thumb)))}.pi-scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.pi-scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover,var(--scrollbar-corner))}.pi-scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active,var(--scrollbar-corner-hover,var(--scrollbar-corner)))}@supports (-moz-appearance:none){.pi-scrollbar-thin{scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial);scrollbar-width:thin}}.pi-scrollbar-thin::-webkit-scrollbar{display:block;height:8px;width:8px}.pi-scrollbar-track-gray-200{--scrollbar-track:#e5e7eb!important}.pi-scrollbar-thumb-gray-400{--scrollbar-thumb:#9ca3af!important}.pi-scrollbar-track-rounded-full{--scrollbar-track-radius:9999px}.pi-scrollbar-thumb-rounded-full{--scrollbar-thumb-radius:9999px}.hover\:pi-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:pi-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:pi-bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:pi-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:pi-bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:pi-bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:pi-text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:pi-text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:pi-text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:pi-shadow-2xl:hover{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:pi-z-20:focus{z-index:20}.focus\:pi-border-emerald-500:focus{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.focus\:pi-outline-0:focus{outline-width:0}.focus\:pi-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:pi-ring-0:focus,.focus\:pi-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:pi-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:pi-ring-emerald-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.focus\:pi-ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.focus\:pi-ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.focus\:pi-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:pi-ring-offset-gray-200:focus{--tw-ring-offset-color:#e5e7eb}.focus\:pi-ring-offset-white:focus{--tw-ring-offset-color:#fff}.active\:pi-border-emerald-500:active{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.enabled\:hover\:pi-border-gray-500:hover:enabled{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.enabled\:hover\:pi-bg-gray-200\/70:hover:enabled{background-color:#e5e7ebb3}.enabled\:hover\:pi-bg-gray-500:hover:enabled{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.disabled\:pi-opacity-75:disabled{opacity:.75}.dark\:pi-border-emerald-200:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:pi-border-gray-600:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\:pi-bg-emerald-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.dark\:pi-bg-emerald-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.dark\:pi-bg-gray-300:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.dark\:pi-bg-gray-50:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.dark\:pi-bg-gray-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:pi-bg-gray-950:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.dark\:pi-bg-green-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.dark\:pi-bg-green-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\:pi-bg-red-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.dark\:pi-bg-rose-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.dark\:pi-bg-opacity-\[0\.99\]:where(.pi-dark,.pi-dark *){--tw-bg-opacity:0.99}.dark\:pi-from-black:where(.pi-dark,.pi-dark *){--tw-gradient-from:#000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:pi-to-gray-950:where(.pi-dark,.pi-dark *){--tw-gradient-to:#030712 var(--tw-gradient-to-position)}.dark\:pi-text-gray-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.dark\:pi-text-gray-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.dark\:pi-text-gray-50:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.dark\:pi-text-gray-950:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.dark\:pi-text-green-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.dark\:pi-text-green-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.dark\:pi-text-red-700:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.dark\:pi-text-rose-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.dark\:pi-text-white:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:pi-placeholder-gray-200:where(.pi-dark,.pi-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(229 231 235/var(--tw-placeholder-opacity))}.dark\:pi-scrollbar-track-gray-900:where(.pi-dark,.pi-dark *){--scrollbar-track:#111827!important}.dark\:hover\:pi-bg-gray-50:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-gray-700:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-green-300:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-red-300:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.dark\:hover\:pi-text-gray-50:hover:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.dark\:focus\:pi-border-emerald-200:focus:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:focus\:pi-ring-emerald-300:focus:where(.pi-dark,.pi-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.dark\:focus\:pi-ring-gray-500:focus:where(.pi-dark,.pi-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.dark\:focus\:pi-ring-offset-black:focus:where(.pi-dark,.pi-dark *){--tw-ring-offset-color:#000}.dark\:active\:pi-border-emerald-200:active:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:active\:focus\:pi-border-emerald-200:focus:active:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:enabled\:hover\:pi-bg-gray-600\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#4b55634d}
1
+ *,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }@supports (-moz-appearance:none){*{scrollbar-color:auto;scrollbar-width:auto}}.pi-pointer-events-none{pointer-events:none}.pi-pointer-events-auto{pointer-events:auto}.pi-fixed{position:fixed}.pi-absolute{position:absolute}.pi-relative{position:relative}.pi-inset-0{inset:0}.pi-bottom-4{bottom:1rem}.pi-left-0{left:0}.pi-right-0{right:0}.pi-right-4{right:1rem}.pi-right-\[-0\.5rem\]{right:-.5rem}.pi-right-\[1\.5rem\]{right:1.5rem}.pi-right-\[4\.5rem\]{right:4.5rem}.pi-top-0{top:0}.pi-top-\[38\%\]{top:38%}.-pi-z-10{z-index:-10}.pi-z-1000{z-index:1000}.pi-z-20{z-index:20}.pi-z-30{z-index:30}.pi-z-50{z-index:50}.pi-col-span-2{grid-column:span 2/span 2}.pi-col-start-auto{grid-column-start:auto}.pi-mx-auto{margin-left:auto;margin-right:auto}.pi-my-4{margin-bottom:1rem;margin-top:1rem}.-pi-mt-10{margin-top:-2.5rem}.pi-mb-2{margin-bottom:.5rem}.pi-mb-6{margin-bottom:1.5rem}.pi-ml-11{margin-left:2.75rem}.pi-ml-16{margin-left:4rem}.pi-ml-2{margin-left:.5rem}.pi-ml-4{margin-left:1rem}.pi-ml-6{margin-left:1.5rem}.pi-ml-8{margin-left:2rem}.pi-ml-\[-0\.15rem\]{margin-left:-.15rem}.pi-ml-\[-7\.05rem\]{margin-left:-7.05rem}.pi-ml-\[1\.49rem\]{margin-left:1.49rem}.pi-ml-\[1\.4rem\]{margin-left:1.4rem}.pi-ml-\[4\.7rem\]{margin-left:4.7rem}.pi-mr-1{margin-right:.25rem}.pi-mr-2{margin-right:.5rem}.pi-mr-4{margin-right:1rem}.pi-mr-\[0\.27rem\]{margin-right:.27rem}.pi-mr-\[0\.28rem\]{margin-right:.28rem}.pi-mr-\[0\.42rem\]{margin-right:.42rem}.pi-mr-\[0\.4rem\]{margin-right:.4rem}.pi-mr-\[0\.57rem\]{margin-right:.57rem}.pi-mt-1{margin-top:.25rem}.pi-mt-2{margin-top:.5rem}.pi-mt-4{margin-top:1rem}.pi-mt-7{margin-top:1.75rem}.pi-mt-8{margin-top:2rem}.pi-mt-\[-0\.25rem\]{margin-top:-.25rem}.pi-mt-\[-0\.8rem\]{margin-top:-.8rem}.pi-mt-\[-5\.5rem\]{margin-top:-5.5rem}.pi-mt-\[-9\.5rem\]{margin-top:-9.5rem}.pi-mt-\[3rem\]{margin-top:3rem}.pi-block{display:block}.pi-inline-block{display:inline-block}.pi-flex{display:flex}.pi-inline-flex{display:inline-flex}.pi-grid{display:grid}.pi-hidden{display:none}.pi-h-1{height:.25rem}.pi-h-10{height:2.5rem}.pi-h-12{height:3rem}.pi-h-3{height:.75rem}.pi-h-4{height:1rem}.pi-h-6{height:1.5rem}.pi-h-8{height:2rem}.pi-h-9{height:2.25rem}.pi-h-\[1\.1rem\]{height:1.1rem}.pi-h-fit{height:-moz-fit-content;height:fit-content}.pi-h-full{height:100%}.pi-max-h-\[13\.125rem\]{max-height:13.125rem}.pi-max-h-\[9\.125rem\]{max-height:9.125rem}.pi-min-h-full{min-height:100%}.pi-w-0\.5{width:.125rem}.pi-w-10{width:2.5rem}.pi-w-12{width:3rem}.pi-w-16{width:4rem}.pi-w-2{width:.5rem}.pi-w-3{width:.75rem}.pi-w-4{width:1rem}.pi-w-44{width:11rem}.pi-w-56{width:14rem}.pi-w-6{width:1.5rem}.pi-w-8{width:2rem}.pi-w-9{width:2.25rem}.pi-w-fit{width:-moz-fit-content;width:fit-content}.pi-w-full{width:100%}.pi-min-w-12{min-width:3rem}.pi-min-w-full{min-width:100%}.pi-max-w-40{max-width:10rem}.pi-max-w-lg{max-width:32rem}.pi-flex-none{flex:none}.pi-flex-shrink-0,.pi-shrink-0{flex-shrink:0}.pi-flex-grow-0{flex-grow:0}.pi-origin-top-right{transform-origin:top right}.pi--translate-y-\[57\%\]{--tw-translate-y:-57%}.pi--rotate-45,.pi--translate-y-\[57\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi--rotate-45{--tw-rotate:-45deg}.pi-rotate-135{--tw-rotate:135deg}.pi-rotate-135,.pi-rotate-45{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi-rotate-45{--tw-rotate:45deg}.pi-rotate-90{--tw-rotate:90deg}.pi-rotate-90,.pi-rotate-\[135deg\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.pi-rotate-\[135deg\]{--tw-rotate:135deg}.pi-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pi-ping{75%,to{opacity:0;transform:scale(2)}}.pi-animate-ping{animation:pi-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pi-scroll{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.pi-animate-scroll-text{animation:pi-scroll 10s linear infinite}.pi-cursor-auto{cursor:auto}.pi-cursor-pointer{cursor:pointer}.pi-auto-cols-max{grid-auto-columns:max-content}.pi-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.pi-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.pi-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.pi-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.pi-flex-col{flex-direction:column}.pi-place-items-center{place-items:center}.pi-content-center{align-content:center}.pi-items-center{align-items:center}.pi-justify-start{justify-content:flex-start}.pi-justify-end{justify-content:flex-end}.pi-justify-center{justify-content:center}.pi-justify-between{justify-content:space-between}.pi-justify-items-end{justify-items:end}.pi-justify-items-center{justify-items:center}.pi-gap-1{gap:.25rem}.pi-gap-2{gap:.5rem}.pi-gap-3\.5{gap:.875rem}.pi-gap-4{gap:1rem}.pi-gap-5{gap:1.25rem}.pi-gap-6{gap:1.5rem}.pi-gap-7{gap:1.75rem}.pi-gap-y-5{row-gap:1.25rem}.pi-gap-y-6{row-gap:1.5rem}.pi-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.pi-overflow-auto{overflow:auto}.pi-overflow-hidden{overflow:hidden}.pi-overflow-y-auto{overflow-y:auto}.pi-overflow-x-hidden{overflow-x:hidden}.pi-truncate{overflow:hidden;white-space:nowrap}.pi-text-ellipsis,.pi-truncate{text-overflow:ellipsis}.pi-whitespace-nowrap{white-space:nowrap}.pi-rounded-2xl{border-radius:1rem}.pi-rounded-3xl{border-radius:1.5rem}.pi-rounded-full{border-radius:9999px}.pi-rounded-lg{border-radius:.5rem}.pi-rounded-md{border-radius:.375rem}.pi-rounded-sm{border-radius:.125rem}.pi-rounded-xl{border-radius:.75rem}.pi-border{border-width:1px}.pi-border-2{border-width:2px}.pi-border-4{border-width:4px}.pi-border-t{border-top-width:1px}.pi-border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.pi-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.pi-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.pi-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.pi-border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.pi-border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.pi-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.pi-border-transparent{border-color:#0000}.pi-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.pi-bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.pi-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.pi-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.pi-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.pi-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.pi-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.pi-bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.pi-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.pi-bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.pi-bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.pi-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.pi-bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.pi-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.pi-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.pi-bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.pi-bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.pi-bg-transparent{background-color:initial}.pi-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.pi-bg-opacity-\[0\.99\]{--tw-bg-opacity:0.99}.pi-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.pi-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.pi-from-gray-100{--tw-gradient-from:#f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to:#f3f4f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.pi-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.pi-to-gray-50{--tw-gradient-to:#f9fafb var(--tw-gradient-to-position)}.pi-to-gray-500{--tw-gradient-to:#6b7280 var(--tw-gradient-to-position)}.pi-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.pi-bg-cover{background-size:cover}.pi-p-4{padding:1rem}.pi-p-6{padding:1.5rem}.pi-px-0\.5{padding-left:.125rem;padding-right:.125rem}.pi-px-2{padding-left:.5rem;padding-right:.5rem}.pi-px-3{padding-left:.75rem;padding-right:.75rem}.pi-px-4{padding-left:1rem;padding-right:1rem}.pi-px-6{padding-left:1.5rem;padding-right:1.5rem}.pi-py-1{padding-bottom:.25rem;padding-top:.25rem}.pi-py-2{padding-bottom:.5rem;padding-top:.5rem}.pi-pb-9{padding-bottom:2.25rem}.pi-pr-4{padding-right:1rem}.pi-pt-2{padding-top:.5rem}.pi-pt-3{padding-top:.75rem}.pi-pt-4{padding-top:1rem}.pi-pt-7{padding-top:1.75rem}.pi-pt-9{padding-top:2.25rem}.pi-text-center{text-align:center}.pi-text-2xl{font-size:1.5rem;line-height:2rem}.pi-text-4xl{font-size:2.25rem;line-height:2.5rem}.pi-text-base{font-size:1rem;line-height:1.5rem}.pi-text-lg{font-size:1.125rem;line-height:1.75rem}.pi-text-sm{font-size:.875rem;line-height:1.25rem}.pi-text-xl{font-size:1.25rem;line-height:1.75rem}.pi-text-xs{font-size:.75rem;line-height:1rem}.pi-font-bold{font-weight:700}.pi-font-light{font-weight:300}.pi-font-medium{font-weight:500}.pi-font-normal{font-weight:400}.pi-font-semibold{font-weight:600}.pi-leading-4{line-height:1rem}.pi-leading-5{line-height:1.25rem}.pi-tracking-wide{letter-spacing:.025em}.pi-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.pi-text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.pi-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.pi-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.pi-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.pi-text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.pi-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.pi-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.pi-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.pi-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.pi-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.pi-text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.pi-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.pi-placeholder-gray-800::placeholder{--tw-placeholder-opacity:1;color:rgb(31 41 55/var(--tw-placeholder-opacity))}.pi-opacity-60{opacity:.6}.pi-opacity-75{opacity:.75}.pi-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.pi-shadow-lg,.pi-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.pi-shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.pi-outline-none{outline:2px solid #0000;outline-offset:2px}.pi-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.pi-ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.pi-ring-opacity-5{--tw-ring-opacity:0.05}.pi-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.pi-duration-200{transition-duration:.2s}.pi-scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.pi-scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover,var(--scrollbar-track))}.pi-scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active,var(--scrollbar-track-hover,var(--scrollbar-track)))}.pi-scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.pi-scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover,var(--scrollbar-thumb))}.pi-scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active,var(--scrollbar-thumb-hover,var(--scrollbar-thumb)))}.pi-scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.pi-scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover,var(--scrollbar-corner))}.pi-scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active,var(--scrollbar-corner-hover,var(--scrollbar-corner)))}@supports (-moz-appearance:none){.pi-scrollbar-thin{scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial);scrollbar-width:thin}}.pi-scrollbar-thin::-webkit-scrollbar{display:block;height:8px;width:8px}.pi-scrollbar-track-gray-200{--scrollbar-track:#e5e7eb!important}.pi-scrollbar-thumb-gray-400{--scrollbar-thumb:#9ca3af!important}.pi-scrollbar-track-rounded-full{--scrollbar-track-radius:9999px}.pi-scrollbar-thumb-rounded-full{--scrollbar-thumb-radius:9999px}.hover\:pi-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:pi-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:pi-bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:pi-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:pi-bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:pi-bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:pi-text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:pi-text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:pi-text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:pi-shadow-2xl:hover{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:pi-z-20:focus{z-index:20}.focus\:pi-border-emerald-500:focus{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.focus\:pi-outline-0:focus{outline-width:0}.focus\:pi-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:pi-ring-0:focus,.focus\:pi-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:pi-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:pi-ring-emerald-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.focus\:pi-ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.focus\:pi-ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.focus\:pi-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:pi-ring-offset-gray-200:focus{--tw-ring-offset-color:#e5e7eb}.focus\:pi-ring-offset-white:focus{--tw-ring-offset-color:#fff}.active\:pi-border-emerald-500:active{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.enabled\:hover\:pi-border-gray-500:hover:enabled{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.enabled\:hover\:pi-bg-gray-200\/70:hover:enabled{background-color:#e5e7ebb3}.enabled\:hover\:pi-bg-gray-500:hover:enabled{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.disabled\:pi-opacity-75:disabled{opacity:.75}.dark\:pi-border-emerald-200:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:pi-border-gray-600:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\:pi-bg-emerald-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.dark\:pi-bg-emerald-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.dark\:pi-bg-gray-300:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.dark\:pi-bg-gray-50:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.dark\:pi-bg-gray-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:pi-bg-gray-950:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.dark\:pi-bg-green-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.dark\:pi-bg-green-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.dark\:pi-bg-red-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.dark\:pi-bg-rose-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.dark\:pi-bg-opacity-\[0\.99\]:where(.pi-dark,.pi-dark *){--tw-bg-opacity:0.99}.dark\:pi-from-black:where(.pi-dark,.pi-dark *){--tw-gradient-from:#000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:pi-to-gray-950:where(.pi-dark,.pi-dark *){--tw-gradient-to:#030712 var(--tw-gradient-to-position)}.dark\:pi-text-gray-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.dark\:pi-text-gray-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.dark\:pi-text-gray-50:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.dark\:pi-text-gray-950:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.dark\:pi-text-green-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.dark\:pi-text-green-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.dark\:pi-text-red-700:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.dark\:pi-text-rose-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.dark\:pi-text-white:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:pi-placeholder-gray-200:where(.pi-dark,.pi-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(229 231 235/var(--tw-placeholder-opacity))}.dark\:pi-scrollbar-track-gray-900:where(.pi-dark,.pi-dark *){--scrollbar-track:#111827!important}.dark\:hover\:pi-bg-gray-50:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-gray-700:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-green-300:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.dark\:hover\:pi-bg-red-300:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.dark\:hover\:pi-text-gray-50:hover:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.dark\:focus\:pi-border-emerald-200:focus:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:focus\:pi-ring-emerald-300:focus:where(.pi-dark,.pi-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.dark\:focus\:pi-ring-gray-500:focus:where(.pi-dark,.pi-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.dark\:focus\:pi-ring-offset-black:focus:where(.pi-dark,.pi-dark *){--tw-ring-offset-color:#000}.dark\:active\:pi-border-emerald-200:active:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:active\:focus\:pi-border-emerald-200:focus:active:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark\:enabled\:hover\:pi-bg-gray-600\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#4b55634d}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("../webrtc/messages.js"),r=require("../../store/index.js"),n=require("../user/default_device.js"),a=require("../../services/astproxy.js"),s=require("../../static/dtmf/index.js");require("react");var i=require("../../utils/genericFunctions/eventDispatch.js");exports.answerIncomingCall=function(){n.isWebRTC()?t.answerWebRTC():a.answerPhysical()},exports.attendedTransfer=function(t){return e.__awaiter(this,void 0,void 0,(function(){var n,s;return e.__generator(this,(function(e){switch(e.label){case 0:return n=r.store.getState().currentCall.conversationId,s=r.store.getState().currentUser.default_device,n&&(null==s?void 0:s.id)&&t?[4,a.attendedTransfer({convid:n,to:t,endpointId:s.id})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}}))}))},exports.callNumber=function(e,r){var s="sip:".concat(e,"@").concat(r);n.isWebRTC()?t.callSipURI(s):a.callPhysical(e),i.eventDispatch("phone-island-call-started",{})},exports.hangupAllExtensions=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach((function(e){a.hangupConversation({convid:e,endpointId:t})}))};for(var n in e)t(n)},exports.hangupCurrentCall=function(){var e=r.store.getState().currentCall,s=e.outgoing,o=e.accepted;(s||o)&&(n.isWebRTC()?t.hangup():a.hangupPhysical(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.currentCall.reset(),r.store.dispatch.listen.reset()),i.eventDispatch("phone-island-call-ended",{})},exports.hangupCurrentPhysicalRecording=function(){a.hangupPhysicalRecordingCall(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.physicalRecorder.reset(),r.store.dispatch.physicalRecorder.setRecording(!1),r.store.dispatch.island.setIslandView(null),r.store.dispatch.listen.reset(),i.eventDispatch("phone-island-call-ended",{})},exports.muteCurrentCall=function(){n.isWebRTC()?t.muteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!0}):a.mutePhysical(),i.eventDispatch("phone-island-call-muted",{})},exports.parkCurrentCall=function(){var e,t,n,s,o=null===(t=null===(e=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===e?void 0:e.currentCall)||void 0===t?void 0:t.conversationId,l=null===(s=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===s?void 0:s.conversations,u={};if(o){if(l)for(var c in l)if(l.hasOwnProperty(c)){var d=l[c];Object.keys(d).length>0&&(u={numberParkId:c,idConversation:o})}Object.keys(u).length>0&&(null==u?void 0:u.numberParkId)&&(a.parkConversation({applicantId:null==u?void 0:u.numberParkId,convid:o,endpointId:null==u?void 0:u.numberParkId}),r.store.dispatch.currentCall.setParked(!0),i.eventDispatch("phone-island-call-parked",{}))}},exports.pauseCurrentCall=function(){n.isWebRTC()?t.pauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!0}),r.store.dispatch.player.pauseRemoteAudio()):a.pausePhysical(!0),i.eventDispatch("phone-island-call-held",{})},exports.playDtmfAudio=function(e){"*"===e&&(e="star"),"#"===e&&(e="pound"),r.store.dispatch.player.updateStartAudioPlayer({src:s.default["dtmf_".concat(e)]})},exports.recordCurrentCall=function(t){var n,s,i,o;return e.__awaiter(this,void 0,void 0,(function(){var l,u,c,d,p,v,h;return e.__generator(this,(function(e){switch(e.label){case 0:return r.store.dispatch.currentCall.updateRecordingStatus(!t),l=null===(s=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===s?void 0:s.conversations,(u=function(e){for(var t in e)if(0!==Object.keys(e[t]).length){var r=Object.values(e[t])[0];return{id:r.id,recording:r.recording}}return null}(l))?[3,1]:[2];case 1:switch(c=null===(i=null==u?void 0:u.id)||void 0===i?void 0:i.match(/\/(\d+)-/),d=c[1],p={convid:null===(o=null==u?void 0:u.id)||void 0===o?void 0:o.toString(),endpointId:null==d?void 0:d.toString()},v="",null==u?void 0:u.recording){case"false":v="start_record";break;case"true":v="mute_record";break;case"mute":v="unmute_record";break;default:v=""}if(!p)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,a.toggleRecord(v,p)];case 3:return e.sent(),[3,5];case 4:return h=e.sent(),console.error(h),[2,[]];case 5:return[2]}}))}))},exports.unmuteCurrentCall=function(){n.isWebRTC()?t.unmuteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!1}):a.unmutePhysical(),i.eventDispatch("phone-island-call-unmuted",{})},exports.unpauseCurrentCall=function(){n.isWebRTC()?t.unpauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!1}),r.store.dispatch.player.playRemoteAudio()):a.pausePhysical(!1),i.eventDispatch("phone-island-call-unheld",{})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("../webrtc/messages.js"),r=require("../../store/index.js"),n=require("../user/default_device.js"),a=require("../../services/astproxy.js"),s=require("../../static/dtmf/index.js");require("react");var i=require("../../utils/genericFunctions/eventDispatch.js");exports.answerIncomingCall=function(){n.isWebRTC()?t.answerWebRTC():a.answerPhysical()},exports.attendedTransfer=function(t){return e.__awaiter(this,void 0,void 0,(function(){var n,s;return e.__generator(this,(function(e){switch(e.label){case 0:return n=r.store.getState().currentCall.conversationId,s=r.store.getState().currentUser.default_device,n&&(null==s?void 0:s.id)&&t?[4,a.attendedTransfer({convid:n,to:t,endpointId:s.id})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}}))}))},exports.callNumber=function(e,r){var s="sip:".concat(e,"@").concat(r);n.isWebRTC()?t.callSipURI(s):a.callPhysical(e),i.eventDispatch("phone-island-call-started",{})},exports.hangupAllExtensions=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach((function(e){a.hangupConversation({convid:e,endpointId:t})}))};for(var n in e)t(n)},exports.hangupCurrentCall=function(){var e=r.store.getState().currentCall,s=e.outgoing,o=e.accepted;(s||o)&&(n.isWebRTC()?t.hangup():a.hangupPhysical(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.currentCall.reset(),r.store.dispatch.listen.reset()),i.eventDispatch("phone-island-call-ended",{})},exports.hangupCurrentPhysicalRecording=function(){a.hangupPhysicalRecordingCall(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.physicalRecorder.reset(),r.store.dispatch.physicalRecorder.setRecording(!1),r.store.dispatch.island.setIslandView(null),r.store.dispatch.listen.reset(),i.eventDispatch("phone-island-call-ended",{})},exports.muteCurrentCall=function(){n.isWebRTC()?t.muteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!0}):a.mutePhysical(!0),i.eventDispatch("phone-island-call-muted",{})},exports.parkCurrentCall=function(){var e,t,n,s,o=null===(t=null===(e=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===e?void 0:e.currentCall)||void 0===t?void 0:t.conversationId,l=null===(s=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===s?void 0:s.conversations,u={};if(o){if(l)for(var c in l)if(l.hasOwnProperty(c)){var d=l[c];Object.keys(d).length>0&&(u={numberParkId:c,idConversation:o})}Object.keys(u).length>0&&(null==u?void 0:u.numberParkId)&&(a.parkConversation({applicantId:null==u?void 0:u.numberParkId,convid:o,endpointId:null==u?void 0:u.numberParkId}),r.store.dispatch.currentCall.setParked(!0),i.eventDispatch("phone-island-call-parked",{}))}},exports.pauseCurrentCall=function(){n.isWebRTC()?t.pauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!0}),r.store.dispatch.player.pauseRemoteAudio()):a.pausePhysical(!0),i.eventDispatch("phone-island-call-held",{})},exports.playDtmfAudio=function(e){"*"===e&&(e="star"),"#"===e&&(e="pound"),r.store.dispatch.player.updateStartAudioPlayer({src:s.default["dtmf_".concat(e)]})},exports.recordCurrentCall=function(t){var n,s,i,o;return e.__awaiter(this,void 0,void 0,(function(){var l,u,c,d,p,v,h;return e.__generator(this,(function(e){switch(e.label){case 0:return r.store.dispatch.currentCall.updateRecordingStatus(!t),l=null===(s=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===s?void 0:s.conversations,(u=function(e){for(var t in e)if(0!==Object.keys(e[t]).length){var r=Object.values(e[t])[0];return{id:r.id,recording:r.recording}}return null}(l))?[3,1]:[2];case 1:switch(c=null===(i=null==u?void 0:u.id)||void 0===i?void 0:i.match(/\/(\d+)-/),d=c[1],p={convid:null===(o=null==u?void 0:u.id)||void 0===o?void 0:o.toString(),endpointId:null==d?void 0:d.toString()},v="",null==u?void 0:u.recording){case"false":v="start_record";break;case"true":v="mute_record";break;case"mute":v="unmute_record";break;default:v=""}if(!p)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,a.toggleRecord(v,p)];case 3:return e.sent(),[3,5];case 4:return h=e.sent(),console.error(h),[2,[]];case 5:return[2]}}))}))},exports.unmuteCurrentCall=function(){n.isWebRTC()?t.unmuteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!1}):a.mutePhysical(!1),i.eventDispatch("phone-island-call-unmuted",{})},exports.unpauseCurrentCall=function(){n.isWebRTC()?t.unpauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!1}),r.store.dispatch.player.playRemoteAudio()):a.pausePhysical(!1),i.eventDispatch("phone-island-call-unheld",{})};
2
2
  //# sourceMappingURL=call.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sources":["../../../src/lib/phone/call.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n callSipURI,\n hangup,\n answerWebRTC,\n muteWebRTC,\n unmuteWebRTC,\n pauseWebRTC,\n unpauseWebRTC,\n} from '../webrtc/messages'\nimport { store } from '../../store'\nimport { isWebRTC } from '../user/default_device'\nimport {\n blindTransfer as blindTransferRequest,\n attendedTransfer as attendedTransferRequest,\n hangupPhysical,\n answerPhysical,\n mutePhysical,\n unmutePhysical,\n pausePhysical,\n callPhysical,\n toggleRecord,\n hangupPhysicalRecordingCall,\n} from '../../services/astproxy'\nimport dtmfAudios from '../../static/dtmf'\nimport { hangupConversation, parkConversation } from '../../services/astproxy'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Starts a call to a number\n * @param number The number string\n */\nexport function callNumber(number: string, sipHost: string) {\n const sipURI = `sip:${number}@${sipHost}`\n if (isWebRTC()) {\n callSipURI(sipURI)\n } else {\n callPhysical(number)\n }\n\n eventDispatch('phone-island-call-started', {})\n}\n\n/**\n * Answer incoming call\n */\nexport function answerIncomingCall() {\n if (isWebRTC()) {\n answerWebRTC()\n } else {\n answerPhysical()\n }\n}\n\n/**\n * Hangup all the conversations of all the extensions of the current user\n */\nexport function hangupAllExtensions() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n hangupConversation({\n convid: id,\n endpointId: extension,\n })\n })\n }\n}\n\n/**\n * Hangup current call\n */\nexport function hangupCurrentCall() {\n const { outgoing, accepted } = store.getState().currentCall\n if (outgoing || accepted) {\n if (isWebRTC()) {\n hangup()\n } else {\n hangupPhysical()\n }\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n store.dispatch.listen.reset()\n }\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Hangup current physical recording\n */\nexport function hangupCurrentPhysicalRecording() {\n hangupPhysicalRecordingCall()\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.physicalRecorder.reset()\n store.dispatch.physicalRecorder.setRecording(false)\n store.dispatch.island.setIslandView(null)\n store.dispatch.listen.reset()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Mute the current call\n */\nexport function muteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const muted = muteWebRTC()\n if (muted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: true,\n })\n }\n } else {\n mutePhysical()\n }\n eventDispatch('phone-island-call-muted', {})\n}\n\n/**\n * Unmute the current call\n */\nexport function unmuteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unmuted = unmuteWebRTC()\n if (unmuted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: false,\n })\n }\n } else {\n unmutePhysical()\n }\n eventDispatch('phone-island-call-unmuted', {})\n}\n\n/**\n * Pause the current call\n */\nexport function pauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const paused = pauseWebRTC()\n if (paused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: true,\n })\n // Pause remote audio\n store.dispatch.player.pauseRemoteAudio()\n }\n } else {\n pausePhysical(true)\n }\n eventDispatch('phone-island-call-held', {})\n}\n\n/**\n * Unpause the current call\n */\nexport function unpauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unpaused = unpauseWebRTC()\n if (unpaused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: false,\n })\n // Play remote audio\n store.dispatch.player.playRemoteAudio()\n }\n } else {\n pausePhysical(false)\n }\n eventDispatch('phone-island-call-unheld', {})\n}\n\n/**\n * Transfer the current call through a blind transfer (not in use)\n */\nexport async function blindTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n // Transfer the call through blind transfer\n if (conversationId && default_device?.id && number) {\n return await blindTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device.id,\n })\n }\n}\n\n/**\n * Transfer the current call through a attended transfer\n */\nexport async function attendedTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n // Transfer the call through attended transfer\n if (conversationId && default_device?.id && number) {\n return await attendedTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device.id,\n })\n }\n}\n\n/**\n * Play the dtmf audio files\n */\nexport function playDtmfAudio(key: string) {\n if (key === '*') key = 'star'\n if (key === '#') key = 'pound'\n store.dispatch.player.updateStartAudioPlayer({ src: dtmfAudios[`dtmf_${key}`] })\n}\n\n/**\n * Park the current call\n */\nexport function parkCurrentCall() {\n const conversationId = store?.getState()?.currentCall?.conversationId\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n let parkingInformation: any = {}\n\n if (conversationId) {\n if (userConversationInformations) {\n for (const key in userConversationInformations) {\n if (userConversationInformations.hasOwnProperty(key)) {\n const conversation = userConversationInformations[key]\n if (Object.keys(conversation).length > 0) {\n parkingInformation = {\n numberParkId: key,\n idConversation: conversationId,\n }\n }\n }\n }\n }\n\n if (Object.keys(parkingInformation).length > 0) {\n if (parkingInformation?.numberParkId) {\n // If park information are not empty park call\n parkConversation({\n applicantId: parkingInformation?.numberParkId,\n convid: conversationId,\n endpointId: parkingInformation?.numberParkId,\n })\n\n store.dispatch.currentCall.setParked(true)\n\n eventDispatch('phone-island-call-parked', {})\n }\n }\n }\n}\n\nconst findFirstExtesnionNotEmpty = (data) => {\n for (const key in data) {\n if (Object.keys(data[key]).length !== 0) {\n const firstEntry: any = Object.values(data[key])[0]\n return {\n id: firstEntry.id,\n recording: firstEntry.recording,\n }\n }\n }\n return null\n}\n\nexport async function recordCurrentCall(recordingValue: boolean) {\n store.dispatch.currentCall.updateRecordingStatus(!recordingValue)\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n const firstExtensionNotEmpty = findFirstExtesnionNotEmpty(userConversationInformations)\n\n if (!firstExtensionNotEmpty) {\n return\n } else {\n const numberToSendCall = firstExtensionNotEmpty?.id?.match(/\\/(\\d+)-/)\n const endpointId = numberToSendCall[1]\n\n const listenInformations = {\n convid: firstExtensionNotEmpty?.id?.toString(),\n endpointId: endpointId?.toString(),\n }\n\n let recordingValues = ''\n switch (firstExtensionNotEmpty?.recording) {\n case 'false':\n recordingValues = 'start_record'\n break\n case 'true':\n recordingValues = 'mute_record'\n break\n case 'mute':\n recordingValues = 'unmute_record'\n break\n default:\n recordingValues = ''\n break\n }\n\n if (listenInformations) {\n try {\n await toggleRecord(recordingValues, listenInformations)\n } catch (e) {\n console.error(e)\n return []\n }\n }\n }\n}\n"],"names":["isWebRTC","answerWebRTC","answerPhysical","number","conversationId","store","getState","currentCall","default_device","currentUser","id","attendedTransferRequest","convid","to","endpointId","_a","sipHost","sipURI","concat","callSipURI","callPhysical","eventDispatch","conversations","extension","Object","keys","forEach","hangupConversation","outgoing","accepted","hangup","hangupPhysical","dispatch","player","stopAudioPlayer","reset","listen","hangupPhysicalRecordingCall","physicalRecorder","setRecording","island","setIslandView","muteWebRTC","updateCurrentCall","muted","mutePhysical","_b","userConversationInformations","_d","_c","parkingInformation","key","hasOwnProperty","conversation","length","numberParkId","idConversation","parkConversation","applicantId","setParked","pauseWebRTC","paused","pauseRemoteAudio","pausePhysical","updateStartAudioPlayer","src","dtmfAudios","recordingValue","updateRecordingStatus","firstExtensionNotEmpty","data","firstEntry","values","recording","findFirstExtesnionNotEmpty","numberToSendCall","match","listenInformations","toString","recordingValues","toggleRecord","_e","sent","console","error","e_1","unmuteWebRTC","unmutePhysical","unpauseWebRTC","playRemoteAudio"],"mappings":"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"}
1
+ {"version":3,"file":"call.js","sources":["../../../src/lib/phone/call.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n callSipURI,\n hangup,\n answerWebRTC,\n muteWebRTC,\n unmuteWebRTC,\n pauseWebRTC,\n unpauseWebRTC,\n} from '../webrtc/messages'\nimport { store } from '../../store'\nimport { isWebRTC } from '../user/default_device'\nimport {\n blindTransfer as blindTransferRequest,\n attendedTransfer as attendedTransferRequest,\n hangupPhysical,\n answerPhysical,\n mutePhysical,\n pausePhysical,\n callPhysical,\n toggleRecord,\n hangupPhysicalRecordingCall,\n} from '../../services/astproxy'\nimport dtmfAudios from '../../static/dtmf'\nimport { hangupConversation, parkConversation } from '../../services/astproxy'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Starts a call to a number\n * @param number The number string\n */\nexport function callNumber(number: string, sipHost: string) {\n const sipURI = `sip:${number}@${sipHost}`\n if (isWebRTC()) {\n callSipURI(sipURI)\n } else {\n callPhysical(number)\n }\n\n eventDispatch('phone-island-call-started', {})\n}\n\n/**\n * Answer incoming call\n */\nexport function answerIncomingCall() {\n if (isWebRTC()) {\n answerWebRTC()\n } else {\n answerPhysical()\n }\n}\n\n/**\n * Hangup all the conversations of all the extensions of the current user\n */\nexport function hangupAllExtensions() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n hangupConversation({\n convid: id,\n endpointId: extension,\n })\n })\n }\n}\n\n/**\n * Hangup current call\n */\nexport function hangupCurrentCall() {\n const { outgoing, accepted } = store.getState().currentCall\n if (outgoing || accepted) {\n if (isWebRTC()) {\n hangup()\n } else {\n hangupPhysical()\n }\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n store.dispatch.listen.reset()\n }\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Hangup current physical recording\n */\nexport function hangupCurrentPhysicalRecording() {\n hangupPhysicalRecordingCall()\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.physicalRecorder.reset()\n store.dispatch.physicalRecorder.setRecording(false)\n store.dispatch.island.setIslandView(null)\n store.dispatch.listen.reset()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Mute the current call\n */\nexport function muteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const muted = muteWebRTC()\n if (muted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: true,\n })\n }\n } else {\n mutePhysical(true)\n }\n eventDispatch('phone-island-call-muted', {})\n}\n\n/**\n * Unmute the current call\n */\nexport function unmuteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unmuted = unmuteWebRTC()\n if (unmuted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: false,\n })\n }\n } else {\n mutePhysical(false)\n }\n eventDispatch('phone-island-call-unmuted', {})\n}\n\n/**\n * Pause the current call\n */\nexport function pauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const paused = pauseWebRTC()\n if (paused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: true,\n })\n // Pause remote audio\n store.dispatch.player.pauseRemoteAudio()\n }\n } else {\n pausePhysical(true)\n }\n eventDispatch('phone-island-call-held', {})\n}\n\n/**\n * Unpause the current call\n */\nexport function unpauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unpaused = unpauseWebRTC()\n if (unpaused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: false,\n })\n // Play remote audio\n store.dispatch.player.playRemoteAudio()\n }\n } else {\n pausePhysical(false)\n }\n eventDispatch('phone-island-call-unheld', {})\n}\n\n/**\n * Transfer the current call through a blind transfer (not in use)\n */\nexport async function blindTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n // Transfer the call through blind transfer\n if (conversationId && default_device?.id && number) {\n return await blindTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device.id,\n })\n }\n}\n\n/**\n * Transfer the current call through a attended transfer\n */\nexport async function attendedTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n // Transfer the call through attended transfer\n if (conversationId && default_device?.id && number) {\n return await attendedTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device.id,\n })\n }\n}\n\n/**\n * Play the dtmf audio files\n */\nexport function playDtmfAudio(key: string) {\n if (key === '*') key = 'star'\n if (key === '#') key = 'pound'\n store.dispatch.player.updateStartAudioPlayer({ src: dtmfAudios[`dtmf_${key}`] })\n}\n\n/**\n * Park the current call\n */\nexport function parkCurrentCall() {\n const conversationId = store?.getState()?.currentCall?.conversationId\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n let parkingInformation: any = {}\n\n if (conversationId) {\n if (userConversationInformations) {\n for (const key in userConversationInformations) {\n if (userConversationInformations.hasOwnProperty(key)) {\n const conversation = userConversationInformations[key]\n if (Object.keys(conversation).length > 0) {\n parkingInformation = {\n numberParkId: key,\n idConversation: conversationId,\n }\n }\n }\n }\n }\n\n if (Object.keys(parkingInformation).length > 0) {\n if (parkingInformation?.numberParkId) {\n // If park information are not empty park call\n parkConversation({\n applicantId: parkingInformation?.numberParkId,\n convid: conversationId,\n endpointId: parkingInformation?.numberParkId,\n })\n\n store.dispatch.currentCall.setParked(true)\n\n eventDispatch('phone-island-call-parked', {})\n }\n }\n }\n}\n\nconst findFirstExtesnionNotEmpty = (data) => {\n for (const key in data) {\n if (Object.keys(data[key]).length !== 0) {\n const firstEntry: any = Object.values(data[key])[0]\n return {\n id: firstEntry.id,\n recording: firstEntry.recording,\n }\n }\n }\n return null\n}\n\nexport async function recordCurrentCall(recordingValue: boolean) {\n store.dispatch.currentCall.updateRecordingStatus(!recordingValue)\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n const firstExtensionNotEmpty = findFirstExtesnionNotEmpty(userConversationInformations)\n\n if (!firstExtensionNotEmpty) {\n return\n } else {\n const numberToSendCall = firstExtensionNotEmpty?.id?.match(/\\/(\\d+)-/)\n const endpointId = numberToSendCall[1]\n\n const listenInformations = {\n convid: firstExtensionNotEmpty?.id?.toString(),\n endpointId: endpointId?.toString(),\n }\n\n let recordingValues = ''\n switch (firstExtensionNotEmpty?.recording) {\n case 'false':\n recordingValues = 'start_record'\n break\n case 'true':\n recordingValues = 'mute_record'\n break\n case 'mute':\n recordingValues = 'unmute_record'\n break\n default:\n recordingValues = ''\n break\n }\n\n if (listenInformations) {\n try {\n await toggleRecord(recordingValues, listenInformations)\n } catch (e) {\n console.error(e)\n return []\n }\n }\n }\n}\n"],"names":["isWebRTC","answerWebRTC","answerPhysical","number","conversationId","store","getState","currentCall","default_device","currentUser","id","attendedTransferRequest","convid","to","endpointId","_a","sipHost","sipURI","concat","callSipURI","callPhysical","eventDispatch","conversations","extension","Object","keys","forEach","hangupConversation","outgoing","accepted","hangup","hangupPhysical","dispatch","player","stopAudioPlayer","reset","listen","hangupPhysicalRecordingCall","physicalRecorder","setRecording","island","setIslandView","muteWebRTC","updateCurrentCall","muted","mutePhysical","_b","userConversationInformations","_d","_c","parkingInformation","key","hasOwnProperty","conversation","length","numberParkId","idConversation","parkConversation","applicantId","setParked","pauseWebRTC","paused","pauseRemoteAudio","pausePhysical","updateStartAudioPlayer","src","dtmfAudios","recordingValue","updateRecordingStatus","firstExtensionNotEmpty","data","firstEntry","values","recording","findFirstExtesnionNotEmpty","numberToSendCall","match","listenInformations","toString","recordingValues","toggleRecord","_e","sent","console","error","e_1","unmuteWebRTC","unpauseWebRTC","playRemoteAudio"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"island.js","sources":["../../src/models/island.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\nimport { eventDispatch } from '../utils'\n\nconst defaultState: IslandTypes = {\n view: null,\n isOpen: true,\n actionsExpanded: false,\n startPosition: {\n x: 0,\n y: 0,\n },\n inputOutputOpened: false,\n}\n\nexport const island = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n setIslandView: (state, payload: IslandViewType | null) => {\n return {\n ...state,\n view: payload,\n }\n },\n toggleIsOpen: (state, payload: boolean) => {\n return {\n ...state,\n isOpen: payload,\n }\n },\n toggleActionsExpanded: (state, payload: boolean) => {\n state.actionsExpanded = payload\n return state\n },\n toggleInputOutputOpened: (state, payload: boolean) => {\n state.inputOutputOpened = payload\n return state\n },\n },\n effects: (dispatch) => ({\n handleToggleIsOpen: (_: void, rootState) => {\n if (\n rootState.island.isOpen &&\n rootState.alerts.status.activeAlertsCount > 0 &&\n !rootState.currentCall.displayName\n ) {\n eventDispatch('phone-island-expanded', {})\n dispatch.island.toggleIsOpen(true)\n } else {\n eventDispatch('phone-island-' + (rootState.island.isOpen ? 'compressed' : 'expanded'), {})\n dispatch.island.toggleIsOpen(!rootState.island.isOpen)\n }\n },\n }),\n})\n\ntype IslandViewType = 'call' | 'keypad' | 'player' | 'transfer' | 'recorder' | 'physicalPhoneRecorder'\n\ninterface IslandTypes {\n view?: IslandViewType | null\n isOpen: boolean\n actionsExpanded: boolean\n startPosition: {\n x: number\n y: number\n }\n inputOutputOpened: boolean\n}\n"],"names":["island","createModel","state","view","isOpen","actionsExpanded","startPosition","x","y","inputOutputOpened","reducers","setIslandView","payload","__assign","toggleIsOpen","toggleActionsExpanded","toggleInputOutputOpened","effects","dispatch","handleToggleIsOpen","_","rootState","alerts","status","activeAlertsCount","currentCall","displayName","eventDispatch"],"mappings":"iQAkBaA,EAASC,EAAWA,aAAXA,CAAyB,CAC7CC,MAZgC,CAChCC,KAAM,KACNC,QAAQ,EACRC,iBAAiB,EACjBC,cAAe,CACbC,EAAG,EACHC,EAAG,GAELC,mBAAmB,GAKnBC,SAAU,CACRC,cAAe,SAACT,EAAOU,GACrB,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKX,GAAK,CACRC,KAAMS,GAET,EACDE,aAAc,SAACZ,EAAOU,GACpB,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKX,GAAK,CACRE,OAAQQ,GAEX,EACDG,sBAAuB,SAACb,EAAOU,GAE7B,OADAV,EAAMG,gBAAkBO,EACjBV,CACR,EACDc,wBAAyB,SAACd,EAAOU,GAE/B,OADAV,EAAMO,kBAAoBG,EACnBV,CACR,GAEHe,QAAS,SAACC,GAAa,MAAC,CACtBC,mBAAoB,SAACC,EAASC,GAE1BA,EAAUrB,OAAOI,QACjBiB,EAAUC,OAAOC,OAAOC,kBAAoB,IAC3CH,EAAUI,YAAYC,aAEvBC,gBAAc,wBAAyB,CAAA,GACvCT,EAASlB,OAAOc,cAAa,KAE7Ba,gBAAc,iBAAmBN,EAAUrB,OAAOI,OAAS,aAAe,YAAa,CAAA,GACvFc,EAASlB,OAAOc,cAAcO,EAAUrB,OAAOI,QAElD,EACD"}
1
+ {"version":3,"file":"island.js","sources":["../../src/models/island.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\nimport { eventDispatch } from '../utils'\n\nconst defaultState: IslandTypes = {\n view: null,\n isOpen: true,\n actionsExpanded: false,\n startPosition: {\n x: 0,\n y: 0,\n },\n inputOutputOpened: false,\n}\n\nexport const island = createModel<RootModel>()({\n state: defaultState,\n reducers: {\n setIslandView: (state, payload: IslandViewType | null) => {\n return {\n ...state,\n view: payload,\n }\n },\n toggleIsOpen: (state, payload: boolean) => {\n return {\n ...state,\n isOpen: payload,\n }\n },\n toggleActionsExpanded: (state, payload: boolean) => {\n state.actionsExpanded = payload\n return state\n },\n toggleInputOutputOpened: (state, payload: boolean) => {\n state.inputOutputOpened = payload\n return state\n },\n },\n effects: (dispatch) => ({\n handleToggleIsOpen: (_: void, rootState) => {\n if (\n rootState.island.isOpen &&\n rootState.alerts.status.activeAlertsCount > 0 &&\n !rootState.currentCall.displayName\n ) {\n eventDispatch('phone-island-expanded', {})\n dispatch.island.toggleIsOpen(true)\n } else {\n eventDispatch('phone-island-' + (rootState.island.isOpen ? 'compressed' : 'expanded'), {})\n dispatch.island.toggleIsOpen(!rootState.island.isOpen)\n }\n },\n }),\n})\n\ntype IslandViewType =\n | 'call'\n | 'keypad'\n | 'player'\n | 'transfer'\n | 'recorder'\n | 'physicalPhoneRecorder'\n\ninterface IslandTypes {\n view?: IslandViewType | null\n isOpen: boolean\n actionsExpanded: boolean\n startPosition: {\n x: number\n y: number\n }\n inputOutputOpened: boolean\n}\n"],"names":["island","createModel","state","view","isOpen","actionsExpanded","startPosition","x","y","inputOutputOpened","reducers","setIslandView","payload","__assign","toggleIsOpen","toggleActionsExpanded","toggleInputOutputOpened","effects","dispatch","handleToggleIsOpen","_","rootState","alerts","status","activeAlertsCount","currentCall","displayName","eventDispatch"],"mappings":"iQAkBaA,EAASC,EAAWA,aAAXA,CAAyB,CAC7CC,MAZgC,CAChCC,KAAM,KACNC,QAAQ,EACRC,iBAAiB,EACjBC,cAAe,CACbC,EAAG,EACHC,EAAG,GAELC,mBAAmB,GAKnBC,SAAU,CACRC,cAAe,SAACT,EAAOU,GACrB,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKX,GAAK,CACRC,KAAMS,GAET,EACDE,aAAc,SAACZ,EAAOU,GACpB,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKX,GAAK,CACRE,OAAQQ,GAEX,EACDG,sBAAuB,SAACb,EAAOU,GAE7B,OADAV,EAAMG,gBAAkBO,EACjBV,CACR,EACDc,wBAAyB,SAACd,EAAOU,GAE/B,OADAV,EAAMO,kBAAoBG,EACnBV,CACR,GAEHe,QAAS,SAACC,GAAa,MAAC,CACtBC,mBAAoB,SAACC,EAASC,GAE1BA,EAAUrB,OAAOI,QACjBiB,EAAUC,OAAOC,OAAOC,kBAAoB,IAC3CH,EAAUI,YAAYC,aAEvBC,gBAAc,wBAAyB,CAAA,GACvCT,EAASlB,OAAOc,cAAa,KAE7Ba,gBAAc,iBAAmBN,EAAUrB,OAAOI,OAAS,aAAe,YAAa,CAAA,GACvFc,EAASlB,OAAOc,cAAcO,EAAUrB,OAAOI,QAElD,EACD"}
@@ -1,6 +1,7 @@
1
1
  import type { RootModel } from '.';
2
2
  declare const defaultState: {
3
3
  padding_expanded: number;
4
+ alert_padding_expanded: number;
4
5
  padding_x_collapsed: number;
5
6
  padding_y_collapsed: number;
6
7
  border_radius_expanded: number;
@@ -102,6 +103,7 @@ export declare const motions: {
102
103
  name?: string | undefined;
103
104
  state: {
104
105
  padding_expanded: number;
106
+ alert_padding_expanded: number;
105
107
  padding_x_collapsed: number;
106
108
  padding_y_collapsed: number;
107
109
  border_radius_expanded: number;
@@ -206,6 +208,7 @@ export declare const motions: {
206
208
  }) & ({} | {
207
209
  reducers: import("@rematch/core").ModelReducers<{
208
210
  padding_expanded: number;
211
+ alert_padding_expanded: number;
209
212
  padding_x_collapsed: number;
210
213
  padding_y_collapsed: number;
211
214
  border_radius_expanded: number;
@@ -306,6 +309,7 @@ export declare const motions: {
306
309
  }) & ({} | {
307
310
  baseReducer: import("redux").Reducer<{
308
311
  padding_expanded: number;
312
+ alert_padding_expanded: number;
309
313
  padding_x_collapsed: number;
310
314
  padding_y_collapsed: number;
311
315
  border_radius_expanded: number;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{padding_expanded:24,padding_x_collapsed:8,padding_y_collapsed:16,border_radius_expanded:20,border_radius_collapsed:99,variants:{call:{expanded:{incoming:{width:418,height:96},outgoing:{width:418,height:96},accepted:{width:348,height:236,actionsExpanded:{width:348,height:304}},listening:{width:348,height:168},transfer:{width:348,height:236,actionsExpanded:{width:348,height:304}}},collapsed:{width:168,height:40}},keypad:{expanded:{width:338,height:400},collapsed:{width:168,height:40}},transfer:{expanded:{width:408,height:410},collapsed:{width:168,height:40}},player:{expanded:{width:374,height:236},collapsed:{width:168,height:40}},recorder:{expanded:{width:374,height:256},collapsed:{width:168,height:40}},physicalPhoneRecorder:{expanded:{width:374,height:256},collapsed:{width:168,height:40}},alerts:{width:418,height:88}}}});exports.motions=e;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/@rematch/core/dist/core.esm.js").createModel()({state:{padding_expanded:24,alert_padding_expanded:2,padding_x_collapsed:8,padding_y_collapsed:16,border_radius_expanded:20,border_radius_collapsed:99,variants:{call:{expanded:{incoming:{width:418,height:96},outgoing:{width:418,height:96},accepted:{width:348,height:236,actionsExpanded:{width:348,height:304}},listening:{width:348,height:168},transfer:{width:348,height:236,actionsExpanded:{width:348,height:304}}},collapsed:{width:168,height:40}},keypad:{expanded:{width:338,height:400},collapsed:{width:168,height:40}},transfer:{expanded:{width:408,height:410},collapsed:{width:168,height:40}},player:{expanded:{width:374,height:236},collapsed:{width:168,height:40}},recorder:{expanded:{width:374,height:256},collapsed:{width:168,height:40}},physicalPhoneRecorder:{expanded:{width:374,height:256},collapsed:{width:168,height:40}},alerts:{width:418,height:88}}}});exports.motions=e;
2
2
  //# sourceMappingURL=motions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"motions.js","sources":["../../src/models/motions.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\n\nconst defaultState = {\n padding_expanded: 24,\n padding_x_collapsed: 8,\n padding_y_collapsed: 16,\n border_radius_expanded: 20,\n border_radius_collapsed: 99,\n variants: {\n // Call View\n call: {\n expanded: {\n incoming: {\n width: 418,\n height: 96,\n },\n outgoing: {\n width: 418,\n height: 96,\n },\n accepted: {\n width: 348,\n height: 236,\n actionsExpanded: {\n width: 348,\n height: 304,\n },\n },\n listening: {\n width: 348,\n height: 168,\n },\n transfer: {\n width: 348,\n height: 236,\n actionsExpanded: {\n width: 348,\n height: 304,\n },\n },\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Keypad View\n keypad: {\n expanded: {\n width: 338,\n height: 400,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Transfer View\n transfer: {\n expanded: {\n width: 408,\n height: 410,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Audio Player View\n player: {\n expanded: {\n width: 374,\n height: 236,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Recorder View\n recorder: {\n expanded: {\n width: 374,\n height: 256,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Physical Recorder View\n physicalPhoneRecorder: {\n expanded: {\n width: 374,\n height: 256,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Alerts Section\n alerts: {\n width: 418,\n height: 88,\n },\n },\n}\n\nexport const motions = createModel<RootModel>()({\n state: defaultState,\n})\n\nexport type AnimationsTypes = typeof defaultState\n"],"names":["motions","createModel","state","padding_expanded","padding_x_collapsed","padding_y_collapsed","border_radius_expanded","border_radius_collapsed","variants","call","expanded","incoming","width","height","outgoing","accepted","actionsExpanded","listening","transfer","collapsed","keypad","player","recorder","physicalPhoneRecorder","alerts"],"mappings":"wEAiHaA,4DAAqBC,aAAXA,CAAyB,CAC9CC,MA5GmB,CACnBC,iBAAkB,GAClBC,oBAAqB,EACrBC,oBAAqB,GACrBC,uBAAwB,GACxBC,wBAAyB,GACzBC,SAAU,CAERC,KAAM,CACJC,SAAU,CACRC,SAAU,CACRC,MAAO,IACPC,OAAQ,IAEVC,SAAU,CACRF,MAAO,IACPC,OAAQ,IAEVE,SAAU,CACRH,MAAO,IACPC,OAAQ,IACRG,gBAAiB,CACfJ,MAAO,IACPC,OAAQ,MAGZI,UAAW,CACTL,MAAO,IACPC,OAAQ,KAEVK,SAAU,CACRN,MAAO,IACPC,OAAQ,IACRG,gBAAiB,CACfJ,MAAO,IACPC,OAAQ,OAIdM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZO,OAAQ,CACNV,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZK,SAAU,CACRR,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZQ,OAAQ,CACNX,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZS,SAAU,CACRZ,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZU,sBAAuB,CACrBb,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZW,OAAQ,CACNZ,MAAO,IACPC,OAAQ"}
1
+ {"version":3,"file":"motions.js","sources":["../../src/models/motions.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { createModel } from '@rematch/core'\nimport type { RootModel } from '.'\n\nconst defaultState = {\n padding_expanded: 24,\n alert_padding_expanded: 2,\n padding_x_collapsed: 8,\n padding_y_collapsed: 16,\n border_radius_expanded: 20,\n border_radius_collapsed: 99,\n variants: {\n // Call View\n call: {\n expanded: {\n incoming: {\n width: 418,\n height: 96,\n },\n outgoing: {\n width: 418,\n height: 96,\n },\n accepted: {\n width: 348,\n height: 236,\n actionsExpanded: {\n width: 348,\n height: 304,\n },\n },\n listening: {\n width: 348,\n height: 168,\n },\n transfer: {\n width: 348,\n height: 236,\n actionsExpanded: {\n width: 348,\n height: 304,\n },\n },\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Keypad View\n keypad: {\n expanded: {\n width: 338,\n height: 400,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Transfer View\n transfer: {\n expanded: {\n width: 408,\n height: 410,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Audio Player View\n player: {\n expanded: {\n width: 374,\n height: 236,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Recorder View\n recorder: {\n expanded: {\n width: 374,\n height: 256,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Physical Recorder View\n physicalPhoneRecorder: {\n expanded: {\n width: 374,\n height: 256,\n },\n collapsed: {\n width: 168,\n height: 40,\n },\n },\n // Alerts Section\n alerts: {\n width: 418,\n height: 88,\n },\n },\n}\n\nexport const motions = createModel<RootModel>()({\n state: defaultState,\n})\n\nexport type AnimationsTypes = typeof defaultState\n"],"names":["motions","createModel","state","padding_expanded","alert_padding_expanded","padding_x_collapsed","padding_y_collapsed","border_radius_expanded","border_radius_collapsed","variants","call","expanded","incoming","width","height","outgoing","accepted","actionsExpanded","listening","transfer","collapsed","keypad","player","recorder","physicalPhoneRecorder","alerts"],"mappings":"wEAkHaA,4DAAqBC,aAAXA,CAAyB,CAC9CC,MA7GmB,CACnBC,iBAAkB,GAClBC,uBAAwB,EACxBC,oBAAqB,EACrBC,oBAAqB,GACrBC,uBAAwB,GACxBC,wBAAyB,GACzBC,SAAU,CAERC,KAAM,CACJC,SAAU,CACRC,SAAU,CACRC,MAAO,IACPC,OAAQ,IAEVC,SAAU,CACRF,MAAO,IACPC,OAAQ,IAEVE,SAAU,CACRH,MAAO,IACPC,OAAQ,IACRG,gBAAiB,CACfJ,MAAO,IACPC,OAAQ,MAGZI,UAAW,CACTL,MAAO,IACPC,OAAQ,KAEVK,SAAU,CACRN,MAAO,IACPC,OAAQ,IACRG,gBAAiB,CACfJ,MAAO,IACPC,OAAQ,OAIdM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZO,OAAQ,CACNV,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZK,SAAU,CACRR,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZQ,OAAQ,CACNX,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZS,SAAU,CACRZ,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZU,sBAAuB,CACrBb,SAAU,CACRE,MAAO,IACPC,OAAQ,KAEVM,UAAW,CACTP,MAAO,IACPC,OAAQ,KAIZW,OAAQ,CACNZ,MAAO,IACPC,OAAQ"}
@@ -26,8 +26,7 @@ export declare function parkConversation(body: {
26
26
  export declare function answerPhysical(): Promise<boolean>;
27
27
  export declare function hangupPhysical(): Promise<boolean>;
28
28
  export declare function hangupPhysicalRecordingCall(): Promise<boolean>;
29
- export declare function mutePhysical(): Promise<boolean>;
30
- export declare function unmutePhysical(): Promise<boolean>;
29
+ export declare function mutePhysical(toggleMute: boolean): Promise<boolean>;
31
30
  export declare function pausePhysical(togglePause: boolean): Promise<boolean>;
32
31
  export declare function sendPhysicalDTMF(key: string): Promise<boolean>;
33
32
  export declare function callPhysical(to: string): Promise<boolean>;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.answerPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c;return e.__generator(this,(function(u){switch(u.label){case 0:r=t.store.getState().currentCall.ownerExtension,s={endpointId:r,endpointType:"extension"},u.label=1;case 1:return u.trys.push([1,3,,4]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/answer"),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 2:if(!(i=u.sent()).ok)throw new Error(i.statusText);return[2,!0];case 3:throw c=u.sent(),new Error(c);case 4:return[2]}}))}))},exports.attendedTransfer=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/atxfer"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.callPhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u;return e.__generator(this,(function(h){switch(h.label){case 0:s=t.store.getState().currentCall.ownerExtension,n={endpointId:s,endpointTpe:"extension",number:r},h.label=1;case 1:return h.trys.push([1,3,,4]),a=t.store.getState().fetchDefaults,o=a.baseURL,i=a.headers,[4,fetch("".concat(o,"/astproxy/call"),{method:"POST",headers:e.__assign({},i),body:JSON.stringify(n)})];case 2:if(!(c=h.sent()).ok)throw new Error(c.statusText);return[2,!0];case 3:throw u=h.sent(),new Error(u);case 4:return[2]}}))}))},exports.getAllExtensions=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/extensions"),{headers:e.__assign({},n)})];case 1:if(!(a=i.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,i.sent()];case 3:throw o=i.sent(),new Error(o);case 4:return[2]}}))}))},exports.hangupConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.hangupPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().currentCall,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.hangupPhysicalRecordingCall=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().physicalRecorder,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.mutePhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().currentCall,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/mute"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({muted:!0}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.parkConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/park"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.pausePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,s.conversationId,a={endpointId:n},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/toggle_hold"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({paused:r}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.sendPhysicalDTMF=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(f){switch(f.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n,tone:r.toString()},f.label=1;case 1:return f.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/dtmf"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=f.sent()).ok)throw new Error(h.statusText);return[2,!0];case 3:throw d=f.sent(),new Error(d);case 4:return[2]}}))}))},exports.toggleRecord=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/").concat(r),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 1:if(!(i=c.sent()).ok)throw new Error(i.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.unmutePhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().currentCall,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/unmute"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({muted:!1}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.answerPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c;return e.__generator(this,(function(u){switch(u.label){case 0:r=t.store.getState().currentUser.default_device,s={endpointId:null==r?void 0:r.id,endpointType:"extension"},u.label=1;case 1:return u.trys.push([1,3,,4]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/answer"),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 2:if(!(i=u.sent()).ok)throw new Error(i.statusText);return[2,!0];case 3:throw c=u.sent(),new Error(c);case 4:return[2]}}))}))},exports.attendedTransfer=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/atxfer"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.callPhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u;return e.__generator(this,(function(h){switch(h.label){case 0:s=t.store.getState().currentCall.ownerExtension,n={endpointId:s,endpointTpe:"extension",number:r},h.label=1;case 1:return h.trys.push([1,3,,4]),a=t.store.getState().fetchDefaults,o=a.baseURL,i=a.headers,[4,fetch("".concat(o,"/astproxy/call"),{method:"POST",headers:e.__assign({},i),body:JSON.stringify(n)})];case 2:if(!(c=h.sent()).ok)throw new Error(c.statusText);return[2,!0];case 3:throw u=h.sent(),new Error(u);case 4:return[2]}}))}))},exports.getAllExtensions=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/extensions"),{headers:e.__assign({},n)})];case 1:if(!(a=i.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,i.sent()];case 3:throw o=i.sent(),new Error(o);case 4:return[2]}}))}))},exports.hangupConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.hangupPhysical=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().currentCall,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.hangupPhysicalRecordingCall=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:r=t.store.getState().physicalRecorder,s=r.ownerExtension,n=r.conversationId,a={convid:n,endpointId:s,endpointType:"extension"},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/hangup"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.mutePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(f){switch(f.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n},f.label=1;case 1:return f.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/toggle_mute"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=f.sent()).ok)throw new Error(h.statusText);return t.store.dispatch.currentCall.updateCurrentCall({muted:r}),[2,!0];case 3:throw d=f.sent(),new Error(d);case 4:return[2]}}))}))},exports.parkConversation=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/astproxy/park"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw i=c.sent(),new Error(i);case 3:return[2]}}))}))},exports.pausePhysical=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h;return e.__generator(this,(function(d){switch(d.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,s.conversationId,a={endpointId:n},d.label=1;case 1:return d.trys.push([1,3,,4]),o=t.store.getState().fetchDefaults,i=o.baseURL,c=o.headers,[4,fetch("".concat(i,"/astproxy/toggle_hold"),{method:"POST",headers:e.__assign({},c),body:JSON.stringify(a)})];case 2:if(!(u=d.sent()).ok)throw new Error(u.statusText);return t.store.dispatch.currentCall.updateCurrentCall({paused:r}),[2,!0];case 3:throw h=d.sent(),new Error(h);case 4:return[2]}}))}))},exports.sendPhysicalDTMF=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,i,c,u,h,d;return e.__generator(this,(function(f){switch(f.label){case 0:s=t.store.getState().currentCall,n=s.ownerExtension,a=s.conversationId,o={convid:a,endpointId:n,tone:r.toString()},f.label=1;case 1:return f.trys.push([1,3,,4]),i=t.store.getState().fetchDefaults,c=i.baseURL,u=i.headers,[4,fetch("".concat(c,"/astproxy/dtmf"),{method:"POST",headers:e.__assign({},u),body:JSON.stringify(o)})];case 2:if(!(h=f.sent()).ok)throw new Error(h.statusText);return[2,!0];case 3:throw d=f.sent(),new Error(d);case 4:return[2]}}))}))},exports.toggleRecord=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,i;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/astproxy/").concat(r),{method:"POST",headers:e.__assign({},o),body:JSON.stringify(s)})];case 1:if(!(i=c.sent()).ok)throw new Error(i.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))};
2
2
  //# sourceMappingURL=astproxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"astproxy.js","sources":["../../src/services/astproxy.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport { ExtensionsTypes, TransferTypes } from '../types'\nimport { useSelector } from 'react-redux'\n\n/**\n * Get all extensions\n */\nexport async function getAllExtensions(): Promise<ExtensionsTypes> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/extensions`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start blind transfer\n */\nexport async function blindTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/blindtransfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start attended transfer\n */\nexport async function attendedTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/atxfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Hangup a conversation\n */\nexport async function hangupConversation(body: { convid: string; endpointId: string }) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function parkConversation(body: {\n applicantId: string // Current user main extension\n convid: string\n endpointId: string // Current user main extension\n}) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/park`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function answerPhysical() {\n // get data\n const { ownerExtension } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/answer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysicalRecordingCall() {\n // get data\n const { ownerExtension, conversationId } = store.getState().physicalRecorder\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function mutePhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/mute`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n muted: true,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function unmutePhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/unmute`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n muted: false,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function pausePhysical(togglePause: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_hold`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n paused: togglePause,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function sendPhysicalDTMF(key: string) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n tone: key.toString(),\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/dtmf`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function callPhysical(to: string) {\n // get data\n const { ownerExtension } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n endpointTpe: 'extension',\n number: to,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/call`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function toggleRecord(recordingType: any, obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/${recordingType}`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n"],"names":["ownerExtension","store","getState","currentCall","body","endpointId","endpointType","_a","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","JSON","stringify","response","_b","sent","ok","Error","statusText","error_6","error_3","to","endpointTpe","number","error_13","json","error_1","error_4","conversationId","convid","_c","error_7","physicalRecorder","error_8","dispatch","updateCurrentCall","muted","error_9","error_5","togglePause","paused","error_11","key","tone","toString","error_12","recordingType","obj","error_10"],"mappings":"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"}
1
+ {"version":3,"file":"astproxy.js","sources":["../../src/services/astproxy.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport { ExtensionsTypes, TransferTypes } from '../types'\nimport { useSelector } from 'react-redux'\n\n/**\n * Get all extensions\n */\nexport async function getAllExtensions(): Promise<ExtensionsTypes> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/extensions`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start blind transfer\n */\nexport async function blindTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/blindtransfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Start attended transfer\n */\nexport async function attendedTransfer(body: TransferTypes) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/atxfer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Hangup a conversation\n */\nexport async function hangupConversation(body: { convid: string; endpointId: string }) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function parkConversation(body: {\n applicantId: string // Current user main extension\n convid: string\n endpointId: string // Current user main extension\n}) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/park`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function answerPhysical() {\n // get data\n const { default_device } = store.getState().currentUser\n\n // compose body\n let body: any = {\n endpointId: default_device?.id,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/answer`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysical() {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function hangupPhysicalRecordingCall() {\n // get data\n const { ownerExtension, conversationId } = store.getState().physicalRecorder\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n endpointType: 'extension',\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/hangup`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function mutePhysical(toggleMute: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_mute`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n muted: toggleMute,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function pausePhysical(togglePause: boolean) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/toggle_hold`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n store.dispatch.currentCall.updateCurrentCall({\n paused: togglePause,\n })\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function sendPhysicalDTMF(key: string) {\n // get data\n const { ownerExtension, conversationId } = store.getState().currentCall\n\n // compose body\n let body: any = {\n convid: conversationId,\n endpointId: ownerExtension,\n tone: key.toString(),\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/dtmf`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function callPhysical(to: string) {\n // get data\n const { ownerExtension } = store.getState().currentCall\n\n // compose body\n let body: any = {\n endpointId: ownerExtension,\n endpointTpe: 'extension',\n number: to,\n }\n\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/call`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(body),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function toggleRecord(recordingType: any, obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/${recordingType}`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n"],"names":["default_device","store","getState","currentUser","body","endpointId","id","endpointType","_a","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","JSON","stringify","response","_b","sent","ok","Error","statusText","error_6","error_3","to","ownerExtension","currentCall","endpointTpe","number","error_12","json","error_1","error_4","conversationId","convid","_c","error_7","physicalRecorder","error_8","toggleMute","dispatch","updateCurrentCall","muted","error_9","error_5","togglePause","paused","error_10","key","tone","toString","error_11","recordingType","obj"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nethesis/phone-island",
3
3
  "author": "Nethesis",
4
- "version": "0.8.24",
4
+ "version": "0.8.26",
5
5
  "description": "NethVoice CTI Phone Island",
6
6
  "keywords": [
7
7
  "nethserver",