@nethesis/phone-island 1.1.7 → 1.1.8-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AlertView/index.js +1 -1
- package/dist/components/AlertView/index.js.map +1 -1
- package/dist/components/AudioPlayerView/PlayerFooterActions.js +1 -1
- package/dist/components/AudioPlayerView/PlayerFooterActions.js.map +1 -1
- package/dist/components/AudioPlayerView/Progress.js +1 -1
- package/dist/components/AudioPlayerView/Progress.js.map +1 -1
- package/dist/components/AudioPlayerView/index.js +1 -1
- package/dist/components/AudioPlayerView/index.js.map +1 -1
- package/dist/components/Button.js +1 -1
- package/dist/components/Button.js.map +1 -1
- package/dist/components/CallView/Actions.js +1 -1
- package/dist/components/CallView/Actions.js.map +1 -1
- package/dist/components/CallView/Number.js +1 -1
- package/dist/components/CallView/Number.js.map +1 -1
- package/dist/components/CallView/index.js +1 -1
- package/dist/components/CallView/index.js.map +1 -1
- package/dist/components/ConferenceView/index.js +1 -1
- package/dist/components/ConferenceView/index.js.map +1 -1
- package/dist/components/ContactView/ContactListView.js +1 -1
- package/dist/components/ContactView/ContactListView.js.map +1 -1
- package/dist/components/ContactView/TransferActions.js +1 -1
- package/dist/components/ContactView/TransferActions.js.map +1 -1
- package/dist/components/CustomThemedTooltip.js.map +1 -1
- package/dist/components/Events.js +1 -1
- package/dist/components/Events.js.map +1 -1
- package/dist/components/Hangup.js +1 -1
- package/dist/components/Hangup.js.map +1 -1
- package/dist/components/Island.js +1 -1
- package/dist/components/Island.js.map +1 -1
- package/dist/components/IslandDrag.js +1 -1
- package/dist/components/IslandDrag.js.map +1 -1
- package/dist/components/IslandMotion.js +1 -1
- package/dist/components/IslandMotion.js.map +1 -1
- package/dist/components/KeypadView/Actions.js +1 -1
- package/dist/components/KeypadView/Actions.js.map +1 -1
- package/dist/components/KeypadView/index.js +1 -1
- package/dist/components/KeypadView/index.js.map +1 -1
- package/dist/components/PhysicalRecorderView/index.js +1 -1
- package/dist/components/PhysicalRecorderView/index.js.map +1 -1
- package/dist/components/RecorderView/Actions.js +1 -1
- package/dist/components/RecorderView/Actions.js.map +1 -1
- package/dist/components/SettingsView/AudioView.js +1 -1
- package/dist/components/SettingsView/AudioView.js.map +1 -1
- package/dist/components/SettingsView/MicrophoneView.js +1 -1
- package/dist/components/SettingsView/MicrophoneView.js.map +1 -1
- package/dist/components/SettingsView/ThemeView.js +1 -1
- package/dist/components/SettingsView/ThemeView.js.map +1 -1
- package/dist/components/SettingsView/VideoInputView.js +1 -1
- package/dist/components/SettingsView/VideoInputView.js.map +1 -1
- package/dist/components/SideView/hooks/useSideViewLogic.js +1 -1
- package/dist/components/SideView/hooks/useSideViewLogic.js.map +1 -1
- package/dist/components/Socket.js +1 -1
- package/dist/components/Socket.js.map +1 -1
- package/dist/components/StreamingAnswerView/index.js +1 -1
- package/dist/components/StreamingAnswerView/index.js.map +1 -1
- package/dist/components/StreamingImage/index.js +1 -1
- package/dist/components/StreamingImage/index.js.map +1 -1
- package/dist/components/StreamingUnlock/index.js +2 -0
- package/dist/components/StreamingUnlock/index.js.map +1 -0
- package/dist/components/StreamingVideo/index.js +2 -0
- package/dist/components/StreamingVideo/index.js.map +1 -0
- package/dist/components/SwitchInputView/DropdownContent.js +1 -1
- package/dist/components/SwitchInputView/DropdownContent.js.map +1 -1
- package/dist/components/SwitchInputView/Index.js +1 -1
- package/dist/components/TranscriptionView/TranscriptionView.js +1 -1
- package/dist/components/TranscriptionView/TranscriptionView.js.map +1 -1
- package/dist/components/TransferButton.js +1 -1
- package/dist/components/TransferButton.js.map +1 -1
- package/dist/components/VideoView/index.js +1 -1
- package/dist/components/VideoView/index.js.map +1 -1
- package/dist/components/WebRTC.js +1 -1
- package/dist/components/WebRTC.js.map +1 -1
- package/dist/events/CallEvents.js +1 -1
- package/dist/events/CallEvents.js.map +1 -1
- package/dist/events/PlayerEvents.js +1 -1
- package/dist/events/PlayerEvents.js.map +1 -1
- package/dist/events/RecorderEvents.js +1 -1
- package/dist/events/RecorderEvents.js.map +1 -1
- package/dist/events/SocketEvents.js +1 -1
- package/dist/events/SocketEvents.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/lib/darkTheme.js +1 -1
- package/dist/lib/darkTheme.js.map +1 -1
- package/dist/lib/devices/devices.js +1 -1
- package/dist/lib/devices/devices.js.map +1 -1
- package/dist/lib/island/island.js +1 -1
- package/dist/lib/island/island.js.map +1 -1
- package/dist/lib/phone/call.js +1 -1
- package/dist/lib/phone/call.js.map +1 -1
- package/dist/lib/phone/video.js +1 -1
- package/dist/lib/phone/video.js.map +1 -1
- package/dist/lib/storage/local_storage.js +1 -1
- package/dist/lib/storage/local_storage.js.map +1 -1
- package/dist/lib/streaming/streamingVideo.js +2 -0
- package/dist/lib/streaming/streamingVideo.js.map +1 -0
- package/dist/lib/streaming/whepPlayer.js +2 -0
- package/dist/lib/streaming/whepPlayer.js.map +1 -0
- package/dist/models/currentCall.js +1 -1
- package/dist/models/currentCall.js.map +1 -1
- package/dist/models/island.js +1 -1
- package/dist/models/island.js.map +1 -1
- package/dist/models/motions.js +1 -1
- package/dist/models/motions.js.map +1 -1
- package/dist/models/streaming.js +1 -1
- package/dist/models/streaming.js.map +1 -1
- package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js +1 -1
- package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.mjs.js.map +1 -1
- package/dist/node_modules/react-redux/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +1 -1
- package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/public/locales/en/translation.json.js +1 -1
- package/dist/public/locales/it/translation.json.js +1 -1
- package/dist/services/user.js +1 -1
- package/dist/services/user.js.map +1 -1
- package/dist/utils/customHooks/useStreamingAspectRatio.js +2 -0
- package/dist/utils/customHooks/useStreamingAspectRatio.js.map +1 -0
- package/dist/utils/customHooks/useStreamingContentHeight.js +2 -0
- package/dist/utils/customHooks/useStreamingContentHeight.js.map +1 -0
- package/dist/utils/customHooks/useStreamingVideo.js +2 -0
- package/dist/utils/customHooks/useStreamingVideo.js.map +1 -0
- package/dist/utils/streaming/previewSize.js +2 -0
- package/dist/utils/streaming/previewSize.js.map +1 -0
- package/dist/utils/streaming/streamingUtils.js +1 -1
- package/dist/utils/streaming/streamingUtils.js.map +1 -1
- package/dist/utils/streaming/videoSource.js +2 -0
- package/dist/utils/streaming/videoSource.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallEvents.js","sources":["../../src/events/CallEvents.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 { useEventListener, eventDispatch } from '../utils'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\nimport {\n callNumber,\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n answerIncomingCall,\n hangupCurrentCall,\n} from '../lib/phone/call'\n\nexport const CallEvents: FC<{ sipHost: string }> = ({ sipHost }) => {\n const dispatch = useDispatch<Dispatch>()\n\n /**\n * Event listner for phone-island-call-* events\n */\n // Clean up phone number from unwanted characters\n const sanitizePhoneNumber = (number: string): any => {\n // Keep only numbers (0-9) and special characters (+, *, #)\n return number.replace(/[^0-9+*#]/g, '')\n }\n\n useEventListener('phone-island-call-start', (data: CallStartTypes) => {\n const number = sanitizePhoneNumber(data.number)\n callNumber(number, sipHost, { video: Boolean(data.video) })\n })\n useEventListener('phone-island-call-hold', () => {\n pauseCurrentCall()\n })\n useEventListener('phone-island-call-unhold', () => {\n unpauseCurrentCall()\n })\n useEventListener('phone-island-call-mute', () => {\n muteCurrentCall()\n })\n useEventListener('phone-island-call-unmute', () => {\n unmuteCurrentCall()\n })\n\n useEventListener('phone-island-call-park', () => {\n parkCurrentCall()\n })\n useEventListener('phone-island-call-answer', () => {\n answerIncomingCall()\n })\n useEventListener('phone-island-call-end', () => {\n hangupCurrentCall()\n })\n\n useEventListener('phone-island-call-listen', (data: ListenIntrudeTypes) => {\n dispatch.listen.setUpdateListenStatus(true, data.number)\n eventDispatch('phone-island-call-listened', {})\n dispatch.island.toggleActionsExpanded(false)\n })\n\n useEventListener('phone-island-call-intrude', (data: ListenIntrudeTypes) => {\n dispatch.listen.setUpdateIntrudeStatus(true, data.number)\n eventDispatch('phone-island-call-intruded', {})\n dispatch.island.toggleActionsExpanded(false)\n })\n\n return <></>\n}\n\n/**\n * Dispatch the phone-island-outgoing-call-started event\n */\nexport function dispatchOutgoingCallStarted(name: string = '', number: string = '') {\n const data: OutgoingCallStartedTypes = {\n name,\n number,\n }\n eventDispatch('phone-island-outgoing-call-started', data)\n}\n\ninterface CallStartTypes {\n number: string\n // Start the call with the local camera already in the first INVITE (WebRTC only)\n video?: boolean\n}\n\ninterface OutgoingCallStartedTypes {\n name: string\n number: string\n}\n\ninterface ListenIntrudeTypes {\n number: string\n}\n"],"names":["_a","sipHost","dispatch","useDispatch","useEventListener","data","number","replace","sanitizePhoneNumber","callNumber","video","Boolean","pauseCurrentCall","unpauseCurrentCall","muteCurrentCall","unmuteCurrentCall","parkCurrentCall","answerIncomingCall","hangupCurrentCall","listen","setUpdateListenStatus","eventDispatch","island","toggleActionsExpanded","setUpdateIntrudeStatus","React","name"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CallEvents.js","sources":["../../src/events/CallEvents.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 { useEventListener, eventDispatch } from '../utils'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\nimport {\n callNumber,\n muteCurrentCall,\n unmuteCurrentCall,\n pauseCurrentCall,\n unpauseCurrentCall,\n parkCurrentCall,\n answerIncomingCall,\n hangupCurrentCall,\n} from '../lib/phone/call'\n\nexport const CallEvents: FC<{ sipHost: string }> = ({ sipHost }) => {\n const dispatch = useDispatch<Dispatch>()\n\n /**\n * Event listner for phone-island-call-* events\n */\n // Clean up phone number from unwanted characters\n const sanitizePhoneNumber = (number: string): any => {\n // Keep only numbers (0-9) and special characters (+, *, #)\n return number.replace(/[^0-9+*#]/g, '')\n }\n\n useEventListener('phone-island-call-start', (data: CallStartTypes) => {\n const number = sanitizePhoneNumber(data.number)\n callNumber(number, sipHost, { video: Boolean(data.video) })\n })\n useEventListener('phone-island-call-hold', () => {\n pauseCurrentCall()\n })\n useEventListener('phone-island-call-unhold', () => {\n unpauseCurrentCall()\n })\n useEventListener('phone-island-call-mute', () => {\n muteCurrentCall()\n })\n useEventListener('phone-island-call-unmute', () => {\n unmuteCurrentCall()\n })\n\n useEventListener('phone-island-call-park', () => {\n parkCurrentCall()\n })\n useEventListener('phone-island-call-answer', () => {\n answerIncomingCall()\n })\n useEventListener('phone-island-call-end', () => {\n hangupCurrentCall()\n })\n\n useEventListener('phone-island-call-listen', (data: ListenIntrudeTypes) => {\n dispatch.listen.setUpdateListenStatus(true, data.number)\n eventDispatch('phone-island-call-listened', {})\n dispatch.island.toggleActionsExpanded(false)\n })\n\n useEventListener('phone-island-call-intrude', (data: ListenIntrudeTypes) => {\n dispatch.listen.setUpdateIntrudeStatus(true, data.number)\n eventDispatch('phone-island-call-intruded', {})\n dispatch.island.toggleActionsExpanded(false)\n })\n\n return <></>\n}\n\n/**\n * Dispatch the phone-island-outgoing-call-started event\n */\nexport function dispatchOutgoingCallStarted(name: string = '', number: string = '') {\n const data: OutgoingCallStartedTypes = {\n name,\n number,\n }\n eventDispatch('phone-island-outgoing-call-started', data)\n}\n\ninterface CallStartTypes {\n number: string\n // Start the call with the local camera already in the first INVITE (WebRTC only)\n video?: boolean\n}\n\ninterface OutgoingCallStartedTypes {\n name: string\n number: string\n}\n\ninterface ListenIntrudeTypes {\n number: string\n}\n"],"names":["_a","sipHost","dispatch","useDispatch","useEventListener","data","number","replace","sanitizePhoneNumber","callNumber","video","Boolean","pauseCurrentCall","unpauseCurrentCall","muteCurrentCall","unmuteCurrentCall","parkCurrentCall","answerIncomingCall","hangupCurrentCall","listen","setUpdateListenStatus","eventDispatch","island","toggleActionsExpanded","setUpdateIntrudeStatus","React","name"],"mappings":"mjBAkBmD,SAACA,GAAE,IAAAC,EAAOD,EAAAC,QACrDC,EAAWC,EAAAA,cAkDjB,OAvCAC,mBAAiB,0BAA2B,SAACC,GAC3C,IAAMC,EANoB,SAACA,GAE3B,OAAOA,EAAOC,QAAQ,aAAc,GACtC,CAGiBC,CAAoBH,EAAKC,QACxCG,aAAWH,EAAQL,EAAS,CAAES,MAAOC,QAAQN,EAAKK,QACpD,GACAN,EAAgBA,iBAAC,yBAA0B,WACzCQ,EAAAA,kBACF,GACAR,EAAgBA,iBAAC,2BAA4B,WAC3CS,EAAAA,oBACF,GACAT,EAAgBA,iBAAC,yBAA0B,WACzCU,EAAAA,iBACF,GACAV,EAAgBA,iBAAC,2BAA4B,WAC3CW,EAAAA,mBACF,GAEAX,EAAgBA,iBAAC,yBAA0B,WACzCY,EAAAA,iBACF,GACAZ,EAAgBA,iBAAC,2BAA4B,WAC3Ca,EAAAA,oBACF,GACAb,EAAgBA,iBAAC,wBAAyB,WACxCc,EAAAA,mBACF,GAEAd,mBAAiB,2BAA4B,SAACC,GAC5CH,EAASiB,OAAOC,uBAAsB,EAAMf,EAAKC,QACjDe,gBAAc,6BAA8B,CAAA,GAC5CnB,EAASoB,OAAOC,uBAAsB,EACxC,GAEAnB,mBAAiB,4BAA6B,SAACC,GAC7CH,EAASiB,OAAOK,wBAAuB,EAAMnB,EAAKC,QAClDe,gBAAc,6BAA8B,CAAA,GAC5CnB,EAASoB,OAAOC,uBAAsB,EACxC,GAEOE,gDACT,sCAKgB,SAA4BC,EAAmBpB,QAAnB,IAAAoB,IAAAA,EAAiB,SAAE,IAAApB,IAAAA,EAAmB,IAChF,IAAMD,EAAiC,CACrCqB,KAAIA,EACJpB,OAAMA,GAERe,gBAAc,qCAAsChB,EACtD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),i=require("../utils/customHooks/useEventListener.js"),r=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js"),require("../store/index.js");var t=require("../lib/player/audio.js");require("../node_modules/react-redux/es/index.js");var a=require("../node_modules/react-redux/es/hooks/useDispatch.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),i=require("../utils/customHooks/useEventListener.js"),r=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js"),require("../store/index.js"),require("../services/user.js");var t=require("../lib/player/audio.js");require("../node_modules/react-redux/es/index.js");var a=require("../node_modules/react-redux/es/hooks/useDispatch.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),require("../node_modules/react-redux/node_modules/react-is/index.js");var n=s(e);exports.PlayerEvents=function(){var e=a.useDispatch();return i.useEventListener("phone-island-audio-player-start",function(i){if(i.type){if("ringtone_preview"===i.type)return void(i.base64_audio_file&&(e.island.setIslandView("player"),e.player.setAudioPlayerType("ringtone_preview"),e.player.updateStartAudioPlayer({src:i.base64_audio_file,useRingtoneOutput:!0}),i.description&&e.player.setAudioPlayerTrackName(i.description)));if(!i.id)return void console.error("phone-island-audio-player-start: when a type is provided, the id is required");"announcement"===i.type?(t.getAnnouncementName(null==i?void 0:i.id),t.playAnnouncement(null==i?void 0:i.id)):"call_recording"===(null==i?void 0:i.type)?(t.getRecordingName(null==i?void 0:i.id),t.playCallRecording(null==i?void 0:i.id)):"voicemail"===(null==i?void 0:i.type)&&(t.getVoicemailName(null==i?void 0:i.id),t.playVoicemail(null==i?void 0:i.id))}else i.base64_audio_file&&(e.island.setIslandView("player"),e.player.resetAudioPlayerType(),e.player.updateStartAudioPlayer({src:i.base64_audio_file})),i.description&&e.player.setAudioPlayerTrackName(i.description)}),n.default.createElement(n.default.Fragment,null)},exports.dispatchAudioPlayerStarted=function(){r.eventDispatch("phone-island-audio-player-started",{})};
|
|
2
2
|
//# sourceMappingURL=PlayerEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerEvents.js","sources":["../../src/events/PlayerEvents.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { eventDispatch } from '../utils'\nimport { useEventListener } from '../utils'\nimport {\n playAnnouncement,\n playCallRecording,\n getRecordingName,\n getAnnouncementName,\n getVoicemailName,\n playVoicemail,\n} from '../lib/player/audio'\nimport { type PlayerStartTypes } from '../types'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\n\nexport const PlayerEvents: FC = () => {\n const dispatch = useDispatch<Dispatch>()\n\n /**\n * Event listner for phone-island-audio-player-start event\n */\n useEventListener('phone-island-audio-player-start', (data: PlayerStartTypes) => {\n if (data.type) {\n // Handle ringtone preview separately (doesn't require id)\n if (data.type === 'ringtone_preview') {\n if (data.base64_audio_file) {\n dispatch.island.setIslandView('player')\n dispatch.player.setAudioPlayerType('ringtone_preview')\n dispatch.player.updateStartAudioPlayer({\n src: data.base64_audio_file,\n useRingtoneOutput: true,\n })\n if (data.description) {\n dispatch.player.setAudioPlayerTrackName(data.description)\n }\n }\n return\n }\n \n // Check the id required when a type is provided (for other types)\n if (!data.id) {\n console.error(\n 'phone-island-audio-player-start: when a type is provided, the id is required',\n )\n return\n }\n // Manage types\n if (data.type === 'announcement') {\n getAnnouncementName(data?.id)\n playAnnouncement(data?.id)\n } else if (data?.type === 'call_recording') {\n getRecordingName(data?.id)\n playCallRecording(data?.id)\n } else if (data?.type === 'voicemail') {\n getVoicemailName(data?.id)\n playVoicemail(data?.id)\n }\n } else {\n if (data.base64_audio_file) {\n // Play the base64 audio file\n dispatch.island.setIslandView('player')\n dispatch.player.resetAudioPlayerType()\n dispatch.player.updateStartAudioPlayer({\n src: data.base64_audio_file,\n })\n }\n if (data.description) {\n dispatch.player.setAudioPlayerTrackName(data.description)\n }\n }\n })\n\n return <></>\n}\n\n/**\n * Dispatch call start\n */\nexport function dispatchAudioPlayerStarted() {\n eventDispatch('phone-island-audio-player-started', {})\n}\n"],"names":["dispatch","useDispatch","useEventListener","data","type","base64_audio_file","island","setIslandView","player","setAudioPlayerType","updateStartAudioPlayer","src","useRingtoneOutput","description","setAudioPlayerTrackName","id","console","error","getAnnouncementName","playAnnouncement","getRecordingName","playCallRecording","getVoicemailName","playVoicemail","resetAudioPlayerType","React","eventDispatch"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlayerEvents.js","sources":["../../src/events/PlayerEvents.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { eventDispatch } from '../utils'\nimport { useEventListener } from '../utils'\nimport {\n playAnnouncement,\n playCallRecording,\n getRecordingName,\n getAnnouncementName,\n getVoicemailName,\n playVoicemail,\n} from '../lib/player/audio'\nimport { type PlayerStartTypes } from '../types'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch } from '../store'\n\nexport const PlayerEvents: FC = () => {\n const dispatch = useDispatch<Dispatch>()\n\n /**\n * Event listner for phone-island-audio-player-start event\n */\n useEventListener('phone-island-audio-player-start', (data: PlayerStartTypes) => {\n if (data.type) {\n // Handle ringtone preview separately (doesn't require id)\n if (data.type === 'ringtone_preview') {\n if (data.base64_audio_file) {\n dispatch.island.setIslandView('player')\n dispatch.player.setAudioPlayerType('ringtone_preview')\n dispatch.player.updateStartAudioPlayer({\n src: data.base64_audio_file,\n useRingtoneOutput: true,\n })\n if (data.description) {\n dispatch.player.setAudioPlayerTrackName(data.description)\n }\n }\n return\n }\n \n // Check the id required when a type is provided (for other types)\n if (!data.id) {\n console.error(\n 'phone-island-audio-player-start: when a type is provided, the id is required',\n )\n return\n }\n // Manage types\n if (data.type === 'announcement') {\n getAnnouncementName(data?.id)\n playAnnouncement(data?.id)\n } else if (data?.type === 'call_recording') {\n getRecordingName(data?.id)\n playCallRecording(data?.id)\n } else if (data?.type === 'voicemail') {\n getVoicemailName(data?.id)\n playVoicemail(data?.id)\n }\n } else {\n if (data.base64_audio_file) {\n // Play the base64 audio file\n dispatch.island.setIslandView('player')\n dispatch.player.resetAudioPlayerType()\n dispatch.player.updateStartAudioPlayer({\n src: data.base64_audio_file,\n })\n }\n if (data.description) {\n dispatch.player.setAudioPlayerTrackName(data.description)\n }\n }\n })\n\n return <></>\n}\n\n/**\n * Dispatch call start\n */\nexport function dispatchAudioPlayerStarted() {\n eventDispatch('phone-island-audio-player-started', {})\n}\n"],"names":["dispatch","useDispatch","useEventListener","data","type","base64_audio_file","island","setIslandView","player","setAudioPlayerType","updateStartAudioPlayer","src","useRingtoneOutput","description","setAudioPlayerTrackName","id","console","error","getAnnouncementName","playAnnouncement","getRecordingName","playCallRecording","getVoicemailName","playVoicemail","resetAudioPlayerType","React","eventDispatch"],"mappings":"wtBAkBgC,WAC9B,IAAMA,EAAWC,EAAAA,cAwDjB,OAnDAC,mBAAiB,kCAAmC,SAACC,GACnD,GAAIA,EAAKC,KAAM,CAEb,GAAkB,qBAAdD,EAAKC,KAYP,YAXID,EAAKE,oBACPL,EAASM,OAAOC,cAAc,UAC9BP,EAASQ,OAAOC,mBAAmB,oBACnCT,EAASQ,OAAOE,uBAAuB,CACrCC,IAAKR,EAAKE,kBACVO,mBAAmB,IAEjBT,EAAKU,aACPb,EAASQ,OAAOM,wBAAwBX,EAAKU,eAOnD,IAAKV,EAAKY,GAIR,YAHAC,QAAQC,MACN,gFAKc,iBAAdd,EAAKC,MACPc,sBAAoBf,eAAAA,EAAMY,IAC1BI,mBAAiBhB,eAAAA,EAAMY,KACC,oBAAfZ,aAAI,EAAJA,EAAMC,OACfgB,mBAAiBjB,eAAAA,EAAMY,IACvBM,oBAAkBlB,eAAAA,EAAMY,KACA,eAAfZ,aAAI,EAAJA,EAAMC,QACfkB,mBAAiBnB,eAAAA,EAAMY,IACvBQ,gBAAcpB,eAAAA,EAAMY,IAEvB,MACKZ,EAAKE,oBAEPL,EAASM,OAAOC,cAAc,UAC9BP,EAASQ,OAAOgB,uBAChBxB,EAASQ,OAAOE,uBAAuB,CACrCC,IAAKR,EAAKE,qBAGVF,EAAKU,aACPb,EAASQ,OAAOM,wBAAwBX,EAAKU,YAGnD,GAEOY,gDACT,gDAMEC,gBAAc,oCAAqC,CAAA,EACrD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../utils/customHooks/useEventListener.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../utils/customHooks/useEventListener.js"),i=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js");var t=require("../store/index.js");require("../services/user.js"),require("../node_modules/react-redux/es/index.js");var s=require("../node_modules/react-redux/es/hooks/useDispatch.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e);exports.RecorderEvents=function(){var e=s.useDispatch();return r.useEventListener("phone-island-recording-open",function(r){e.island.setIslandView("recorder"),i.eventDispatch("phone-island-recording-opened",{})}),r.useEventListener("phone-island-physical-recording-view",function(r){e.island.setIslandView("physicalPhoneRecorder"),i.eventDispatch("phone-island-physical-recording-opened",{}),setTimeout(function(){i.eventDispatch("phone-island-physical-recording-open",{})},500)}),o.default.createElement(o.default.Fragment,null)},exports.dispatchPhysicalRecordingSave=function(){var e=t.store.getState().physicalRecorder.tempFileName;i.eventDispatch("phone-island-physical-recording-saved",{tempFileName:e})},exports.dispatchRecordingSave=function(){var e,r,s=t.store.getState().recorder.tempFileName,n=(null===(r=null===(e=t.store.getState().player.audioPlayer)||void 0===e?void 0:e.current)||void 0===r?void 0:r.src)||"";i.eventDispatch("phone-island-recording-saved",{tempFileName:s,audioFileURL:n})};
|
|
2
2
|
//# sourceMappingURL=RecorderEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecorderEvents.js","sources":["../../src/events/RecorderEvents.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { eventDispatch } from '../utils'\nimport { useEventListener } from '../utils'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch, store } from '../store'\n\nexport const RecorderEvents: FC = () => {\n const dispatch = useDispatch<Dispatch>()\n\n //Recording could be started from the web interface or from the physical device\n\n /**\n * Event listner for phone-island-audio-player-start event if webRtc is main device\n */\n useEventListener('phone-island-recording-open', (data: {}) => {\n dispatch.island.setIslandView('recorder')\n eventDispatch('phone-island-recording-opened', {})\n })\n\n /**\n * Event listner for phone-island-recording-start event if physical device is main device\n */\n useEventListener('phone-island-physical-recording-view', (data: {}) => {\n dispatch.island.setIslandView('physicalPhoneRecorder')\n eventDispatch('phone-island-physical-recording-opened', {})\n\n // Start recording after 500ms\n setTimeout(() => {\n eventDispatch('phone-island-physical-recording-open', {})\n }, 500)\n })\n\n return <></>\n}\n\n/**\n * Dispatch recording save\n */\nexport function dispatchRecordingSave() {\n const tempFileName = store.getState().recorder.tempFileName\n const audioFileURL = store.getState().player.audioPlayer?.current?.src || ''\n eventDispatch('phone-island-recording-saved', {\n tempFileName,\n audioFileURL,\n })\n}\n\n/**\n * Dispatch physical phone recording save\n */\nexport function dispatchPhysicalRecordingSave() {\n const tempFileName = store.getState().physicalRecorder.tempFileName\n eventDispatch('phone-island-physical-recording-saved', {\n tempFileName,\n })\n}\n"],"names":["dispatch","useDispatch","useEventListener","data","island","setIslandView","eventDispatch","setTimeout","React","tempFileName","store","getState","physicalRecorder","recorder","audioFileURL","_a","player","audioPlayer","current","src"],"mappings":"
|
|
1
|
+
{"version":3,"file":"RecorderEvents.js","sources":["../../src/events/RecorderEvents.tsx"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport React, { type FC } from 'react'\nimport { eventDispatch } from '../utils'\nimport { useEventListener } from '../utils'\nimport { useDispatch } from 'react-redux'\nimport { Dispatch, store } from '../store'\n\nexport const RecorderEvents: FC = () => {\n const dispatch = useDispatch<Dispatch>()\n\n //Recording could be started from the web interface or from the physical device\n\n /**\n * Event listner for phone-island-audio-player-start event if webRtc is main device\n */\n useEventListener('phone-island-recording-open', (data: {}) => {\n dispatch.island.setIslandView('recorder')\n eventDispatch('phone-island-recording-opened', {})\n })\n\n /**\n * Event listner for phone-island-recording-start event if physical device is main device\n */\n useEventListener('phone-island-physical-recording-view', (data: {}) => {\n dispatch.island.setIslandView('physicalPhoneRecorder')\n eventDispatch('phone-island-physical-recording-opened', {})\n\n // Start recording after 500ms\n setTimeout(() => {\n eventDispatch('phone-island-physical-recording-open', {})\n }, 500)\n })\n\n return <></>\n}\n\n/**\n * Dispatch recording save\n */\nexport function dispatchRecordingSave() {\n const tempFileName = store.getState().recorder.tempFileName\n const audioFileURL = store.getState().player.audioPlayer?.current?.src || ''\n eventDispatch('phone-island-recording-saved', {\n tempFileName,\n audioFileURL,\n })\n}\n\n/**\n * Dispatch physical phone recording save\n */\nexport function dispatchPhysicalRecordingSave() {\n const tempFileName = store.getState().physicalRecorder.tempFileName\n eventDispatch('phone-island-physical-recording-saved', {\n tempFileName,\n })\n}\n"],"names":["dispatch","useDispatch","useEventListener","data","island","setIslandView","eventDispatch","setTimeout","React","tempFileName","store","getState","physicalRecorder","recorder","audioFileURL","_a","player","audioPlayer","current","src"],"mappings":"2hBASkC,WAChC,IAAMA,EAAWC,EAAAA,cAyBjB,OAlBAC,mBAAiB,8BAA+B,SAACC,GAC/CH,EAASI,OAAOC,cAAc,YAC9BC,gBAAc,gCAAiC,CAAA,EACjD,GAKAJ,mBAAiB,uCAAwC,SAACC,GACxDH,EAASI,OAAOC,cAAc,yBAC9BC,gBAAc,yCAA0C,CAAA,GAGxDC,WAAW,WACTD,gBAAc,uCAAwC,CAAA,EACvD,EAAE,IACL,GAEOE,gDACT,mDAkBE,IAAMC,EAAeC,EAAKA,MAACC,WAAWC,iBAAiBH,aACvDH,EAAAA,cAAc,wCAAyC,CACrDG,aAAYA,GAEhB,mDAhBQA,EAAeC,EAAKA,MAACC,WAAWE,SAASJ,aACzCK,aAAoD,QAArCC,EAAAL,EAAAA,MAAMC,WAAWK,OAAOC,mBAAa,IAAAF,OAAA,EAAAA,EAAAG,8BAASC,MAAO,GAC1Eb,EAAAA,cAAc,+BAAgC,CAC5CG,aAAYA,EACZK,aAAYA,GAEhB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("react");var e=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js"),require("../store/index.js");var n={},t=null;function i(){0!==Object.keys(n).length?(e.eventDispatch("phone-island-parking-update",n),n={},t=null):t=null}exports.dispatchAlreadyLogin=function(){e.eventDispatch("phone-island-user-already-login",{})},exports.dispatchConversations=function(n,t){var i,s=((i={})[n.username]={conversations:null==n?void 0:n.conversations,status:null==n?void 0:n.status,sipuseragent:null==n?void 0:n.sipuseragent,username:null==n?void 0:n.username,port:null==n?void 0:n.port,dnd:null==n?void 0:n.dnd,number:null==n?void 0:n.exten,ip:null==n?void 0:n.ip,exten:null==n?void 0:n.exten,name:null==n?void 0:n.name,extensionType:t},i);e.eventDispatch("phone-island-conversations",s)},exports.dispatchCurrentUserQueueCallConnected=function(n){e.eventDispatch("phone-island-current-user-queue-call-connected",n)},exports.dispatchCurrentUserQueueCallWaiting=function(n){e.eventDispatch("phone-island-current-user-queue-call-waiting",n)},exports.dispatchDefaultDeviceUpdate=function(n){e.eventDispatch("phone-island-default-device-updated",{id:n})},exports.dispatchExtensions=function(n){var t,i=((t={})[n.username]={conversations:null==n?void 0:n.conversations,status:null==n?void 0:n.status,sipuseragent:null==n?void 0:n.sipuseragent,username:null==n?void 0:n.username,port:null==n?void 0:n.port,dnd:null==n?void 0:n.dnd,number:null==n?void 0:n.exten,ip:null==n?void 0:n.ip,exten:null==n?void 0:n.exten,name:null==n?void 0:n.name},t);e.eventDispatch("phone-island-extensions-update",i)},exports.dispatchMainPresence=function(n){var t,i=((t={})[n.mainPresence.username]={mainPresence:n.mainPresence.status},t);e.eventDispatch("phone-island-main-presence",i)},exports.dispatchParkingUpdate=function(s){(null==s?void 0:s.parking)?(n[s.parking]=s,t||(t=setTimeout(i,200))):e.eventDispatch("phone-island-parking-update",{})},exports.dispatchQueueMemberUpdate=function(n){var t,i=((t={})[n.member]=n,t);e.eventDispatch("phone-island-queue-member-update",i)},exports.dispatchQueueUpdate=function(n){var t,i=((t={})[n.queue]=n,t);e.eventDispatch("phone-island-queue-update",i)},exports.dispatchServerReload=function(){e.eventDispatch("phone-island-server-reloaded",{})},exports.dispatchUrlCall=function(n,t){var i={url:n,urlType:t};e.eventDispatch("phone-island-action-physical",{urlCallObject:i})},exports.dispatchVideoCallStarted=function(n){e.eventDispatch("phone-island-video-call-started",n)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("react");var e=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js"),require("../store/index.js"),require("../services/user.js");var n={},t=null;function i(){0!==Object.keys(n).length?(e.eventDispatch("phone-island-parking-update",n),n={},t=null):t=null}exports.dispatchAlreadyLogin=function(){e.eventDispatch("phone-island-user-already-login",{})},exports.dispatchConversations=function(n,t){var i,s=((i={})[n.username]={conversations:null==n?void 0:n.conversations,status:null==n?void 0:n.status,sipuseragent:null==n?void 0:n.sipuseragent,username:null==n?void 0:n.username,port:null==n?void 0:n.port,dnd:null==n?void 0:n.dnd,number:null==n?void 0:n.exten,ip:null==n?void 0:n.ip,exten:null==n?void 0:n.exten,name:null==n?void 0:n.name,extensionType:t},i);e.eventDispatch("phone-island-conversations",s)},exports.dispatchCurrentUserQueueCallConnected=function(n){e.eventDispatch("phone-island-current-user-queue-call-connected",n)},exports.dispatchCurrentUserQueueCallWaiting=function(n){e.eventDispatch("phone-island-current-user-queue-call-waiting",n)},exports.dispatchDefaultDeviceUpdate=function(n){e.eventDispatch("phone-island-default-device-updated",{id:n})},exports.dispatchExtensions=function(n){var t,i=((t={})[n.username]={conversations:null==n?void 0:n.conversations,status:null==n?void 0:n.status,sipuseragent:null==n?void 0:n.sipuseragent,username:null==n?void 0:n.username,port:null==n?void 0:n.port,dnd:null==n?void 0:n.dnd,number:null==n?void 0:n.exten,ip:null==n?void 0:n.ip,exten:null==n?void 0:n.exten,name:null==n?void 0:n.name},t);e.eventDispatch("phone-island-extensions-update",i)},exports.dispatchMainPresence=function(n){var t,i=((t={})[n.mainPresence.username]={mainPresence:n.mainPresence.status},t);e.eventDispatch("phone-island-main-presence",i)},exports.dispatchParkingUpdate=function(s){(null==s?void 0:s.parking)?(n[s.parking]=s,t||(t=setTimeout(i,200))):e.eventDispatch("phone-island-parking-update",{})},exports.dispatchQueueMemberUpdate=function(n){var t,i=((t={})[n.member]=n,t);e.eventDispatch("phone-island-queue-member-update",i)},exports.dispatchQueueUpdate=function(n){var t,i=((t={})[n.queue]=n,t);e.eventDispatch("phone-island-queue-update",i)},exports.dispatchServerReload=function(){e.eventDispatch("phone-island-server-reloaded",{})},exports.dispatchUrlCall=function(n,t){var i={url:n,urlType:t};e.eventDispatch("phone-island-action-physical",{urlCallObject:i})},exports.dispatchVideoCallStarted=function(n){e.eventDispatch("phone-island-video-call-started",n)};
|
|
2
2
|
//# sourceMappingURL=SocketEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketEvents.js","sources":["../../src/events/SocketEvents.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { eventDispatch } from '../utils'\nimport type {\n MainPresenceTypes,\n MainPresenceEventTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueuesEventType,\n QueueUpdateMemberTypes,\n QueuesMemberEventType,\n CurrentUserQueueCallEventTypes,\n ParkingUpdateTypes,\n ParkingUpdateEventTypes,\n} from '../types'\n\nexport interface VideoCallStartedEvent {\n initiator: 'local' | 'remote'\n callUser?: string\n destUser?: string\n}\n\nconst PARKING_UPDATE_DISPATCH_DELAY_MS = 200\nlet parkingUpdateBuffer: ParkingUpdateEventTypes = {}\nlet parkingUpdateDispatchTimer: ReturnType<typeof setTimeout> | null = null\n\nfunction flushParkingUpdates() {\n if (Object.keys(parkingUpdateBuffer).length === 0) {\n parkingUpdateDispatchTimer = null\n return\n }\n\n eventDispatch('phone-island-parking-update', parkingUpdateBuffer)\n parkingUpdateBuffer = {}\n parkingUpdateDispatchTimer = null\n}\n\n/**\n * The dispatch function for the userMainPresenceUpdate event\n *\n * @param event The userMainPresenceUpdate event from socket\n */\nexport function dispatchMainPresence(event: MainPresenceTypes) {\n const data: MainPresenceEventTypes = {\n [event.mainPresence.username]: {\n mainPresence: event.mainPresence.status,\n },\n }\n eventDispatch('phone-island-main-presence', data)\n}\n\n/**\n * The dispatch function for the extenUpdate event\n *\n * @param event The extenUpdate event from socket\n */\nexport function dispatchExtensions(event: ExtensionTypes) {\n const data: any = {\n [event.username]: {\n conversations: event?.conversations,\n status: event?.status,\n sipuseragent: event?.sipuseragent,\n username: event?.username,\n port: event?.port,\n dnd: event?.dnd,\n number: event?.exten,\n ip: event?.ip,\n exten: event?.exten,\n name: event?.name,\n },\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-extensions-update', data)\n}\n\n/**\n * The dispatch function for the extenUpdate event\n *\n * @param event The extenUpdate event from socket\n * @param extensionType The type of the extension (webrtc, mobile, nethlink, physical)\n */\nexport function dispatchConversations(event: ExtensionTypes, extensionType?: string) {\n const data: any = {\n [event.username]: {\n conversations: event?.conversations,\n status: event?.status,\n sipuseragent: event?.sipuseragent,\n username: event?.username,\n port: event?.port,\n dnd: event?.dnd,\n number: event?.exten,\n ip: event?.ip,\n exten: event?.exten,\n name: event?.name,\n extensionType: extensionType,\n },\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-conversations', data)\n}\n\n/**\n * The dispatch function for the queueUpdate event\n *\n * @param event The queueUpdate event from socket\n */\nexport function dispatchQueueUpdate(event: QueuesUpdateTypes) {\n const data: QueuesEventType = {\n [event.queue]: event,\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-queue-update', data)\n}\n\n/**\n * The dispatch function for the queueMemberUpdate event\n *\n * @param event The queueMemberUpdate event from socket\n */\nexport function dispatchQueueMemberUpdate(event: QueueUpdateMemberTypes) {\n const data: QueuesMemberEventType = {\n [event.member]: event,\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-queue-member-update', data)\n}\n\n/**\n * The dispatch function for the current user queue call waiting event\n *\n * @param event The current user queue call data\n */\nexport function dispatchCurrentUserQueueCallWaiting(event: CurrentUserQueueCallEventTypes) {\n eventDispatch('phone-island-current-user-queue-call-waiting', event)\n}\n\n/**\n * The dispatch function for the current user queue call connected event\n *\n * @param event The current user queue call data\n */\nexport function dispatchCurrentUserQueueCallConnected(event: CurrentUserQueueCallEventTypes) {\n eventDispatch('phone-island-current-user-queue-call-connected', event)\n}\n\n/**\n * The dispatch function for the takeOver event\n *\n * @param event The takeOver event from socket\n */\nexport function dispatchAlreadyLogin() {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-user-already-login', {})\n}\n\n/**\n * The dispatch function for server reload\n *\n * @param event The serverReload event from socket\n */\nexport function dispatchServerReload() {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-server-reloaded', {})\n}\n\n/**\n * The dispatch function for parking update\n *\n * @param event The parking update event from socket\n */\nexport function dispatchParkingUpdate(event: ParkingUpdateTypes) {\n // Batch rapid socket bursts into one browser event to avoid redundant refreshes\n if (!event?.parking) {\n eventDispatch('phone-island-parking-update', {})\n return\n }\n\n parkingUpdateBuffer[event.parking] = event\n\n if (!parkingUpdateDispatchTimer) {\n parkingUpdateDispatchTimer = setTimeout(\n flushParkingUpdates,\n PARKING_UPDATE_DISPATCH_DELAY_MS,\n )\n }\n}\n\n/**\n * The dispatch function for url physical call\n *\n * @param event The parking update event from socket\n */\nexport function dispatchUrlCall(url: string, urlType: string) {\n // Dispatch the event on window for external handlers\n let urlCallObject = {\n url: url,\n urlType: urlType,\n }\n eventDispatch('phone-island-action-physical', { urlCallObject })\n}\n\n/**\n * The dispatch function to update the default device\n *\n * @param extension The default_device_update event from socket\n */\nexport function dispatchDefaultDeviceUpdate(extension: string) {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-default-device-updated', { id: extension })\n}\n\n/**\n * The dispatch function for video call start notifications.\n *\n * @param event Video call start metadata\n */\nexport function dispatchVideoCallStarted(event: VideoCallStartedEvent) {\n eventDispatch('phone-island-video-call-started', event)\n}\n"],"names":["parkingUpdateBuffer","parkingUpdateDispatchTimer","flushParkingUpdates","Object","keys","length","eventDispatch","event","extensionType","data","_a","username","conversations","status","sipuseragent","port","dnd","number","exten","ip","name","extension","id","mainPresence","parking","setTimeout","member","queue","url","urlType","urlCallObject"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SocketEvents.js","sources":["../../src/events/SocketEvents.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { eventDispatch } from '../utils'\nimport type {\n MainPresenceTypes,\n MainPresenceEventTypes,\n ExtensionTypes,\n QueuesUpdateTypes,\n QueuesEventType,\n QueueUpdateMemberTypes,\n QueuesMemberEventType,\n CurrentUserQueueCallEventTypes,\n ParkingUpdateTypes,\n ParkingUpdateEventTypes,\n} from '../types'\n\nexport interface VideoCallStartedEvent {\n initiator: 'local' | 'remote'\n callUser?: string\n destUser?: string\n}\n\nconst PARKING_UPDATE_DISPATCH_DELAY_MS = 200\nlet parkingUpdateBuffer: ParkingUpdateEventTypes = {}\nlet parkingUpdateDispatchTimer: ReturnType<typeof setTimeout> | null = null\n\nfunction flushParkingUpdates() {\n if (Object.keys(parkingUpdateBuffer).length === 0) {\n parkingUpdateDispatchTimer = null\n return\n }\n\n eventDispatch('phone-island-parking-update', parkingUpdateBuffer)\n parkingUpdateBuffer = {}\n parkingUpdateDispatchTimer = null\n}\n\n/**\n * The dispatch function for the userMainPresenceUpdate event\n *\n * @param event The userMainPresenceUpdate event from socket\n */\nexport function dispatchMainPresence(event: MainPresenceTypes) {\n const data: MainPresenceEventTypes = {\n [event.mainPresence.username]: {\n mainPresence: event.mainPresence.status,\n },\n }\n eventDispatch('phone-island-main-presence', data)\n}\n\n/**\n * The dispatch function for the extenUpdate event\n *\n * @param event The extenUpdate event from socket\n */\nexport function dispatchExtensions(event: ExtensionTypes) {\n const data: any = {\n [event.username]: {\n conversations: event?.conversations,\n status: event?.status,\n sipuseragent: event?.sipuseragent,\n username: event?.username,\n port: event?.port,\n dnd: event?.dnd,\n number: event?.exten,\n ip: event?.ip,\n exten: event?.exten,\n name: event?.name,\n },\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-extensions-update', data)\n}\n\n/**\n * The dispatch function for the extenUpdate event\n *\n * @param event The extenUpdate event from socket\n * @param extensionType The type of the extension (webrtc, mobile, nethlink, physical)\n */\nexport function dispatchConversations(event: ExtensionTypes, extensionType?: string) {\n const data: any = {\n [event.username]: {\n conversations: event?.conversations,\n status: event?.status,\n sipuseragent: event?.sipuseragent,\n username: event?.username,\n port: event?.port,\n dnd: event?.dnd,\n number: event?.exten,\n ip: event?.ip,\n exten: event?.exten,\n name: event?.name,\n extensionType: extensionType,\n },\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-conversations', data)\n}\n\n/**\n * The dispatch function for the queueUpdate event\n *\n * @param event The queueUpdate event from socket\n */\nexport function dispatchQueueUpdate(event: QueuesUpdateTypes) {\n const data: QueuesEventType = {\n [event.queue]: event,\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-queue-update', data)\n}\n\n/**\n * The dispatch function for the queueMemberUpdate event\n *\n * @param event The queueMemberUpdate event from socket\n */\nexport function dispatchQueueMemberUpdate(event: QueueUpdateMemberTypes) {\n const data: QueuesMemberEventType = {\n [event.member]: event,\n }\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-queue-member-update', data)\n}\n\n/**\n * The dispatch function for the current user queue call waiting event\n *\n * @param event The current user queue call data\n */\nexport function dispatchCurrentUserQueueCallWaiting(event: CurrentUserQueueCallEventTypes) {\n eventDispatch('phone-island-current-user-queue-call-waiting', event)\n}\n\n/**\n * The dispatch function for the current user queue call connected event\n *\n * @param event The current user queue call data\n */\nexport function dispatchCurrentUserQueueCallConnected(event: CurrentUserQueueCallEventTypes) {\n eventDispatch('phone-island-current-user-queue-call-connected', event)\n}\n\n/**\n * The dispatch function for the takeOver event\n *\n * @param event The takeOver event from socket\n */\nexport function dispatchAlreadyLogin() {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-user-already-login', {})\n}\n\n/**\n * The dispatch function for server reload\n *\n * @param event The serverReload event from socket\n */\nexport function dispatchServerReload() {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-server-reloaded', {})\n}\n\n/**\n * The dispatch function for parking update\n *\n * @param event The parking update event from socket\n */\nexport function dispatchParkingUpdate(event: ParkingUpdateTypes) {\n // Batch rapid socket bursts into one browser event to avoid redundant refreshes\n if (!event?.parking) {\n eventDispatch('phone-island-parking-update', {})\n return\n }\n\n parkingUpdateBuffer[event.parking] = event\n\n if (!parkingUpdateDispatchTimer) {\n parkingUpdateDispatchTimer = setTimeout(\n flushParkingUpdates,\n PARKING_UPDATE_DISPATCH_DELAY_MS,\n )\n }\n}\n\n/**\n * The dispatch function for url physical call\n *\n * @param event The parking update event from socket\n */\nexport function dispatchUrlCall(url: string, urlType: string) {\n // Dispatch the event on window for external handlers\n let urlCallObject = {\n url: url,\n urlType: urlType,\n }\n eventDispatch('phone-island-action-physical', { urlCallObject })\n}\n\n/**\n * The dispatch function to update the default device\n *\n * @param extension The default_device_update event from socket\n */\nexport function dispatchDefaultDeviceUpdate(extension: string) {\n // Dispatch the event on window for external handlers\n eventDispatch('phone-island-default-device-updated', { id: extension })\n}\n\n/**\n * The dispatch function for video call start notifications.\n *\n * @param event Video call start metadata\n */\nexport function dispatchVideoCallStarted(event: VideoCallStartedEvent) {\n eventDispatch('phone-island-video-call-started', event)\n}\n"],"names":["parkingUpdateBuffer","parkingUpdateDispatchTimer","flushParkingUpdates","Object","keys","length","eventDispatch","event","extensionType","data","_a","username","conversations","status","sipuseragent","port","dnd","number","exten","ip","name","extension","id","mainPresence","parking","setTimeout","member","queue","url","urlType","urlCallObject"],"mappings":"2PAuBA,IACIA,EAA+C,CAAA,EAC/CC,EAAmE,KAEvE,SAASC,IACyC,IAA5CC,OAAOC,KAAKJ,GAAqBK,QAKrCC,gBAAc,8BAA+BN,GAC7CA,EAAsB,CAAA,EACtBC,EAA6B,MAN3BA,EAA6B,IAOjC,yCAqHEK,gBAAc,kCAAmC,CAAA,EACnD,gCAxEgB,SAAsBC,EAAuBC,SACrDC,IAAIC,EAAA,CAAA,GACPH,EAAMI,UAAW,CAChBC,cAAeL,aAAA,EAAAA,EAAOK,cACtBC,OAAQN,aAAA,EAAAA,EAAOM,OACfC,aAAcP,aAAA,EAAAA,EAAOO,aACrBH,SAAUJ,aAAA,EAAAA,EAAOI,SACjBI,KAAMR,aAAA,EAAAA,EAAOQ,KACbC,IAAKT,aAAA,EAAAA,EAAOS,IACZC,OAAQV,aAAA,EAAAA,EAAOW,MACfC,GAAIZ,aAAA,EAAAA,EAAOY,GACXD,MAAOX,aAAA,EAAAA,EAAOW,MACdE,KAAMb,aAAA,EAAAA,EAAOa,KACbZ,cAAeA,MAInBF,gBAAc,6BAA8BG,EAC9C,gDA0CM,SAAgDF,GACpDD,gBAAc,iDAAkDC,EAClE,8CAXM,SAA8CA,GAClDD,gBAAc,+CAAgDC,EAChE,sCAwEM,SAAsCc,GAE1Cf,EAAAA,cAAc,sCAAuC,CAAEgB,GAAID,GAC7D,6BAzJM,SAA6Bd,SAC3BE,IAAIC,EAAA,CAAA,GACPH,EAAMI,UAAW,CAChBC,cAAeL,aAAA,EAAAA,EAAOK,cACtBC,OAAQN,aAAA,EAAAA,EAAOM,OACfC,aAAcP,aAAA,EAAAA,EAAOO,aACrBH,SAAUJ,aAAA,EAAAA,EAAOI,SACjBI,KAAMR,aAAA,EAAAA,EAAOQ,KACbC,IAAKT,aAAA,EAAAA,EAAOS,IACZC,OAAQV,aAAA,EAAAA,EAAOW,MACfC,GAAIZ,aAAA,EAAAA,EAAOY,GACXD,MAAOX,aAAA,EAAAA,EAAOW,MACdE,KAAMb,aAAA,EAAAA,EAAOa,SAIjBd,gBAAc,iCAAkCG,EAClD,+BA/BM,SAA+BF,SAC7BE,IAAIC,EAAA,CAAA,GACPH,EAAMgB,aAAaZ,UAAW,CAC7BY,aAAchB,EAAMgB,aAAaV,WAGrCP,gBAAc,6BAA8BG,EAC9C,gCAyHM,SAAgCF,IAE/BA,aAAA,EAAAA,EAAOiB,UAKZxB,EAAoBO,EAAMiB,SAAWjB,EAEhCN,IACHA,EAA6BwB,WAC3BvB,EA/JmC,OAuJrCI,gBAAc,8BAA+B,CAAA,EAYjD,oCAlEM,SAAoCC,SAClCE,IAAIC,EAAA,CAAA,GACPH,EAAMmB,QAASnB,KAGlBD,gBAAc,mCAAoCG,EACpD,8BAnBM,SAA8BF,SAC5BE,IAAIC,EAAA,CAAA,GACPH,EAAMoB,OAAQpB,KAGjBD,gBAAc,4BAA6BG,EAC7C,0CAkDEH,gBAAc,+BAAgC,CAAA,EAChD,0BA6BgB,SAAgBsB,EAAaC,GAE3C,IAAIC,EAAgB,CAClBF,IAAKA,EACLC,QAASA,GAEXvB,EAAAA,cAAc,+BAAgC,CAAEwB,cAAaA,GAC/D,mCAiBM,SAAmCvB,GACvCD,gBAAc,kCAAmCC,EACnD"}
|
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-invisible{visibility:hidden}.pi-absolute{position:absolute}.pi-relative{position:relative}.pi-inset-0{inset:0}.-pi-top-0\.5{top:-.125rem}.pi--right-6{right:-1.5rem}.pi-bottom-0{bottom:0}.pi-bottom-14{bottom:3.5rem}.pi-bottom-4{bottom:1rem}.pi-left-0{left:0}.pi-right-0{right:0}.pi-right-5{right:1.25rem}.pi-right-\[1\.5rem\]{right:1.5rem}.pi-right-\[4\.5rem\]{right:4.5rem}.pi-top-0{top:0}.pi-top-16{top:4rem}.pi-top-32{top:8rem}.pi-top-5{top:1.25rem}.pi-top-\[13rem\]{top:13rem}.pi-top-\[17rem\]{top:17rem}.-pi-z-10{z-index:-10}.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-1{grid-column-start:1}.pi-col-start-auto{grid-column-start:auto}.pi-row-start-1{grid-row-start:1}.pi--m-1{margin:-.25rem}.pi-mx-2{margin-left:.5rem;margin-right:.5rem}.-pi-mr-10{margin-right:-2.5rem}.-pi-mt-10{margin-top:-2.5rem}.pi--mt-1{margin-top:-.25rem}.pi-mb-1{margin-bottom:.25rem}.pi-mb-2{margin-bottom:.5rem}.pi-mb-3{margin-bottom:.75rem}.pi-mb-4{margin-bottom:1rem}.pi-mb-5{margin-bottom:1.25rem}.pi-mb-6{margin-bottom:1.5rem}.pi-ml-1{margin-left:.25rem}.pi-ml-16{margin-left:4rem}.pi-ml-2{margin-left:.5rem}.pi-ml-3{margin-left:.75rem}.pi-ml-4{margin-left:1rem}.pi-ml-5{margin-left:1.25rem}.pi-ml-6{margin-left:1.5rem}.pi-ml-9{margin-left:2.25rem}.pi-ml-\[1\.49rem\]{margin-left:1.49rem}.pi-ml-\[1\.4rem\]{margin-left:1.4rem}.pi-mr-1{margin-right:.25rem}.pi-mr-2{margin-right:.5rem}.pi-mr-3{margin-right:.75rem}.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-12{margin-top:3rem}.pi-mt-2{margin-top:.5rem}.pi-mt-4{margin-top:1rem}.pi-mt-6{margin-top:1.5rem}.pi-mt-7{margin-top:1.75rem}.pi-mt-8{margin-top:2rem}.pi-mt-\[-12\.5rem\]{margin-top:-12.5rem}.pi-mt-\[-8\.5rem\]{margin-top:-8.5rem}.pi-mt-auto{margin-top:auto}.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-14{height:3.5rem}.pi-h-20{height:5rem}.pi-h-24{height:6rem}.pi-h-3{height:.75rem}.pi-h-3\.5{height:.875rem}.pi-h-32{height:8rem}.pi-h-4{height:1rem}.pi-h-40{height:10rem}.pi-h-5{height:1.25rem}.pi-h-6{height:1.5rem}.pi-h-60{height:15rem}.pi-h-8{height:2rem}.pi-h-\[10\.5rem\]{height:10.5rem}.pi-h-\[380px\]{height:380px}.pi-h-\[480px\]{height:480px}.pi-h-\[500px\]{height:500px}.pi-h-\[524px\]{height:524px}.pi-h-\[624px\]{height:624px}.pi-h-\[648px\]{height:648px}.pi-h-\[748px\]{height:748px}.pi-h-fit{height:fit-content}.pi-h-full{height:100%}.pi-h-screen{height:100vh}.pi-max-h-32{max-height:8rem}.pi-max-h-48{max-height:12rem}.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-1{width:.25rem}.pi-w-1\/2{width:50%}.pi-w-10{width:2.5rem}.pi-w-12{width:3rem}.pi-w-14{width:3.5rem}.pi-w-16{width:4rem}.pi-w-2\/5{width:40%}.pi-w-24{width:6rem}.pi-w-3{width:.75rem}.pi-w-3\.5{width:.875rem}.pi-w-32{width:8rem}.pi-w-4{width:1rem}.pi-w-4\/5{width:80%}.pi-w-44{width:11rem}.pi-w-5{width:1.25rem}.pi-w-52{width:13rem}.pi-w-56{width:14rem}.pi-w-6{width:1.5rem}.pi-w-64{width:16rem}.pi-w-8{width:2rem}.pi-w-\[110rem\]{width:110rem}.pi-w-\[28\.2rem\]{width:28.2rem}.pi-w-\[600px\]{width:600px}.pi-w-\[780px\]{width:780px}.pi-w-\[936px\]{width:936px}.pi-w-fit{width:fit-content}.pi-w-full{width:100%}.pi-min-w-0{min-width:0}.pi-min-w-12{min-width:3rem}.pi-min-w-full{min-width:100%}.pi-max-w-16{max-width:4rem}.pi-max-w-28{max-width:7rem}.pi-max-w-32{max-width:8rem}.pi-max-w-48{max-width:12rem}.pi-max-w-56{max-width:14rem}.pi-max-w-60{max-width:15rem}.pi-max-w-\[45\%\]{max-width:45%}.pi-max-w-full{max-width:100%}.pi-max-w-xs{max-width:20rem}.pi-flex-1{flex:1 1 0%}.pi-flex-none{flex:none}.pi-flex-shrink-0,.pi-shrink-0{flex-shrink:0}.pi-flex-grow{flex-grow:1}.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--translate-y-1\/2,.pi-rotate-135{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-135{--tw-rotate:135deg}.pi-rotate-45{--tw-rotate:45deg}.pi-rotate-45,.pi-rotate-90{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-90{--tw-rotate:90deg}.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{transform:scale(2);opacity:0}}.pi-animate-ping{animation:pi-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pi-pulse{50%{opacity:.5}}.pi-animate-pulse{animation:pi-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.pi-cursor-auto{cursor:auto}.pi-cursor-grab{cursor:grab}.pi-cursor-not-allowed{cursor:not-allowed}.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-grid-cols-\[1fr_84px\]{grid-template-columns:1fr 84px}.pi-grid-cols-\[24px_102px\]{grid-template-columns:24px 102px}.pi-grid-cols-\[24px_66px_24px\]{grid-template-columns:24px 66px 24px}.pi-grid-cols-\[256px_114px\]{grid-template-columns:256px 114px}.pi-grid-cols-\[48px_164px_48px\]{grid-template-columns:48px 164px 48px}.pi-grid-cols-\[48px_1fr\]{grid-template-columns:48px 1fr}.pi-grid-cols-\[48px_1fr_1px\]{grid-template-columns:48px 1fr 1px}.pi-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.pi-grid-rows-\[20px_24px\]{grid-template-rows:20px 24px}.pi-grid-rows-\[20px_24px_24px\]{grid-template-rows:20px 24px 24px}.pi-grid-rows-\[72px_1fr\]{grid-template-rows:72px 1fr}.pi-flex-col{flex-direction:column}.pi-flex-wrap{flex-wrap:wrap}.pi-place-items-center{place-items:center}.pi-content-center{align-content:center}.pi-items-start{align-items:flex-start}.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-0{gap:0}.pi-gap-0\.5{gap:.125rem}.pi-gap-1{gap:.25rem}.pi-gap-1\.5{gap:.375rem}.pi-gap-2{gap:.5rem}.pi-gap-3{gap:.75rem}.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-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.25rem*var(--tw-space-x-reverse));margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.pi-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.pi-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.pi-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.pi-self-start{align-self:flex-start}.pi-self-center{align-self:center}.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{border-radius:.25rem}.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-rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.pi-rounded-bl-\[20px\]{border-bottom-left-radius:20px}.pi-rounded-br-\[20px\]{border-bottom-right-radius:20px}.pi-rounded-tl-\[20px\]{border-top-left-radius:20px}.pi-rounded-tr-\[20px\]{border-top-right-radius:20px}.pi-border{border-width:1px}.pi-border-2{border-width:2px}.pi-border-4{border-width:4px}.pi-border-b{border-bottom-width:1px}.pi-border-t{border-top-width:1px}.pi-border-solid{border-style:solid}.pi-border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.pi-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.pi-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.pi-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.pi-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.pi-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.pi-border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity,1))}.pi-border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity,1))}.pi-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.pi-border-transparent{border-color:#0000}.pi-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.pi-bg-black\/30{background-color:#0000004d}.pi-bg-elevationL2{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.pi-bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.pi-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.pi-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.pi-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.pi-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.pi-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.pi-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.pi-bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.pi-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.pi-bg-gray-950\/65{background-color:#030712a6}.pi-bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}.pi-bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.pi-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.pi-bg-iconSecondary{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.pi-bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandActive{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandCall{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandClose{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.pi-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.pi-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.pi-bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity,1))}.pi-bg-secondaryNeutral{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-surfaceBackground{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.pi-bg-surfaceSidebar{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-transparent{background-color:initial}.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-700{--tw-gradient-to:#374151 var(--tw-gradient-to-position)}.pi-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.pi-bg-cover{background-size:cover}.pi-fill-white{fill:#fff}.pi-object-cover{object-fit:cover}.pi-p-0{padding:0}.pi-p-1{padding:.25rem}.pi-p-2{padding:.5rem}.pi-p-3{padding:.75rem}.pi-p-4{padding:1rem}.pi-p-6{padding:1.5rem}.pi-p-8{padding:2rem}.pi-px-0\.5{padding-left:.125rem;padding-right:.125rem}.pi-px-2{padding-left:.5rem;padding-right:.5rem}.pi-px-2\.5{padding-left:.625rem;padding-right:.625rem}.pi-px-3{padding-left:.75rem;padding-right:.75rem}.pi-px-4{padding-left:1rem;padding-right:1rem}.pi-px-5{padding-left:1.25rem;padding-right:1.25rem}.pi-px-6{padding-left:1.5rem;padding-right:1.5rem}.pi-py-1{padding-top:.25rem;padding-bottom:.25rem}.pi-py-2{padding-top:.5rem;padding-bottom:.5rem}.pi-py-3{padding-top:.75rem;padding-bottom:.75rem}.pi-py-4{padding-top:1rem;padding-bottom:1rem}.pi-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pi-pb-2{padding-bottom:.5rem}.pi-pb-3{padding-bottom:.75rem}.pi-pb-4{padding-bottom:1rem}.pi-pb-7{padding-bottom:1.75rem}.pi-pb-9{padding-bottom:2.25rem}.pi-pr-2{padding-right:.5rem}.pi-pr-4{padding-right:1rem}.pi-pr-6{padding-right:1.5rem}.pi-pt-1{padding-top:.25rem}.pi-pt-2{padding-top:.5rem}.pi-pt-3{padding-top:.75rem}.pi-pt-4{padding-top:1rem}.pi-text-center{text-align:center}.pi-font-\[inherit\]{font-family:inherit}.pi-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.pi-text-2xl{font-size:1.5rem;line-height:2rem}.pi-text-3xl{font-size:1.875rem;line-height:2.25rem}.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-italic{font-style:italic}.pi-leading-4{line-height:1rem}.pi-leading-5{line-height:1.25rem}.pi-leading-6{line-height:1.5rem}.pi-leading-7{line-height:1.75rem}.pi-leading-none{line-height:1}.pi-tracking-wide{letter-spacing:.025em}.pi-text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity,1))}.pi-text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.pi-text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.pi-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.pi-text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.pi-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.pi-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.pi-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.pi-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.pi-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity,1))}.pi-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.pi-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.pi-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.pi-text-iconPrimaryNeutral{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-iconSecondary{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity,1))}.pi-text-iconWhite{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.pi-text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity,1))}.pi-text-inherit{color:inherit}.pi-text-primaryInvert{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.pi-text-primaryNeutral{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.pi-text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity,1))}.pi-text-secondaryNeutral{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.pi-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.pi-placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.pi-opacity-0{opacity:0}.pi-opacity-100{opacity:1}.pi-opacity-50{opacity:.5}.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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.pi-ring-1,.pi-ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.pi-ring-2{--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)}.pi-ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity,1))}.pi-ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity,1))}.pi-ring-opacity-5{--tw-ring-opacity:0.05}.pi-backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.pi-transition{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);transition-duration:.15s}.pi-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-duration-200{transition-duration:.2s}.pi-duration-300{transition-duration:.3s}.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-width:thin;scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial)}}.pi-scrollbar-thin::-webkit-scrollbar{display:block;width:8px;height: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-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-200\/70:hover{background-color:#e5e7ebb3}.hover\:pi-bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\:pi-bg-phoneIslandCallHover:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity,1))}.hover\:pi-bg-phoneIslandCloseHover:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity,1))}.hover\:pi-text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.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,1))}.focus\:pi-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.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,1))}.focus\:pi-ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity,1))}.focus\:pi-ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\:pi-ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity,1))}.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}.focus-visible\:pi-ring-2:focus-visible{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:pi-ring-emerald-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity,1))}.active\:pi-border-emerald-500:active{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.enabled\:hover\:pi-border-gray-500:hover:enabled{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.enabled\:hover\:pi-bg-gray-200\/70:hover:enabled{background-color:#e5e7ebb3}.enabled\:hover\:pi-bg-gray-300\/70:hover:enabled{background-color:#d1d5dbb3}.enabled\:hover\:pi-bg-gray-500:hover:enabled{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.enabled\:hover\:pi-bg-gray-600:hover:enabled{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.disabled\:pi-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:pi-opacity-40:disabled{opacity:.4}.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,1))}.dark\:pi-border-gray-600:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:pi-border-gray-700:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:pi-border-gray-800:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.dark\:pi-bg-elevationL2Dark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-emerald-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.dark\:pi-bg-emerald-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-200:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-300:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-50:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-800:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-950:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.dark\:pi-bg-green-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\:pi-bg-iconSecondaryDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.dark\:pi-bg-indigo-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandActiveDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandCallDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandCloseDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dark\:pi-bg-rose-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-secondaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.dark\:pi-bg-surfaceBackgroundDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.dark\:pi-bg-surfaceSidebarDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.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-emerald-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.dark\:pi-text-emerald-700:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.dark\:pi-text-gray-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:pi-text-gray-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:pi-text-gray-300:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:pi-text-gray-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:pi-text-gray-50:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-gray-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:pi-text-gray-600:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.dark\:pi-text-gray-900:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.dark\:pi-text-gray-950:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity,1))}.dark\:pi-text-green-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.dark\:pi-text-green-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:pi-text-green-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.dark\:pi-text-iconPrimaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-iconWhiteDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-300:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.dark\:pi-text-primaryInvertDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.dark\:pi-text-primaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-rose-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.dark\:pi-text-secondaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:pi-text-white:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:pi-placeholder-gray-500:where(.pi-dark,.pi-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}.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,1))}.dark\:hover\:pi-bg-gray-600:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.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,1))}.dark\:hover\:pi-bg-gray-700\/70:hover:where(.pi-dark,.pi-dark *){background-color:#374151b3}.dark\:hover\:pi-bg-phoneIslandCallHoverDark:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.dark\:hover\:pi-bg-phoneIslandCloseHoverDark:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.hover\:dark\:pi-bg-gray-800:where(.pi-dark,.pi-dark *):hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.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,1))}.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,1))}.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,1))}.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,1))}.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,1))}.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,1))}.dark\:enabled\:hover\:pi-bg-gray-600:hover:enabled:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:enabled\:hover\:pi-bg-gray-600\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#4b55634d}.dark\:enabled\:hover\:pi-bg-gray-700\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#3741514d}.\[\&_\.react-tooltip-content-wrapper\]\:pi-p-0 .react-tooltip-content-wrapper{padding:0}
|
|
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-invisible{visibility:hidden}.pi-absolute{position:absolute}.pi-relative{position:relative}.pi-inset-0{inset:0}.-pi-top-0\.5{top:-.125rem}.pi--right-6{right:-1.5rem}.pi-bottom-0{bottom:0}.pi-bottom-14{bottom:3.5rem}.pi-bottom-24{bottom:6rem}.pi-bottom-3{bottom:.75rem}.pi-bottom-4{bottom:1rem}.pi-bottom-full{bottom:100%}.pi-left-0{left:0}.pi-left-1\/2{left:50%}.pi-right-0{right:0}.pi-right-5{right:1.25rem}.pi-right-\[1\.5rem\]{right:1.5rem}.pi-right-\[4\.5rem\]{right:4.5rem}.pi-top-0{top:0}.pi-top-16{top:4rem}.pi-top-32{top:8rem}.pi-top-5{top:1.25rem}.pi-top-\[13rem\]{top:13rem}.pi-top-\[17rem\]{top:17rem}.pi-top-full{top:100%}.-pi-z-10{z-index:-10}.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-1{grid-column-start:1}.pi-col-start-auto{grid-column-start:auto}.pi-row-start-1{grid-row-start:1}.pi--m-1{margin:-.25rem}.pi-mx-2{margin-left:.5rem;margin-right:.5rem}.-pi-mr-10{margin-right:-2.5rem}.-pi-mt-10{margin-top:-2.5rem}.pi--mt-1{margin-top:-.25rem}.pi-mb-1{margin-bottom:.25rem}.pi-mb-2{margin-bottom:.5rem}.pi-mb-3{margin-bottom:.75rem}.pi-mb-4{margin-bottom:1rem}.pi-mb-5{margin-bottom:1.25rem}.pi-mb-6{margin-bottom:1.5rem}.pi-ml-1{margin-left:.25rem}.pi-ml-16{margin-left:4rem}.pi-ml-2{margin-left:.5rem}.pi-ml-3{margin-left:.75rem}.pi-ml-4{margin-left:1rem}.pi-ml-5{margin-left:1.25rem}.pi-ml-6{margin-left:1.5rem}.pi-ml-9{margin-left:2.25rem}.pi-ml-\[1\.49rem\]{margin-left:1.49rem}.pi-ml-\[1\.4rem\]{margin-left:1.4rem}.pi-ml-auto{margin-left:auto}.pi-mr-1{margin-right:.25rem}.pi-mr-2{margin-right:.5rem}.pi-mr-3{margin-right:.75rem}.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-12{margin-top:3rem}.pi-mt-2{margin-top:.5rem}.pi-mt-3{margin-top:.75rem}.pi-mt-4{margin-top:1rem}.pi-mt-6{margin-top:1.5rem}.pi-mt-7{margin-top:1.75rem}.pi-mt-8{margin-top:2rem}.pi-mt-\[-12\.5rem\]{margin-top:-12.5rem}.pi-mt-\[-8\.5rem\]{margin-top:-8.5rem}.pi-mt-auto{margin-top:auto}.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-10{height:2.5rem!important}.pi-h-1{height:.25rem}.pi-h-10{height:2.5rem}.pi-h-12{height:3rem}.pi-h-14{height:3.5rem}.pi-h-20{height:5rem}.pi-h-24{height:6rem}.pi-h-3{height:.75rem}.pi-h-3\.5{height:.875rem}.pi-h-32{height:8rem}.pi-h-4{height:1rem}.pi-h-40{height:10rem}.pi-h-5{height:1.25rem}.pi-h-6{height:1.5rem}.pi-h-60{height:15rem}.pi-h-8{height:2rem}.pi-h-\[480px\]{height:480px}.pi-h-\[500px\]{height:500px}.pi-h-\[524px\]{height:524px}.pi-h-\[624px\]{height:624px}.pi-h-fit{height:fit-content}.pi-h-full{height:100%}.pi-h-screen{height:100vh}.pi-max-h-32{max-height:8rem}.pi-max-h-48{max-height:12rem}.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-10{width:2.5rem!important}.pi-w-0\.5{width:.125rem}.pi-w-1{width:.25rem}.pi-w-1\/2{width:50%}.pi-w-10{width:2.5rem}.pi-w-12{width:3rem}.pi-w-14{width:3.5rem}.pi-w-16{width:4rem}.pi-w-2\/5{width:40%}.pi-w-24{width:6rem}.pi-w-3{width:.75rem}.pi-w-3\.5{width:.875rem}.pi-w-32{width:8rem}.pi-w-4{width:1rem}.pi-w-4\/5{width:80%}.pi-w-44{width:11rem}.pi-w-5{width:1.25rem}.pi-w-52{width:13rem}.pi-w-56{width:14rem}.pi-w-6{width:1.5rem}.pi-w-64{width:16rem}.pi-w-8{width:2rem}.pi-w-\[600px\]{width:600px}.pi-w-\[780px\]{width:780px}.pi-w-fit{width:fit-content}.pi-w-full{width:100%}.pi-min-w-0{min-width:0}.pi-min-w-12{min-width:3rem}.pi-min-w-full{min-width:100%}.pi-max-w-16{max-width:4rem}.pi-max-w-28{max-width:7rem}.pi-max-w-32{max-width:8rem}.pi-max-w-48{max-width:12rem}.pi-max-w-56{max-width:14rem}.pi-max-w-60{max-width:15rem}.pi-max-w-\[16rem\]{max-width:16rem}.pi-max-w-\[18rem\]{max-width:18rem}.pi-max-w-\[45\%\]{max-width:45%}.pi-max-w-\[9rem\]{max-width:9rem}.pi-max-w-full{max-width:100%}.pi-max-w-xs{max-width:20rem}.pi-flex-1{flex:1 1 0%}.pi-flex-none{flex:none}.pi-flex-shrink-0,.pi-shrink-0{flex-shrink:0}.pi-flex-grow{flex-grow:1}.pi-flex-grow-0{flex-grow:0}.pi-origin-top-right{transform-origin:top right}.-pi-translate-x-1\/2{--tw-translate-x:-50%}.-pi-translate-x-1\/2,.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--translate-y-1\/2{--tw-translate-y:-50%}.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-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{transform:scale(2);opacity:0}}.pi-animate-ping{animation:pi-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pi-pulse{50%{opacity:.5}}.pi-animate-pulse{animation:pi-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pi-spin{to{transform:rotate(1turn)}}.pi-animate-spin{animation:pi-spin 1s linear infinite}.\!pi-cursor-not-allowed{cursor:not-allowed!important}.pi-cursor-auto{cursor:auto}.pi-cursor-grab{cursor:grab}.pi-cursor-not-allowed{cursor:not-allowed}.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-grid-cols-\[1fr_84px\]{grid-template-columns:1fr 84px}.pi-grid-cols-\[24px_102px\]{grid-template-columns:24px 102px}.pi-grid-cols-\[24px_66px_24px\]{grid-template-columns:24px 66px 24px}.pi-grid-cols-\[256px_114px\]{grid-template-columns:256px 114px}.pi-grid-cols-\[48px_164px_48px\]{grid-template-columns:48px 164px 48px}.pi-grid-cols-\[48px_1fr\]{grid-template-columns:48px 1fr}.pi-grid-cols-\[48px_1fr_1px\]{grid-template-columns:48px 1fr 1px}.pi-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.pi-grid-rows-\[20px_24px\]{grid-template-rows:20px 24px}.pi-grid-rows-\[20px_24px_24px\]{grid-template-rows:20px 24px 24px}.pi-grid-rows-\[72px_1fr\]{grid-template-rows:72px 1fr}.pi-flex-col{flex-direction:column}.pi-flex-wrap{flex-wrap:wrap}.pi-place-items-center{place-items:center}.pi-content-center{align-content:center}.pi-items-start{align-items:flex-start}.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-0{gap:0}.pi-gap-0\.5{gap:.125rem}.pi-gap-1{gap:.25rem}.pi-gap-1\.5{gap:.375rem}.pi-gap-2{gap:.5rem}.pi-gap-3{gap:.75rem}.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-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.25rem*var(--tw-space-x-reverse));margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.pi-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.pi-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.pi-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.pi-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.pi-self-start{align-self:flex-start}.pi-self-center{align-self:center}.pi-overflow-hidden{overflow:hidden}.pi-overflow-x-auto{overflow-x:auto}.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{border-radius:.25rem}.pi-rounded-2xl{border-radius:1rem}.pi-rounded-3xl{border-radius:1.5rem}.pi-rounded-\[20px\]{border-radius:20px}.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-rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.pi-rounded-bl-\[20px\]{border-bottom-left-radius:20px}.pi-rounded-br-\[20px\]{border-bottom-right-radius:20px}.pi-rounded-tl-\[20px\]{border-top-left-radius:20px}.pi-rounded-tr-\[20px\]{border-top-right-radius:20px}.pi-border{border-width:1px}.pi-border-2{border-width:2px}.pi-border-4{border-width:4px}.pi-border-b{border-bottom-width:1px}.pi-border-t{border-top-width:1px}.pi-border-solid{border-style:solid}.pi-border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.pi-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.pi-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.pi-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.pi-border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.pi-border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.pi-border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity,1))}.pi-border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity,1))}.pi-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.pi-border-transparent{border-color:#0000}.pi-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.pi-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.pi-bg-black\/30{background-color:#0000004d}.pi-bg-black\/60{background-color:#0009}.pi-bg-elevationL2{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.pi-bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.pi-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.pi-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.pi-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.pi-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.pi-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.pi-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.pi-bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.pi-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.pi-bg-gray-950\/65{background-color:#030712a6}.pi-bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}.pi-bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.pi-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.pi-bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.pi-bg-iconSecondary{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.pi-bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandActive{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandCall{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.pi-bg-phoneIslandClose{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.pi-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.pi-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.pi-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.pi-bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity,1))}.pi-bg-secondaryNeutral{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-surfaceBackground{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.pi-bg-surfaceSidebar{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.pi-bg-transparent{background-color:initial}.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-700{--tw-gradient-to:#374151 var(--tw-gradient-to-position)}.pi-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.pi-bg-cover{background-size:cover}.pi-fill-white{fill:#fff}.pi-object-contain{object-fit:contain}.pi-p-0{padding:0}.pi-p-1{padding:.25rem}.pi-p-2{padding:.5rem}.pi-p-3{padding:.75rem}.pi-p-4{padding:1rem}.pi-p-6{padding:1.5rem}.pi-p-8{padding:2rem}.pi-px-0\.5{padding-left:.125rem;padding-right:.125rem}.pi-px-2{padding-left:.5rem;padding-right:.5rem}.pi-px-2\.5{padding-left:.625rem;padding-right:.625rem}.pi-px-3{padding-left:.75rem;padding-right:.75rem}.pi-px-4{padding-left:1rem;padding-right:1rem}.pi-px-5{padding-left:1.25rem;padding-right:1.25rem}.pi-px-6{padding-left:1.5rem;padding-right:1.5rem}.pi-py-1{padding-top:.25rem;padding-bottom:.25rem}.pi-py-2{padding-top:.5rem;padding-bottom:.5rem}.pi-py-3{padding-top:.75rem;padding-bottom:.75rem}.pi-py-4{padding-top:1rem;padding-bottom:1rem}.pi-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pi-pb-2{padding-bottom:.5rem}.pi-pb-3{padding-bottom:.75rem}.pi-pb-4{padding-bottom:1rem}.pi-pb-7{padding-bottom:1.75rem}.pi-pb-9{padding-bottom:2.25rem}.pi-pr-2{padding-right:.5rem}.pi-pr-4{padding-right:1rem}.pi-pr-6{padding-right:1.5rem}.pi-pt-1{padding-top:.25rem}.pi-pt-2{padding-top:.5rem}.pi-pt-3{padding-top:.75rem}.pi-pt-4{padding-top:1rem}.pi-text-center{text-align:center}.pi-font-\[inherit\]{font-family:inherit}.pi-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.pi-text-2xl{font-size:1.5rem;line-height:2rem}.pi-text-3xl{font-size:1.875rem;line-height:2.25rem}.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-italic{font-style:italic}.pi-leading-4{line-height:1rem}.pi-leading-5{line-height:1.25rem}.pi-leading-6{line-height:1.5rem}.pi-leading-7{line-height:1.75rem}.pi-leading-none{line-height:1}.pi-tracking-wide{letter-spacing:.025em}.pi-text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity,1))}.pi-text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.pi-text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.pi-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.pi-text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.pi-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.pi-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.pi-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.pi-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.pi-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity,1))}.pi-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.pi-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.pi-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.pi-text-iconPrimaryNeutral{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-iconSecondary{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity,1))}.pi-text-iconWhite{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.pi-text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity,1))}.pi-text-inherit{color:inherit}.pi-text-primaryInvert{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.pi-text-primaryNeutral{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.pi-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.pi-text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity,1))}.pi-text-secondaryNeutral{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.pi-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.pi-placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.\!pi-opacity-40{opacity:.4!important}.pi-opacity-0{opacity:0}.pi-opacity-100{opacity:1}.pi-opacity-50{opacity:.5}.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)}.pi-ring-1,.pi-ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.pi-ring-2{--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)}.pi-ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity,1))}.pi-ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity,1))}.pi-ring-opacity-5{--tw-ring-opacity:0.05}.pi-backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.pi-transition{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);transition-duration:.15s}.pi-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pi-duration-200{transition-duration:.2s}.pi-duration-300{transition-duration:.3s}.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-width:thin;scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial)}}.pi-scrollbar-thin::-webkit-scrollbar{display:block;width:8px;height:8px}@supports (-moz-appearance:none){.pi-scrollbar-none{scrollbar-width:none}}.pi-scrollbar-none::-webkit-scrollbar{display:none}.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-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-200\/70:hover{background-color:#e5e7ebb3}.hover\:pi-bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.hover\:pi-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\:pi-bg-phoneIslandCallHover:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity,1))}.hover\:pi-bg-phoneIslandCloseHover:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity,1))}.hover\:pi-text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.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,1))}.focus\:pi-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.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,1))}.focus\:pi-ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity,1))}.focus\:pi-ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\:pi-ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity,1))}.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}.focus-visible\:pi-ring-2:focus-visible{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:pi-ring-emerald-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity,1))}.active\:pi-border-emerald-500:active{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.enabled\:hover\:pi-border-gray-500:hover:enabled{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.enabled\:hover\:pi-bg-gray-200\/70:hover:enabled{background-color:#e5e7ebb3}.enabled\:hover\:pi-bg-gray-300\/70:hover:enabled{background-color:#d1d5dbb3}.enabled\:hover\:pi-bg-gray-500:hover:enabled{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.enabled\:hover\:pi-bg-gray-600:hover:enabled{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.disabled\:pi-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:pi-opacity-40:disabled{opacity:.4}.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,1))}.dark\:pi-border-gray-600:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:pi-border-gray-700:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:pi-border-gray-800:where(.pi-dark,.pi-dark *){--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.dark\:pi-bg-elevationL2Dark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-emerald-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.dark\:pi-bg-emerald-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-200:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-300:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-50:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-500:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-600:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-800:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.dark\:pi-bg-gray-950:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.dark\:pi-bg-green-400:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.dark\:pi-bg-green-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\:pi-bg-iconSecondaryDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.dark\:pi-bg-indigo-700:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandActiveDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandCallDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.dark\:pi-bg-phoneIslandCloseDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dark\:pi-bg-red-400:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.dark\:pi-bg-rose-900:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity,1))}.dark\:pi-bg-secondaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.dark\:pi-bg-surfaceBackgroundDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity,1))}.dark\:pi-bg-surfaceSidebarDark:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.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-emerald-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.dark\:pi-text-emerald-700:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.dark\:pi-text-gray-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:pi-text-gray-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:pi-text-gray-300:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:pi-text-gray-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:pi-text-gray-50:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-gray-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:pi-text-gray-600:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.dark\:pi-text-gray-900:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.dark\:pi-text-gray-950:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity,1))}.dark\:pi-text-green-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.dark\:pi-text-green-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:pi-text-green-500:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.dark\:pi-text-green-600:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.dark\:pi-text-iconPrimaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-iconWhiteDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-100:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-300:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity,1))}.dark\:pi-text-indigo-400:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.dark\:pi-text-primaryInvertDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.dark\:pi-text-primaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.dark\:pi-text-red-600:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.dark\:pi-text-rose-200:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.dark\:pi-text-secondaryNeutralDark:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:pi-text-white:where(.pi-dark,.pi-dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:pi-placeholder-gray-500:where(.pi-dark,.pi-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}.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,1))}.dark\:hover\:pi-bg-gray-600:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.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,1))}.dark\:hover\:pi-bg-gray-700\/70:hover:where(.pi-dark,.pi-dark *){background-color:#374151b3}.dark\:hover\:pi-bg-phoneIslandCallHoverDark:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.dark\:hover\:pi-bg-phoneIslandCloseHoverDark:hover:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.hover\:dark\:pi-bg-gray-800:where(.pi-dark,.pi-dark *):hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.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,1))}.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,1))}.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,1))}.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,1))}.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,1))}.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,1))}.dark\:enabled\:hover\:pi-bg-gray-600:hover:enabled:where(.pi-dark,.pi-dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:enabled\:hover\:pi-bg-gray-600\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#4b55634d}.dark\:enabled\:hover\:pi-bg-gray-700\/30:hover:enabled:where(.pi-dark,.pi-dark *){background-color:#3741514d}.\[\&_\.react-tooltip-content-wrapper\]\:pi-p-0 .react-tooltip-content-wrapper{padding:0}
|
package/dist/lib/darkTheme.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("react");var e=require("../utils/genericFunctions/eventDispatch.js"),t=require("../utils/genericFunctions/localStorage.js");require("../node_modules/tslib/tslib.es6.js");var s=require("../store/index.js")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("react");var e=require("../utils/genericFunctions/eventDispatch.js"),t=require("../utils/genericFunctions/localStorage.js");require("../node_modules/tslib/tslib.es6.js");var s=require("../store/index.js");require("../services/user.js");var r=function(){document.documentElement.classList.add("pi-dark")},i=function(){document.documentElement.classList.remove("pi-dark")},c=function(){var e=t.getJSONItem("phone-island-theme-selected")||{},c="system";"dark"===e.themeSelected?(c="dark",r()):"light"===e.themeSelected?(c="light",i()):window.matchMedia("(prefers-color-scheme: dark)").matches?r():i(),s.store.dispatch.darkTheme.update(c)};exports.checkDarkTheme=c,exports.setTheme=function(s){t.setJSONItem("phone-island-theme-selected",{themeSelected:s}),c(),e.eventDispatch("phone-island-theme-changed",{})};
|
|
2
2
|
//# sourceMappingURL=darkTheme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"darkTheme.js","sources":["../../src/lib/darkTheme.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { setJSONItem, getJSONItem, eventDispatch } from '../utils'\nimport { store } from '../store'\n\nconst addDarkClassToDocument = () => {\n document.documentElement.classList.add('pi-dark')\n}\n\nconst removeDarkClassFromDocument = () => {\n document.documentElement.classList.remove('pi-dark')\n}\n\n/**\n * Read theme from local storage and update global store\n */\nexport const checkDarkTheme = () => {\n const preferences = getJSONItem(`phone-island-theme-selected`) || {}\n let theme = 'system'\n\n if (preferences.themeSelected === 'dark') {\n theme = 'dark'\n addDarkClassToDocument()\n } else if (preferences.themeSelected === 'light') {\n theme = 'light'\n removeDarkClassFromDocument()\n } else {\n // system theme\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n addDarkClassToDocument()\n } else {\n removeDarkClassFromDocument()\n }\n }\n\n // update global store\n store.dispatch.darkTheme.update(theme)\n}\n\nexport const setTheme = (theme: string) => {\n setJSONItem('phone-island-theme-selected', { themeSelected: theme })\n checkDarkTheme()\n eventDispatch('phone-island-theme-changed', {})\n}\n"],"names":["addDarkClassToDocument","document","documentElement","classList","add","removeDarkClassFromDocument","remove","checkDarkTheme","preferences","getJSONItem","theme","themeSelected","window","matchMedia","matches","store","dispatch","darkTheme","update","setJSONItem","eventDispatch"],"mappings":"
|
|
1
|
+
{"version":3,"file":"darkTheme.js","sources":["../../src/lib/darkTheme.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { setJSONItem, getJSONItem, eventDispatch } from '../utils'\nimport { store } from '../store'\n\nconst addDarkClassToDocument = () => {\n document.documentElement.classList.add('pi-dark')\n}\n\nconst removeDarkClassFromDocument = () => {\n document.documentElement.classList.remove('pi-dark')\n}\n\n/**\n * Read theme from local storage and update global store\n */\nexport const checkDarkTheme = () => {\n const preferences = getJSONItem(`phone-island-theme-selected`) || {}\n let theme = 'system'\n\n if (preferences.themeSelected === 'dark') {\n theme = 'dark'\n addDarkClassToDocument()\n } else if (preferences.themeSelected === 'light') {\n theme = 'light'\n removeDarkClassFromDocument()\n } else {\n // system theme\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n addDarkClassToDocument()\n } else {\n removeDarkClassFromDocument()\n }\n }\n\n // update global store\n store.dispatch.darkTheme.update(theme)\n}\n\nexport const setTheme = (theme: string) => {\n setJSONItem('phone-island-theme-selected', { themeSelected: theme })\n checkDarkTheme()\n eventDispatch('phone-island-theme-changed', {})\n}\n"],"names":["addDarkClassToDocument","document","documentElement","classList","add","removeDarkClassFromDocument","remove","checkDarkTheme","preferences","getJSONItem","theme","themeSelected","window","matchMedia","matches","store","dispatch","darkTheme","update","setJSONItem","eventDispatch"],"mappings":"wTAMA,IAAMA,EAAyB,WAC7BC,SAASC,gBAAgBC,UAAUC,IAAI,UACzC,EAEMC,EAA8B,WAClCJ,SAASC,gBAAgBC,UAAUG,OAAO,UAC5C,EAKaC,EAAiB,WAC5B,IAAMC,EAAcC,EAAAA,YAAY,gCAAkC,CAAA,EAC9DC,EAAQ,SAEsB,SAA9BF,EAAYG,eACdD,EAAQ,OACRV,KACuC,UAA9BQ,EAAYG,eACrBD,EAAQ,QACRL,KAGIO,OAAOC,WAAW,gCAAgCC,QACpDd,IAEAK,IAKJU,EAAAA,MAAMC,SAASC,UAAUC,OAAOR,EAClC,4CAEwB,SAACA,GACvBS,EAAAA,YAAY,8BAA+B,CAAER,cAAeD,IAC5DH,IACAa,gBAAc,6BAA8B,CAAA,EAC9C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("../../node_modules/mic-check/lib/index.js");var e=require("../webrtc/janus.js"),i=require("../../store/index.js"),r=require("../user/default_device.js");require("react");var t=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js");var n=require("../../_virtual/index6.js"),o=e.default;exports.checkMediaPermissions=function(){if(r.isPhysical())return i.store.dispatch.alerts.removeAlert("browser_permissions"),i.store.dispatch.alerts.removeAlert("user_permissions"),i.store.dispatch.alerts.removeAlert("busy_camera"),void i.store.dispatch.alerts.removeAlert("unknown_media_permissions");n.__exports.requestMediaPermissions({audio:!0}).then(function(){}).catch(function(e){var r,t,s=e.type,d=null!==(t=((r={})[n.__exports.MediaPermissionsErrorType.SystemPermissionDenied]={alert:"browser_permissions",message:"WebRTC: browser does not have permission to access camera or microphone"},r[n.__exports.MediaPermissionsErrorType.UserPermissionDenied]={alert:"user_permissions",message:"WebRTC: user didn't allow app to access camera or microphone"},r)[s])&&void 0!==t?t:{alert:"unknown_media_permissions",message:"WebRTC: can't access audio or camera on this device. unknown error"};i.store.dispatch.alerts.setAlert(d.alert),o.error&&o.error(d.message)})},exports.checkWebCamPermission=function(){return new Promise(function(e){n.__exports.requestMediaPermissions({video:!0}).then(function(){e(!0)}).catch(function(i){console.error("Error requesting webcam permission:",i),e(!1)})})},exports.getCurrentAudioInputDeviceId=function(){var e=t.getJSONItem("phone-island-audio-input-device").deviceId||null,r=i.store.select.mediaDevices.audioInputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Audio input device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-audio-input-device",{deviceId:o})),o},exports.getCurrentAudioOutputDeviceId=function(){var e=t.getJSONItem("phone-island-audio-output-device").deviceId||null,r=i.store.select.mediaDevices.audioOutputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Audio output device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-audio-output-device",{deviceId:o})),o},exports.getCurrentVideoInputDeviceId=function(){var e=t.getJSONItem("phone-island-video-input-device").deviceId||null,r=i.store.select.mediaDevices.videoInputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Video input device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-video-input-device",{deviceId:o})),o},exports.getSupportedDevices=function(e){var i,r,t=!1,n=!1,s=!1,d=!1;i=function(){var i={audio:t,audioCap:s,video:n,videoCap:d};o.log&&o.log("supportedDevices=",i),e()},r=[],navigator.mediaDevices.enumerateDevices().then(function(e){e.forEach(function(e){var i=!1;r.forEach(function(r){r.deviceId===e.deviceId&&r.kind===e.kind&&(i=!0)}),i||("videoinput"!==e.kind||d||(d=!0),"audioinput"!==e.kind||s||(s=!0),"audioinput"===e.kind&&(t=!0),"videoinput"===e.kind&&(n=!0),r.push(e))}),i&&i()})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("../../node_modules/mic-check/lib/index.js");var e=require("../webrtc/janus.js"),i=require("../../store/index.js"),r=require("../user/default_device.js");require("react");var t=require("../../utils/genericFunctions/localStorage.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../services/user.js");var n=require("../../_virtual/index6.js"),o=e.default;exports.checkMediaPermissions=function(){if(r.isPhysical())return i.store.dispatch.alerts.removeAlert("browser_permissions"),i.store.dispatch.alerts.removeAlert("user_permissions"),i.store.dispatch.alerts.removeAlert("busy_camera"),void i.store.dispatch.alerts.removeAlert("unknown_media_permissions");n.__exports.requestMediaPermissions({audio:!0}).then(function(){}).catch(function(e){var r,t,s=e.type,d=null!==(t=((r={})[n.__exports.MediaPermissionsErrorType.SystemPermissionDenied]={alert:"browser_permissions",message:"WebRTC: browser does not have permission to access camera or microphone"},r[n.__exports.MediaPermissionsErrorType.UserPermissionDenied]={alert:"user_permissions",message:"WebRTC: user didn't allow app to access camera or microphone"},r)[s])&&void 0!==t?t:{alert:"unknown_media_permissions",message:"WebRTC: can't access audio or camera on this device. unknown error"};i.store.dispatch.alerts.setAlert(d.alert),o.error&&o.error(d.message)})},exports.checkWebCamPermission=function(){return new Promise(function(e){n.__exports.requestMediaPermissions({video:!0}).then(function(){e(!0)}).catch(function(i){console.error("Error requesting webcam permission:",i),e(!1)})})},exports.getCurrentAudioInputDeviceId=function(){var e=t.getJSONItem("phone-island-audio-input-device").deviceId||null,r=i.store.select.mediaDevices.audioInputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Audio input device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-audio-input-device",{deviceId:o})),o},exports.getCurrentAudioOutputDeviceId=function(){var e=t.getJSONItem("phone-island-audio-output-device").deviceId||null,r=i.store.select.mediaDevices.audioOutputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Audio output device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-audio-output-device",{deviceId:o})),o},exports.getCurrentVideoInputDeviceId=function(){var e=t.getJSONItem("phone-island-video-input-device").deviceId||null,r=i.store.select.mediaDevices.videoInputDevices(i.store.getState());if(r.find(function(i){return i.deviceId===e}))return e;var n=r.find(function(e){return"default"===e.deviceId||""===e.deviceId})||r[0],o=n?n.deviceId:"default";return null!==e&&o!==e&&(console.warn("Video input device ".concat(e," no longer available, falling back to default device")),t.setJSONItem("phone-island-video-input-device",{deviceId:o})),o},exports.getSupportedDevices=function(e){var i,r,t=!1,n=!1,s=!1,d=!1;i=function(){var i={audio:t,audioCap:s,video:n,videoCap:d};o.log&&o.log("supportedDevices=",i),e()},r=[],navigator.mediaDevices.enumerateDevices().then(function(e){e.forEach(function(e){var i=!1;r.forEach(function(r){r.deviceId===e.deviceId&&r.kind===e.kind&&(i=!0)}),i||("videoinput"!==e.kind||d||(d=!0),"audioinput"!==e.kind||s||(s=!0),"audioinput"===e.kind&&(t=!0),"videoinput"===e.kind&&(n=!0),r.push(e))}),i&&i()})};
|
|
2
2
|
//# sourceMappingURL=devices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.js","sources":["../../../src/lib/devices/devices.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n MediaPermissionsErrorType,\n requestMediaPermissions,\n} from 'mic-check'\nimport JanusLib from '../webrtc/janus'\nimport { JanusTypes } from '../../types'\nimport { store } from '../../store'\nimport { isPhysical } from '../user/default_device'\nimport { getJSONItem, setJSONItem } from '../../utils'\n\nconst Janus: JanusTypes = JanusLib\n\nexport const getSupportedDevices = function (origCallback: () => void) {\n let hasMicrophone = false\n let hasWebcam = false\n let isMicrophoneAlreadyCaptured = false\n let isWebcamAlreadyCaptured = false\n\n function checkDeviceSupport(callback: () => void) {\n const mediaDevices: MediaDeviceInfo[] = []\n\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]) => {\n devices.forEach(function (device: MediaDeviceInfo) {\n let skip = false\n\n mediaDevices.forEach(function (d: MediaDeviceInfo) {\n if (d.deviceId === device.deviceId && d.kind === device.kind) {\n skip = true\n }\n })\n\n if (skip) {\n return\n }\n\n if (device.kind === 'videoinput' && !isWebcamAlreadyCaptured) {\n isWebcamAlreadyCaptured = true\n }\n if (device.kind === 'audioinput' && !isMicrophoneAlreadyCaptured) {\n isMicrophoneAlreadyCaptured = true\n }\n\n if (device.kind === 'audioinput') {\n hasMicrophone = true\n }\n\n if (device.kind === 'videoinput') {\n hasWebcam = true\n }\n\n mediaDevices.push(device)\n })\n\n if (callback) {\n callback()\n }\n })\n }\n\n // check for microphone/camera support!\n checkDeviceSupport(function () {\n const supportedDevices: any = {\n audio: hasMicrophone,\n audioCap: isMicrophoneAlreadyCaptured,\n video: hasWebcam,\n videoCap: isWebcamAlreadyCaptured,\n }\n\n Janus.log && Janus.log('supportedDevices=', supportedDevices)\n origCallback()\n })\n}\n\nexport const checkMediaPermissions = function () {\n //Remove all media alerts if default_device is physical\n if (isPhysical()) {\n store.dispatch.alerts.removeAlert('browser_permissions')\n store.dispatch.alerts.removeAlert('user_permissions')\n store.dispatch.alerts.removeAlert('busy_camera')\n store.dispatch.alerts.removeAlert('unknown_media_permissions')\n return\n }\n\n requestMediaPermissions({ audio: true })\n .then(() => {\n // Can successfully access camera and microphone streams\n // Save permissions state on rematch to get access globally on the app\n })\n .catch((err: any) => {\n const { type } = err\n\n // Define error mappings for different types of media permission errors\n const errorMap: any = {\n [MediaPermissionsErrorType.SystemPermissionDenied]: {\n alert: 'browser_permissions',\n message: 'WebRTC: browser does not have permission to access camera or microphone',\n },\n [MediaPermissionsErrorType.UserPermissionDenied]: {\n alert: 'user_permissions',\n message: \"WebRTC: user didn't allow app to access camera or microphone\",\n },\n }\n\n // Get error details from map or use default error\n const error = errorMap[type] ?? {\n alert: 'unknown_media_permissions',\n message: \"WebRTC: can't access audio or camera on this device. unknown error\",\n }\n\n // Display alert only for non-physical devices\n store.dispatch.alerts.setAlert(error.alert)\n\n // Log error message if Janus logger is available\n if (Janus.error) {\n Janus.error(error.message)\n }\n })\n}\n\nexport const checkWebCamPermission = function (): Promise<boolean> {\n return new Promise((resolve) => {\n requestMediaPermissions({ video: true })\n .then(() => {\n resolve(true)\n })\n .catch((err: any) => {\n console.error('Error requesting webcam permission:', err)\n resolve(false)\n })\n })\n}\n\nexport const getCurrentVideoInputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-video-input-device').deviceId || null\n const videoInputDevices = store.select.mediaDevices.videoInputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = videoInputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = videoInputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || videoInputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Video input device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-video-input-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n\nexport const getCurrentAudioInputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-audio-input-device').deviceId || null\n const audioInputDevices = store.select.mediaDevices.audioInputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = audioInputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = audioInputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || audioInputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Audio input device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-audio-input-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n\nexport const getCurrentAudioOutputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-audio-output-device').deviceId || null\n const audioOutputDevices = store.select.mediaDevices.audioOutputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = audioOutputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = audioOutputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || audioOutputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Audio output device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-audio-output-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n"],"names":["Janus","JanusLib","isPhysical","store","dispatch","alerts","removeAlert","requestMediaPermissions","audio","then","catch","err","type","error","_b","_a","MediaPermissionsErrorType","SystemPermissionDenied","alert","message","UserPermissionDenied","setAlert","Promise","resolve","video","console","currentDeviceId","getJSONItem","deviceId","audioInputDevices","select","mediaDevices","getState","find","device","defaultDevice","fallbackDeviceId","warn","setJSONItem","audioOutputDevices","videoInputDevices","origCallback","callback","hasMicrophone","hasWebcam","isMicrophoneAlreadyCaptured","isWebcamAlreadyCaptured","supportedDevices","audioCap","videoCap","log","navigator","enumerateDevices","devices","forEach","skip","d","kind","push"],"mappings":"gZAaMA,EAAoBC,EAAAA,sCA+DW,WAEnC,GAAIC,EAAUA,aAKZ,OAJAC,EAAAA,MAAMC,SAASC,OAAOC,YAAY,uBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,oBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,oBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,6BAIpCC,oCAAwB,CAAEC,OAAO,IAC9BC,KAAK,WAGN,GACCC,MAAM,SAACC,WACEC,EAASD,EAAGC,KAedC,EAA0B,QAAlBC,IAZAC,EAAA,CAAA,GACXC,EAAAA,UAAAA,0BAA0BC,wBAAyB,CAClDC,MAAO,sBACPC,QAAS,2EAEXJ,EAACC,EAAAA,UAAAA,0BAA0BI,sBAAuB,CAChDF,MAAO,mBACPC,QAAS,mEAKUP,UAAS,IAAAE,EAAAA,EAAA,CAC9BI,MAAO,4BACPC,QAAS,sEAIXhB,EAAKA,MAACC,SAASC,OAAOgB,SAASR,EAAMK,OAGjClB,EAAMa,OACRb,EAAMa,MAAMA,EAAMM,QAEtB,EACJ,gCAEqC,WACnC,OAAO,IAAIG,QAAQ,SAACC,GAClBhB,oCAAwB,CAAEiB,OAAO,IAC9Bf,KAAK,WACJc,GAAQ,EACV,GACCb,MAAM,SAACC,GACNc,QAAQZ,MAAM,sCAAuCF,GACrDY,GAAQ,EACV,EACJ,EACF,uCA0B4C,WAC1C,IAAMG,EAAkBC,EAAWA,YAAC,mCAAmCC,UAAY,KAC7EC,EAAoB1B,EAAKA,MAAC2B,OAAOC,aAAaF,kBAAkB1B,EAAKA,MAAC6B,YAK5E,GAFoBH,EAAkBI,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGrD,OAAOA,EAGP,IAAMS,EAAgBN,EAAkBI,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKC,EAAkB,GAC/HO,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,6BAAsBX,EAAe,yDAElDY,EAAAA,YAAY,kCAAmC,CAAEV,SAAUQ,KAGtDA,CAEX,wCAE6C,WAC3C,IAAMV,EAAkBC,EAAWA,YAAC,oCAAoCC,UAAY,KAC9EW,EAAqBpC,EAAKA,MAAC2B,OAAOC,aAAaQ,mBAAmBpC,EAAKA,MAAC6B,YAK9E,GAFoBO,EAAmBN,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGtD,OAAOA,EAGP,IAAMS,EAAgBI,EAAmBN,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKW,EAAmB,GACjIH,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,8BAAuBX,EAAe,yDAEnDY,EAAAA,YAAY,mCAAoC,CAAEV,SAAUQ,KAGvDA,CAEX,uCAtE4C,WAC1C,IAAMV,EAAkBC,EAAWA,YAAC,mCAAmCC,UAAY,KAC7EY,EAAoBrC,EAAKA,MAAC2B,OAAOC,aAAaS,kBAAkBrC,EAAKA,MAAC6B,YAK5E,GAFoBQ,EAAkBP,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGrD,OAAOA,EAGP,IAAMS,EAAgBK,EAAkBP,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKY,EAAkB,GAC/HJ,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,6BAAsBX,EAAe,yDAElDY,EAAAA,YAAY,kCAAmC,CAAEV,SAAUQ,KAGtDA,CAEX,8BA9ImC,SAAUK,GAC3C,IAK4BC,EACpBX,EANJY,GAAgB,EAChBC,GAAY,EACZC,GAA8B,EAC9BC,GAA0B,EAEFJ,EA0CT,WACjB,IAAMK,EAAwB,CAC5BvC,MAAOmC,EACPK,SAAUH,EACVrB,MAAOoB,EACPK,SAAUH,GAGZ9C,EAAMkD,KAAOlD,EAAMkD,IAAI,oBAAqBH,GAC5CN,GACF,EAnDQV,EAAkC,GAExCoB,UAAUpB,aAAaqB,mBAAmB3C,KAAK,SAAC4C,GAC9CA,EAAQC,QAAQ,SAAUpB,GACxB,IAAIqB,GAAO,EAEXxB,EAAauB,QAAQ,SAAUE,GACzBA,EAAE5B,WAAaM,EAAON,UAAY4B,EAAEC,OAASvB,EAAOuB,OACtDF,GAAO,EAEX,GAEIA,IAIgB,eAAhBrB,EAAOuB,MAA0BX,IACnCA,GAA0B,GAER,eAAhBZ,EAAOuB,MAA0BZ,IACnCA,GAA8B,GAGZ,eAAhBX,EAAOuB,OACTd,GAAgB,GAGE,eAAhBT,EAAOuB,OACTb,GAAY,GAGdb,EAAa2B,KAAKxB,GACpB,GAEIQ,GACFA,GAEJ,EAeJ"}
|
|
1
|
+
{"version":3,"file":"devices.js","sources":["../../../src/lib/devices/devices.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n MediaPermissionsErrorType,\n requestMediaPermissions,\n} from 'mic-check'\nimport JanusLib from '../webrtc/janus'\nimport { JanusTypes } from '../../types'\nimport { store } from '../../store'\nimport { isPhysical } from '../user/default_device'\nimport { getJSONItem, setJSONItem } from '../../utils'\n\nconst Janus: JanusTypes = JanusLib\n\nexport const getSupportedDevices = function (origCallback: () => void) {\n let hasMicrophone = false\n let hasWebcam = false\n let isMicrophoneAlreadyCaptured = false\n let isWebcamAlreadyCaptured = false\n\n function checkDeviceSupport(callback: () => void) {\n const mediaDevices: MediaDeviceInfo[] = []\n\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]) => {\n devices.forEach(function (device: MediaDeviceInfo) {\n let skip = false\n\n mediaDevices.forEach(function (d: MediaDeviceInfo) {\n if (d.deviceId === device.deviceId && d.kind === device.kind) {\n skip = true\n }\n })\n\n if (skip) {\n return\n }\n\n if (device.kind === 'videoinput' && !isWebcamAlreadyCaptured) {\n isWebcamAlreadyCaptured = true\n }\n if (device.kind === 'audioinput' && !isMicrophoneAlreadyCaptured) {\n isMicrophoneAlreadyCaptured = true\n }\n\n if (device.kind === 'audioinput') {\n hasMicrophone = true\n }\n\n if (device.kind === 'videoinput') {\n hasWebcam = true\n }\n\n mediaDevices.push(device)\n })\n\n if (callback) {\n callback()\n }\n })\n }\n\n // check for microphone/camera support!\n checkDeviceSupport(function () {\n const supportedDevices: any = {\n audio: hasMicrophone,\n audioCap: isMicrophoneAlreadyCaptured,\n video: hasWebcam,\n videoCap: isWebcamAlreadyCaptured,\n }\n\n Janus.log && Janus.log('supportedDevices=', supportedDevices)\n origCallback()\n })\n}\n\nexport const checkMediaPermissions = function () {\n //Remove all media alerts if default_device is physical\n if (isPhysical()) {\n store.dispatch.alerts.removeAlert('browser_permissions')\n store.dispatch.alerts.removeAlert('user_permissions')\n store.dispatch.alerts.removeAlert('busy_camera')\n store.dispatch.alerts.removeAlert('unknown_media_permissions')\n return\n }\n\n requestMediaPermissions({ audio: true })\n .then(() => {\n // Can successfully access camera and microphone streams\n // Save permissions state on rematch to get access globally on the app\n })\n .catch((err: any) => {\n const { type } = err\n\n // Define error mappings for different types of media permission errors\n const errorMap: any = {\n [MediaPermissionsErrorType.SystemPermissionDenied]: {\n alert: 'browser_permissions',\n message: 'WebRTC: browser does not have permission to access camera or microphone',\n },\n [MediaPermissionsErrorType.UserPermissionDenied]: {\n alert: 'user_permissions',\n message: \"WebRTC: user didn't allow app to access camera or microphone\",\n },\n }\n\n // Get error details from map or use default error\n const error = errorMap[type] ?? {\n alert: 'unknown_media_permissions',\n message: \"WebRTC: can't access audio or camera on this device. unknown error\",\n }\n\n // Display alert only for non-physical devices\n store.dispatch.alerts.setAlert(error.alert)\n\n // Log error message if Janus logger is available\n if (Janus.error) {\n Janus.error(error.message)\n }\n })\n}\n\nexport const checkWebCamPermission = function (): Promise<boolean> {\n return new Promise((resolve) => {\n requestMediaPermissions({ video: true })\n .then(() => {\n resolve(true)\n })\n .catch((err: any) => {\n console.error('Error requesting webcam permission:', err)\n resolve(false)\n })\n })\n}\n\nexport const getCurrentVideoInputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-video-input-device').deviceId || null\n const videoInputDevices = store.select.mediaDevices.videoInputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = videoInputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = videoInputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || videoInputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Video input device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-video-input-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n\nexport const getCurrentAudioInputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-audio-input-device').deviceId || null\n const audioInputDevices = store.select.mediaDevices.audioInputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = audioInputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = audioInputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || audioInputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Audio input device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-audio-input-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n\nexport const getCurrentAudioOutputDeviceId = function () {\n const currentDeviceId = getJSONItem('phone-island-audio-output-device').deviceId || null\n const audioOutputDevices = store.select.mediaDevices.audioOutputDevices(store.getState())\n\n // Check if the current device is still available\n const deviceFound = audioOutputDevices.find((device) => device.deviceId === currentDeviceId)\n\n if (deviceFound) {\n return currentDeviceId\n } else {\n // Fallback to default device\n const defaultDevice = audioOutputDevices.find(device => device.deviceId === 'default' || device.deviceId === '') || audioOutputDevices[0]\n const fallbackDeviceId = defaultDevice ? defaultDevice.deviceId : 'default'\n\n if (currentDeviceId !== null && fallbackDeviceId !== currentDeviceId) {\n console.warn(`Audio output device ${currentDeviceId} no longer available, falling back to default device`)\n // Update localStorage with the fallback device\n setJSONItem('phone-island-audio-output-device', { deviceId: fallbackDeviceId })\n }\n\n return fallbackDeviceId\n }\n}\n"],"names":["Janus","JanusLib","isPhysical","store","dispatch","alerts","removeAlert","requestMediaPermissions","audio","then","catch","err","type","error","_b","_a","MediaPermissionsErrorType","SystemPermissionDenied","alert","message","UserPermissionDenied","setAlert","Promise","resolve","video","console","currentDeviceId","getJSONItem","deviceId","audioInputDevices","select","mediaDevices","getState","find","device","defaultDevice","fallbackDeviceId","warn","setJSONItem","audioOutputDevices","videoInputDevices","origCallback","callback","hasMicrophone","hasWebcam","isMicrophoneAlreadyCaptured","isWebcamAlreadyCaptured","supportedDevices","audioCap","videoCap","log","navigator","enumerateDevices","devices","forEach","skip","d","kind","push"],"mappings":"kbAaMA,EAAoBC,EAAAA,sCA+DW,WAEnC,GAAIC,EAAUA,aAKZ,OAJAC,EAAAA,MAAMC,SAASC,OAAOC,YAAY,uBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,oBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,oBAClCH,EAAAA,MAAMC,SAASC,OAAOC,YAAY,6BAIpCC,oCAAwB,CAAEC,OAAO,IAC9BC,KAAK,WAGN,GACCC,MAAM,SAACC,WACEC,EAASD,EAAGC,KAedC,EAA0B,QAAlBC,IAZAC,EAAA,CAAA,GACXC,EAAAA,UAAAA,0BAA0BC,wBAAyB,CAClDC,MAAO,sBACPC,QAAS,2EAEXJ,EAACC,EAAAA,UAAAA,0BAA0BI,sBAAuB,CAChDF,MAAO,mBACPC,QAAS,mEAKUP,UAAS,IAAAE,EAAAA,EAAA,CAC9BI,MAAO,4BACPC,QAAS,sEAIXhB,EAAKA,MAACC,SAASC,OAAOgB,SAASR,EAAMK,OAGjClB,EAAMa,OACRb,EAAMa,MAAMA,EAAMM,QAEtB,EACJ,gCAEqC,WACnC,OAAO,IAAIG,QAAQ,SAACC,GAClBhB,oCAAwB,CAAEiB,OAAO,IAC9Bf,KAAK,WACJc,GAAQ,EACV,GACCb,MAAM,SAACC,GACNc,QAAQZ,MAAM,sCAAuCF,GACrDY,GAAQ,EACV,EACJ,EACF,uCA0B4C,WAC1C,IAAMG,EAAkBC,EAAWA,YAAC,mCAAmCC,UAAY,KAC7EC,EAAoB1B,EAAKA,MAAC2B,OAAOC,aAAaF,kBAAkB1B,EAAKA,MAAC6B,YAK5E,GAFoBH,EAAkBI,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGrD,OAAOA,EAGP,IAAMS,EAAgBN,EAAkBI,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKC,EAAkB,GAC/HO,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,6BAAsBX,EAAe,yDAElDY,EAAAA,YAAY,kCAAmC,CAAEV,SAAUQ,KAGtDA,CAEX,wCAE6C,WAC3C,IAAMV,EAAkBC,EAAWA,YAAC,oCAAoCC,UAAY,KAC9EW,EAAqBpC,EAAKA,MAAC2B,OAAOC,aAAaQ,mBAAmBpC,EAAKA,MAAC6B,YAK9E,GAFoBO,EAAmBN,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGtD,OAAOA,EAGP,IAAMS,EAAgBI,EAAmBN,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKW,EAAmB,GACjIH,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,8BAAuBX,EAAe,yDAEnDY,EAAAA,YAAY,mCAAoC,CAAEV,SAAUQ,KAGvDA,CAEX,uCAtE4C,WAC1C,IAAMV,EAAkBC,EAAWA,YAAC,mCAAmCC,UAAY,KAC7EY,EAAoBrC,EAAKA,MAAC2B,OAAOC,aAAaS,kBAAkBrC,EAAKA,MAAC6B,YAK5E,GAFoBQ,EAAkBP,KAAK,SAACC,GAAW,OAAAA,EAAON,WAAaF,CAApB,GAGrD,OAAOA,EAGP,IAAMS,EAAgBK,EAAkBP,KAAK,SAAAC,GAAU,MAAoB,YAApBA,EAAON,UAA8C,KAApBM,EAAON,QAAe,IAAKY,EAAkB,GAC/HJ,EAAmBD,EAAgBA,EAAcP,SAAW,UAQlE,OANwB,OAApBF,GAA4BU,IAAqBV,IACnDD,QAAQY,KAAK,6BAAsBX,EAAe,yDAElDY,EAAAA,YAAY,kCAAmC,CAAEV,SAAUQ,KAGtDA,CAEX,8BA9ImC,SAAUK,GAC3C,IAK4BC,EACpBX,EANJY,GAAgB,EAChBC,GAAY,EACZC,GAA8B,EAC9BC,GAA0B,EAEFJ,EA0CT,WACjB,IAAMK,EAAwB,CAC5BvC,MAAOmC,EACPK,SAAUH,EACVrB,MAAOoB,EACPK,SAAUH,GAGZ9C,EAAMkD,KAAOlD,EAAMkD,IAAI,oBAAqBH,GAC5CN,GACF,EAnDQV,EAAkC,GAExCoB,UAAUpB,aAAaqB,mBAAmB3C,KAAK,SAAC4C,GAC9CA,EAAQC,QAAQ,SAAUpB,GACxB,IAAIqB,GAAO,EAEXxB,EAAauB,QAAQ,SAAUE,GACzBA,EAAE5B,WAAaM,EAAON,UAAY4B,EAAEC,OAASvB,EAAOuB,OACtDF,GAAO,EAEX,GAEIA,IAIgB,eAAhBrB,EAAOuB,MAA0BX,IACnCA,GAA0B,GAER,eAAhBZ,EAAOuB,MAA0BZ,IACnCA,GAA8B,GAGZ,eAAhBX,EAAOuB,OACTd,GAAgB,GAGE,eAAhBT,EAAOuB,OACTb,GAAY,GAGdb,EAAa2B,KAAKxB,GACpB,GAEIQ,GACFA,GAEJ,EAeJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../store/index.js");require("react");var t=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),exports.backToPreviousView=function(){var s=e.store.getState().island,i=s.view,r=s.previousView;t.eventDispatch("phone-island-call-".concat(i,"-closed"),{}),e.store.dispatch.island.setIslandView("".concat(r||"call"))},exports.xPosition=function(e,t,s){var i=s.offsetWidth/2-t.offsetWidth/2;return e>0&&e>i?i:e<0&&e<-i?-i:e},exports.yPosition=function(e,t,s){var i=s.offsetHeight/2-t.offsetHeight/2;return e>0&&e>i?i:e<0&&e<-i?-i:e};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../store/index.js");require("react");var t=require("../../utils/genericFunctions/eventDispatch.js");require("../../node_modules/tslib/tslib.es6.js"),require("../../services/user.js"),exports.backToPreviousView=function(){var s=e.store.getState().island,i=s.view,r=s.previousView;t.eventDispatch("phone-island-call-".concat(i,"-closed"),{}),e.store.dispatch.island.setIslandView("".concat(r||"call"))},exports.xPosition=function(e,t,s){var i=s.offsetWidth/2-t.offsetWidth/2;return e>0&&e>i?i:e<0&&e<-i?-i:e},exports.yPosition=function(e,t,s){var i=s.offsetHeight/2-t.offsetHeight/2;return e>0&&e>i?i:e<0&&e<-i?-i:e};
|
|
2
2
|
//# sourceMappingURL=island.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"island.js","sources":["../../../src/lib/island/island.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../../store'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Retrieve the position on x axis\n */\nexport function xPosition(x: number, islandElement: HTMLElement, containerElement: HTMLElement) {\n // Get horizontal constraints\n const xConstraintPosition = containerElement.offsetWidth / 2 - islandElement.offsetWidth / 2\n // Return the X position inside the constraints\n return x > 0 && x > xConstraintPosition\n ? xConstraintPosition\n : x < 0 && x < -xConstraintPosition\n ? -xConstraintPosition\n : x\n}\n\n/**\n * Retrieve the position on y axis\n */\nexport function yPosition(y: number, islandElement: HTMLElement, containerElement: HTMLElement) {\n // Get vertical constraints\n const yConstraintPosition = containerElement.offsetHeight / 2 - islandElement.offsetHeight / 2\n // Return the Y position inside the constraints\n return y > 0 && y > yConstraintPosition\n ? yConstraintPosition\n : y < 0 && y < -yConstraintPosition\n ? -yConstraintPosition\n : y\n}\n\n/**\n * Go back to the previous view\n */\nexport function backToPreviousView() {\n const { view, previousView } = store.getState().island\n eventDispatch(`phone-island-call-${view}-closed`, {})\n store.dispatch.island.setIslandView(`${previousView || 'call'}`)\n}\n"],"names":["_a","store","getState","island","view","previousView","eventDispatch","concat","dispatch","setIslandView","x","islandElement","containerElement","xConstraintPosition","offsetWidth","y","yConstraintPosition","offsetHeight"],"mappings":"
|
|
1
|
+
{"version":3,"file":"island.js","sources":["../../../src/lib/island/island.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../../store'\nimport { eventDispatch } from '../../utils'\n\n/**\n * Retrieve the position on x axis\n */\nexport function xPosition(x: number, islandElement: HTMLElement, containerElement: HTMLElement) {\n // Get horizontal constraints\n const xConstraintPosition = containerElement.offsetWidth / 2 - islandElement.offsetWidth / 2\n // Return the X position inside the constraints\n return x > 0 && x > xConstraintPosition\n ? xConstraintPosition\n : x < 0 && x < -xConstraintPosition\n ? -xConstraintPosition\n : x\n}\n\n/**\n * Retrieve the position on y axis\n */\nexport function yPosition(y: number, islandElement: HTMLElement, containerElement: HTMLElement) {\n // Get vertical constraints\n const yConstraintPosition = containerElement.offsetHeight / 2 - islandElement.offsetHeight / 2\n // Return the Y position inside the constraints\n return y > 0 && y > yConstraintPosition\n ? yConstraintPosition\n : y < 0 && y < -yConstraintPosition\n ? -yConstraintPosition\n : y\n}\n\n/**\n * Go back to the previous view\n */\nexport function backToPreviousView() {\n const { view, previousView } = store.getState().island\n eventDispatch(`phone-island-call-${view}-closed`, {})\n store.dispatch.island.setIslandView(`${previousView || 'call'}`)\n}\n"],"names":["_a","store","getState","island","view","previousView","eventDispatch","concat","dispatch","setIslandView","x","islandElement","containerElement","xConstraintPosition","offsetWidth","y","yConstraintPosition","offsetHeight"],"mappings":"mTAsCQ,IAAAA,EAAyBC,EAAAA,MAAMC,WAAWC,OAAxCC,EAAIJ,EAAAI,KAAEC,iBACdC,EAAaA,cAAC,qBAAqBC,OAAAH,aAAe,CAAA,GAClDH,QAAMO,SAASL,OAAOM,cAAc,GAAAF,OAAGF,GAAgB,QACzD,6BAhC0BK,EAAWC,EAA4BC,GAE/D,IAAMC,EAAsBD,EAAiBE,YAAc,EAAIH,EAAcG,YAAc,EAE3F,OAAOJ,EAAI,GAAKA,EAAIG,EAChBA,EACAH,EAAI,GAAKA,GAAKG,GACbA,EACDH,CACN,6BAK0BK,EAAWJ,EAA4BC,GAE/D,IAAMI,EAAsBJ,EAAiBK,aAAe,EAAIN,EAAcM,aAAe,EAE7F,OAAOF,EAAI,GAAKA,EAAIC,EAChBA,EACAD,EAAI,GAAKA,GAAKC,GACbA,EACDD,CACN"}
|
package/dist/lib/phone/call.js
CHANGED
|
@@ -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"),s=require("../../services/astproxy.js"),o=require("../../static/dtmf/index.js");require("react");var i=require("../../utils/genericFunctions/eventDispatch.js"),a=require("../../services/user.js"),c=require("../../utils/genericFunctions/isEmpty.js"),u=require("../../utils/streaming/getStreamingSourceId.js");function l(){var e=r.store.getState().currentCall,o=e.outgoing,c=e.accepted,l=e.streamingSourceNumber,d=r.store.getState().island.isFromStreaming;if(o||c){if(n.isWebRTC()?t.hangup():s.hangupPhysical(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.currentCall.reset(),r.store.dispatch.listen.reset(),d&&l){var p=u.getStreamingSourceId(l);p&&(a.unsubscribe({id:p}).then(function(){return console.debug("Unsubscribed from streaming source: ".concat(p))}).catch(function(e){return console.error("Error unsubscribing from streaming source:",e)}),r.store.dispatch.streaming.clearSourceImages())}r.store.dispatch.island.setIsFromStreaming(!1)}r.store.dispatch.island.resetOperatorBusy(),i.eventDispatch("phone-island-call-ended",{})}function d(){n.isWebRTC()?t.unpauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!1}),r.store.dispatch.player.playRemoteAudio()):r.store.getState().currentCall.paused&&s.pausePhysical(!1);i.eventDispatch("phone-island-call-unheld",{})}function p(t){return e.__awaiter(this,void 0,void 0,function(){var n,o,i;return e.__generator(this,function(e){switch(e.label){case 0:return n=r.store.getState().currentCall.conversationId,o=r.store.getState().currentUser.default_device,i=(null==o?void 0:o.id)||(null==o?void 0:o.exten),n&&i&&t?[4,s.attendedTransfer({convid:n,to:t,endpointId:i})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}})})}function v(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o,a,u,l,d,p,v,f,h,g,C,m,b;return e.__generator(this,function(e){switch(e.label){case 0:if(t=null===(b=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===b?void 0:b.currentCall,n=t.accepted,o=t.chSource,a=t.chDest,u=t.incoming,l=t.outgoing,d=t.incomingSocket,p=t.outgoingSocket,v=t.conversationId,f=r.store.getState().currentUser.default_device,h=(null==f?void 0:f.id)||(null==f?void 0:f.exten),g="",n&&(u||d)&&!c.isEmpty(o)?g=null==o?void 0:o.callerNum:n&&(l||p)&&!c.isEmpty(a)&&(g=null==a?void 0:a.callerNum),""===h||""===v||""===g)return[3,4];if(!(C={convid:null==v?void 0:v.toString(),addEndpointId:null==g?void 0:g.toString(),ownerEndpointId:null==h?void 0:h.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.startConf(C)];case 2:return e.sent()?(r.store.dispatch.currentCall.updateCurrentCall({conferencing:!0,paused:!1}),i.eventDispatch("phone-island-call-conferenced",{}),[2,!0]):[2,!1];case 3:return m=e.sent(),console.error(m),[2,!1];case 4:return[2,!1]}})})}function f(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o;return e.__generator(this,function(e){switch(e.label){case 0:if(""===(t=r.store.getState().conference.conferenceId))return[3,4];if(!(n={confId:null==t?void 0:t.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.endConf(n)];case 2:return e.sent()?(i.eventDispatch("phone-island-owner-conference-finished",{}),[2,!0]):[2,!1];case 3:return o=e.sent(),console.error(o),[2,!1];case 4:return[2,!1]}})})}var h=function(){return!!r.store.getState().island.isConferenceList},g=function(e,t){var n=r.store.getState(),s=n.currentUser.username,o=n.conference,a=o.isActive,c=o.isOwnerInside,u=o.conferenceId,d=n.users.extensions;!a&&s&&(t.conference.setConferenceActive(!0),t.conference.setConferenceStartedFrom(s));var p=d?Object.values(d).find(function(t){return t.exten===e}):null,v=(null==p?void 0:p.name)||e;t.conference.addPendingUser({id:"".concat(u,"-").concat(e),name:v,owner:!1,muted:!1,extenId:e,joinTime:Date.now()}),c&&(l(),t.conference.toggleIsOwnerInside(!1)),requestAnimationFrame(function(){setTimeout(function(){i.eventDispatch("phone-island-call-start",{number:e})},1e3)})};function C(t,r){return e.__awaiter(this,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return d(),[4,p(t)];case 1:return e.sent()&&(r.currentCall.updateCurrentCall({transferring:!0,paused:!1}),requestAnimationFrame(function(){r.player.playRemoteAudio(),i.eventDispatch("phone-island-call-transfered",{})})),[2]}})})}exports.answerIncomingCall=function(){n.isWebRTC()?t.answerWebRTC():s.answerPhysical(),r.store.dispatch.island.resetOperatorBusyCompletely()},exports.attendedTransfer=p,exports.blindTransferFunction=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o;return e.__generator(this,function(e){switch(e.label){case 0:return(o=r.store.getState().currentCall.conversationId)&&n&&t?[4,s.blindTransfer({convid:o,to:t,endpointId:n})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}})})},exports.callNumber=function(e,o,a){void 0===a&&(a={});var c="sip:".concat(e,"@").concat(o);r.store.dispatch.island.resetOperatorBusy(),r.store.dispatch.island.setOperatorBusyCalledNumber(e),n.isWebRTC()?t.callSipURI(c,a):s.callPhysical(e),i.eventDispatch("phone-island-call-started",{})},exports.clickTransferOrConference=function(t,n){return e.__awaiter(void 0,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return h()?r.store.getState().conference.isActive?[3,2]:[4,v()]:[3,3];case 1:if(!e.sent())return[2];e.label=2;case 2:return g(t,n),[3,4];case 3:C(t,n),e.label=4;case 4:return[2]}})})},exports.endConference=f,exports.forceHangupConversation=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach(function(e){s.forceHangup({convid:e,endpointId:t,endpointType:"extension"})})};for(var n in e)t(n)},exports.handleAttendedTransfer=C,exports.hangupAllExtensions=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach(function(e){s.hangupConversation({convid:e,endpointId:t})})};for(var n in e)t(n)},exports.hangupCurrentCall=l,exports.hangupCurrentPhysicalRecording=function(){s.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.isInsideConferenceList=h,exports.joinConference=function(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o,a;return e.__generator(this,function(e){switch(e.label){case 0:if(t=r.store.getState().currentUser.default_device,""===(n=(null==t?void 0:t.id)||(null==t?void 0:t.exten)))return[3,4];if(!(o={endpointId:null==n?void 0:n.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.joinMyConf(o)];case 2:return e.sent()?(i.eventDispatch("phone-island-owner-conference-enter",{}),[2,!0]):[2,!1];case 3:return a=e.sent(),console.error(a),[2,!1];case 4:return[2,!1]}})})},exports.muteAllUsersConference=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o,i,a,c,u,l,d,p,v;return e.__generator(this,function(e){switch(e.label){case 0:if(""===t)return[2,!1];if(!(o=r.store.getState().conference.usersList)||0===Object.keys(o).length)return[2,!1];e.label=1;case 1:e.trys.push([1,6,,7]),i=Object.values(o),a=n?s.unmuteUserConf:s.muteUserConf,c=0,u=i,e.label=2;case 2:return c<u.length?(l=u[c],d={confId:null==t?void 0:t.toString(),userId:null===(v=l.id)||void 0===v?void 0:v.toString()},[4,a(d)]):[3,5];case 3:e.sent()&&r.store.dispatch.conference.toggleUserMuted({extenId:l.extenId,muted:!n}),e.label=4;case 4:return c++,[3,2];case 5:return[2,!0];case 6:return p=e.sent(),console.error(p),[2,!1];case 7:return[2]}})})},exports.muteCurrentCall=function(){n.isWebRTC()?t.muteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!0}):s.mutePhysical(!0),i.eventDispatch("phone-island-call-muted",{})},exports.muteUserConference=function(t,r,n){return e.__awaiter(this,void 0,void 0,function(){var o,i;return e.__generator(this,function(e){switch(e.label){case 0:if(""===t||""===r)return[2,!1];o={confId:null==t?void 0:t.toString(),userId:null==r?void 0:r.toString()},e.label=1;case 1:return e.trys.push([1,3,,4]),[4,(n?s.unmuteUserConf:s.muteUserConf)(o)];case 2:return[2,!!e.sent()];case 3:return i=e.sent(),console.error(i),[2,!1];case 4:return[2]}})})},exports.parkCurrentCall=function(){var e,t,n,o,a=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,c=null===(o=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===o?void 0:o.conversations,u={};if(a){if(c)for(var l in c)if(c.hasOwnProperty(l)){var d=c[l];Object.keys(d).length>0&&(u={numberParkId:l,idConversation:a})}Object.keys(u).length>0&&(null==u?void 0:u.numberParkId)&&(s.parkConversation({applicantId:null==u?void 0:u.numberParkId,convid:a,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()):r.store.getState().currentCall.paused||s.pausePhysical(!0),i.eventDispatch("phone-island-call-held",{})},exports.playDtmfAudio=function(e){"*"===e&&(e="star"),"#"===e&&(e="pound"),r.store.dispatch.player.updateStartAudioPlayer({src:o.default["dtmf_".concat(e)]})},exports.recordCurrentCall=function(t){return e.__awaiter(this,void 0,void 0,function(){var n,o,i,a,c,u,l,d,p,v,f;return e.__generator(this,function(e){switch(e.label){case 0:return r.store.dispatch.currentCall.updateRecordingStatus(!t),n=null===(p=null===(d=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===d?void 0:d.currentUser)||void 0===p?void 0:p.conversations,(o=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}(n))?[3,1]:[2];case 1:switch(i=null===(v=null==o?void 0:o.id)||void 0===v?void 0:v.match(/\/(\d+)-/),a=i[1],c={convid:null===(f=null==o?void 0:o.id)||void 0===f?void 0:f.toString(),endpointId:null==a?void 0:a.toString()},u="",null==o?void 0:o.recording){case"false":u="start_record";break;case"true":u="mute_record";break;case"mute":u="unmute_record";break;default:u=""}if(!c)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,s.toggleRecord(u,c)];case 3:return e.sent(),[3,5];case 4:return l=e.sent(),console.error(l),[2,[]];case 5:return[2]}})})},exports.removeUserConference=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o,i,a=this;return e.__generator(this,function(c){switch(c.label){case 0:if(""===t||""===n)return[3,4];if(!(o={confId:null==t?void 0:t.toString(),extenId:null==n?void 0:n.toString()}))return[3,4];c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.hangupUserConf(o)];case 2:return c.sent()?(setTimeout(function(){return e.__awaiter(a,void 0,void 0,function(){var t,s;return e.__generator(this,function(e){switch(e.label){case 0:return t=r.store.getState().conference.usersList,s=Object.values(t||{}).filter(function(e){return!e.owner&&e.extenId!==n}).length,0!==s?[3,2]:[4,f()];case 1:e.sent(),e.label=2;case 2:return[2]}})})},500),[2,!0]):[2,!1];case 3:return i=c.sent(),console.error(i),[2,!1];case 4:return[2,!1]}})})},exports.startConference=v,exports.unmuteCurrentCall=function(){n.isWebRTC()?t.unmuteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!1}):s.mutePhysical(!1),i.eventDispatch("phone-island-call-unmuted",{})},exports.unpauseCurrentCall=d,exports.waitingConferenceView=g;
|
|
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"),s=require("../../services/astproxy.js"),o=require("../../static/dtmf/index.js");require("react");var i=require("../../utils/genericFunctions/eventDispatch.js"),a=require("../../services/user.js"),u=require("../../utils/streaming/videoSource.js"),c=require("../../utils/genericFunctions/isEmpty.js"),l=require("../../utils/streaming/getStreamingSourceId.js"),d=require("../streaming/streamingVideo.js");function p(){var e=r.store.getState().currentCall.streamingSourceNumber,t=r.store.getState().island.isFromStreaming;if(t&&e){var n=l.getStreamingSourceId(e),s=u.findVideoSourceByNumber(r.store.getState().streaming.videoSources,e);n&&u.isRtspVideoSource(s)?d.stopStreamingVideo(n):n&&(a.unsubscribe({id:n}).then(function(){return console.debug("Unsubscribed from streaming source: ".concat(n))}).catch(function(e){return console.error("Error unsubscribing from streaming source:",e)}),r.store.dispatch.streaming.clearSourceImages())}t&&r.store.dispatch.island.setIsFromStreaming(!1)}function v(){var e=r.store.getState().currentCall,o=e.outgoing,a=e.accepted;(o||a)&&(p(),n.isWebRTC()?t.hangup():s.hangupPhysical(),r.store.dispatch.player.stopAudioPlayer(),r.store.dispatch.currentCall.reset(),r.store.dispatch.listen.reset()),r.store.dispatch.island.resetOperatorBusy(),i.eventDispatch("phone-island-call-ended",{})}function f(){n.isWebRTC()?t.unpauseWebRTC()&&(r.store.dispatch.currentCall.updateCurrentCall({paused:!1}),r.store.dispatch.player.playRemoteAudio()):r.store.getState().currentCall.paused&&s.pausePhysical(!1);i.eventDispatch("phone-island-call-unheld",{})}function h(t){return e.__awaiter(this,void 0,void 0,function(){var n,o,i;return e.__generator(this,function(e){switch(e.label){case 0:return n=r.store.getState().currentCall.conversationId,o=r.store.getState().currentUser.default_device,i=(null==o?void 0:o.id)||(null==o?void 0:o.exten),n&&i&&t?[4,s.attendedTransfer({convid:n,to:t,endpointId:i})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}})})}function g(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o,a,u,l,d,p,v,f,h,g,C,m,b;return e.__generator(this,function(e){switch(e.label){case 0:if(t=null===(b=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===b?void 0:b.currentCall,n=t.accepted,o=t.chSource,a=t.chDest,u=t.incoming,l=t.outgoing,d=t.incomingSocket,p=t.outgoingSocket,v=t.conversationId,f=r.store.getState().currentUser.default_device,h=(null==f?void 0:f.id)||(null==f?void 0:f.exten),g="",n&&(u||d)&&!c.isEmpty(o)?g=null==o?void 0:o.callerNum:n&&(l||p)&&!c.isEmpty(a)&&(g=null==a?void 0:a.callerNum),""===h||""===v||""===g)return[3,4];if(!(C={convid:null==v?void 0:v.toString(),addEndpointId:null==g?void 0:g.toString(),ownerEndpointId:null==h?void 0:h.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.startConf(C)];case 2:return e.sent()?(r.store.dispatch.currentCall.updateCurrentCall({conferencing:!0,paused:!1}),i.eventDispatch("phone-island-call-conferenced",{}),[2,!0]):[2,!1];case 3:return m=e.sent(),console.error(m),[2,!1];case 4:return[2,!1]}})})}function C(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o;return e.__generator(this,function(e){switch(e.label){case 0:if(""===(t=r.store.getState().conference.conferenceId))return[3,4];if(!(n={confId:null==t?void 0:t.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.endConf(n)];case 2:return e.sent()?(i.eventDispatch("phone-island-owner-conference-finished",{}),[2,!0]):[2,!1];case 3:return o=e.sent(),console.error(o),[2,!1];case 4:return[2,!1]}})})}var m=function(){return!!r.store.getState().island.isConferenceList},b=function(e,t){var n=r.store.getState(),s=n.currentUser.username,o=n.conference,a=o.isActive,u=o.isOwnerInside,c=o.conferenceId,l=n.users.extensions;!a&&s&&(t.conference.setConferenceActive(!0),t.conference.setConferenceStartedFrom(s));var d=l?Object.values(l).find(function(t){return t.exten===e}):null,p=(null==d?void 0:d.name)||e;t.conference.addPendingUser({id:"".concat(c,"-").concat(e),name:p,owner:!1,muted:!1,extenId:e,joinTime:Date.now()}),u&&(v(),t.conference.toggleIsOwnerInside(!1)),requestAnimationFrame(function(){setTimeout(function(){i.eventDispatch("phone-island-call-start",{number:e})},1e3)})};function _(t,r){return e.__awaiter(this,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return f(),[4,h(t)];case 1:return e.sent()&&(r.currentCall.updateCurrentCall({transferring:!0,paused:!1}),requestAnimationFrame(function(){r.player.playRemoteAudio(),i.eventDispatch("phone-island-call-transfered",{})})),[2]}})})}exports.answerIncomingCall=function(){r.store.dispatch.currentCall.updateCurrentCall({answering:!0}),n.isWebRTC()?t.answerWebRTC():s.answerPhysical(),r.store.dispatch.island.resetOperatorBusyCompletely()},exports.attendedTransfer=h,exports.blindTransferFunction=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o;return e.__generator(this,function(e){switch(e.label){case 0:return(o=r.store.getState().currentCall.conversationId)&&n&&t?[4,s.blindTransfer({convid:o,to:t,endpointId:n})]:[3,2];case 1:return[2,e.sent()];case 2:return[2]}})})},exports.callNumber=function(e,o,a){void 0===a&&(a={});var u="sip:".concat(e,"@").concat(o);r.store.dispatch.island.resetOperatorBusy(),r.store.dispatch.island.setOperatorBusyCalledNumber(e),n.isWebRTC()?t.callSipURI(u,a):s.callPhysical(e),i.eventDispatch("phone-island-call-started",{})},exports.clickTransferOrConference=function(t,n){return e.__awaiter(void 0,void 0,void 0,function(){return e.__generator(this,function(e){switch(e.label){case 0:return m()?r.store.getState().conference.isActive?[3,2]:[4,g()]:[3,3];case 1:if(!e.sent())return[2];e.label=2;case 2:return b(t,n),[3,4];case 3:_(t,n),e.label=4;case 4:return[2]}})})},exports.endConference=C,exports.forceHangupConversation=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach(function(e){s.forceHangup({convid:e,endpointId:t,endpointType:"extension"})})};for(var n in e)t(n)},exports.handleAttendedTransfer=_,exports.hangupAllExtensions=function(){var e=r.store.getState().currentUser.conversations,t=function(t){Object.keys(e[t]).forEach(function(e){s.hangupConversation({convid:e,endpointId:t})})};for(var n in e)t(n)},exports.hangupCurrentCall=v,exports.hangupCurrentPhysicalRecording=function(){s.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.isInsideConferenceList=m,exports.joinConference=function(){return e.__awaiter(this,void 0,void 0,function(){var t,n,o,a;return e.__generator(this,function(e){switch(e.label){case 0:if(t=r.store.getState().currentUser.default_device,""===(n=(null==t?void 0:t.id)||(null==t?void 0:t.exten)))return[3,4];if(!(o={endpointId:null==n?void 0:n.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.joinMyConf(o)];case 2:return e.sent()?(i.eventDispatch("phone-island-owner-conference-enter",{}),[2,!0]):[2,!1];case 3:return a=e.sent(),console.error(a),[2,!1];case 4:return[2,!1]}})})},exports.muteAllUsersConference=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o,i,a,u,c,l,d,p,v;return e.__generator(this,function(e){switch(e.label){case 0:if(""===t)return[2,!1];if(!(o=r.store.getState().conference.usersList)||0===Object.keys(o).length)return[2,!1];e.label=1;case 1:e.trys.push([1,6,,7]),i=Object.values(o),a=n?s.unmuteUserConf:s.muteUserConf,u=0,c=i,e.label=2;case 2:return u<c.length?(l=c[u],d={confId:null==t?void 0:t.toString(),userId:null===(v=l.id)||void 0===v?void 0:v.toString()},[4,a(d)]):[3,5];case 3:e.sent()&&r.store.dispatch.conference.toggleUserMuted({extenId:l.extenId,muted:!n}),e.label=4;case 4:return u++,[3,2];case 5:return[2,!0];case 6:return p=e.sent(),console.error(p),[2,!1];case 7:return[2]}})})},exports.muteCurrentCall=function(){n.isWebRTC()?t.muteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!0}):s.mutePhysical(!0),i.eventDispatch("phone-island-call-muted",{})},exports.muteUserConference=function(t,r,n){return e.__awaiter(this,void 0,void 0,function(){var o,i;return e.__generator(this,function(e){switch(e.label){case 0:if(""===t||""===r)return[2,!1];o={confId:null==t?void 0:t.toString(),userId:null==r?void 0:r.toString()},e.label=1;case 1:return e.trys.push([1,3,,4]),[4,(n?s.unmuteUserConf:s.muteUserConf)(o)];case 2:return[2,!!e.sent()];case 3:return i=e.sent(),console.error(i),[2,!1];case 4:return[2]}})})},exports.parkCurrentCall=function(){var e,t,n,o,a=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,u=null===(o=null===(n=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===n?void 0:n.currentUser)||void 0===o?void 0:o.conversations,c={};if(a){if(u)for(var l in u)if(u.hasOwnProperty(l)){var d=u[l];Object.keys(d).length>0&&(c={numberParkId:l,idConversation:a})}Object.keys(c).length>0&&(null==c?void 0:c.numberParkId)&&(s.parkConversation({applicantId:null==c?void 0:c.numberParkId,convid:a,endpointId:null==c?void 0:c.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()):r.store.getState().currentCall.paused||s.pausePhysical(!0),i.eventDispatch("phone-island-call-held",{})},exports.playDtmfAudio=function(e){"*"===e&&(e="star"),"#"===e&&(e="pound"),r.store.dispatch.player.updateStartAudioPlayer({src:o.default["dtmf_".concat(e)]})},exports.recordCurrentCall=function(t){return e.__awaiter(this,void 0,void 0,function(){var n,o,i,a,u,c,l,d,p,v,f;return e.__generator(this,function(e){switch(e.label){case 0:return r.store.dispatch.currentCall.updateRecordingStatus(!t),n=null===(p=null===(d=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===d?void 0:d.currentUser)||void 0===p?void 0:p.conversations,(o=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}(n))?[3,1]:[2];case 1:switch(i=null===(v=null==o?void 0:o.id)||void 0===v?void 0:v.match(/\/(\d+)-/),a=i[1],u={convid:null===(f=null==o?void 0:o.id)||void 0===f?void 0:f.toString(),endpointId:null==a?void 0:a.toString()},c="",null==o?void 0:o.recording){case"false":c="start_record";break;case"true":c="mute_record";break;case"mute":c="unmute_record";break;default:c=""}if(!u)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,s.toggleRecord(c,u)];case 3:return e.sent(),[3,5];case 4:return l=e.sent(),console.error(l),[2,[]];case 5:return[2]}})})},exports.releaseStreamingSource=p,exports.removeUserConference=function(t,n){return e.__awaiter(this,void 0,void 0,function(){var o,i,a=this;return e.__generator(this,function(u){switch(u.label){case 0:if(""===t||""===n)return[3,4];if(!(o={confId:null==t?void 0:t.toString(),extenId:null==n?void 0:n.toString()}))return[3,4];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,s.hangupUserConf(o)];case 2:return u.sent()?(setTimeout(function(){return e.__awaiter(a,void 0,void 0,function(){var t,s;return e.__generator(this,function(e){switch(e.label){case 0:return t=r.store.getState().conference.usersList,s=Object.values(t||{}).filter(function(e){return!e.owner&&e.extenId!==n}).length,0!==s?[3,2]:[4,C()];case 1:e.sent(),e.label=2;case 2:return[2]}})})},500),[2,!0]):[2,!1];case 3:return i=u.sent(),console.error(i),[2,!1];case 4:return[2,!1]}})})},exports.startConference=g,exports.unmuteCurrentCall=function(){n.isWebRTC()?t.unmuteWebRTC()&&r.store.dispatch.currentCall.updateCurrentCall({muted:!1}):s.mutePhysical(!1),i.eventDispatch("phone-island-call-unmuted",{})},exports.unpauseCurrentCall=f,exports.waitingConferenceView=b;
|
|
2
2
|
//# sourceMappingURL=call.js.map
|