@nethesis/phone-island 1.0.14-dev.1 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.js +1 -1
- package/dist/App.js.map +1 -1
- package/dist/components/AlertGuard.js +1 -1
- package/dist/components/AlertGuard.js.map +1 -1
- package/dist/components/AlertView/index.js +1 -1
- package/dist/components/AlertView/index.js.map +1 -1
- package/dist/components/AudioBars.js +1 -1
- package/dist/components/AudioBars.js.map +1 -1
- package/dist/components/AudioPlayerView/Avatar.js +1 -1
- package/dist/components/AudioPlayerView/Avatar.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/AvatarGroup.js +1 -1
- package/dist/components/AvatarGroup.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/Avatar.js +1 -1
- package/dist/components/CallView/Avatar.js.map +1 -1
- package/dist/components/CallView/BackCall.js +1 -1
- package/dist/components/CallView/BackCall.js.map +1 -1
- package/dist/components/CallView/DisplayName.js +1 -1
- package/dist/components/CallView/DisplayName.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/Timer.js +1 -1
- package/dist/components/CallView/Timer.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/ConferenceUsersList.js +1 -1
- package/dist/components/ConferenceView/ConferenceUsersList.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/ListAvatar.js +1 -1
- package/dist/components/ContactView/ListAvatar.js.map +1 -1
- package/dist/components/ContactView/SelectContactNumberView.js +1 -1
- package/dist/components/ContactView/SelectContactNumberView.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 +1 -1
- package/dist/components/CustomThemedTooltip.js.map +1 -1
- package/dist/components/Dropdown.js +1 -1
- package/dist/components/Dropdown.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/OperatorBusyView/index.js +1 -1
- package/dist/components/OperatorBusyView/index.js.map +1 -1
- package/dist/components/PhysicalRecorderView/PhysicalRecordingTimer.js +1 -1
- package/dist/components/PhysicalRecorderView/PhysicalRecordingTimer.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/RecorderView/Bar.js +1 -1
- package/dist/components/RecorderView/Bar.js.map +1 -1
- package/dist/components/RecorderView/BarsGroup.js +1 -1
- package/dist/components/RecorderView/BarsGroup.js.map +1 -1
- package/dist/components/RecorderView/Timer.js +1 -1
- package/dist/components/RecorderView/Timer.js.map +1 -1
- package/dist/components/RecorderView/index.js +1 -1
- package/dist/components/RecorderView/index.js.map +1 -1
- package/dist/components/RestAPI.js +1 -1
- package/dist/components/RestAPI.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/SettingsHeader.js +1 -1
- package/dist/components/SettingsView/SettingsHeader.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/SettingsView/index.js +1 -1
- package/dist/components/SettingsView/index.js.map +1 -1
- package/dist/components/SideView/SideView.js +1 -1
- package/dist/components/SideView/SideView.js.map +1 -1
- package/dist/components/SideView/components/SideViewButton.js +1 -1
- package/dist/components/SideView/components/SideViewButton.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/SwitchDeviceView/index.js +1 -1
- package/dist/components/SwitchDeviceView/index.js.map +1 -1
- package/dist/components/SwitchInputView/DropdownContent.js +1 -1
- package/dist/components/SwitchInputView/DropdownContent.js.map +1 -1
- package/dist/components/TextScroll.js +1 -1
- package/dist/components/TextScroll.js.map +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/ViewsTransition.js +1 -1
- package/dist/components/ViewsTransition.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/lib/avatars/avatars.js +1 -1
- package/dist/lib/avatars/avatars.js.map +1 -1
- package/dist/lib/devices/devices.js +1 -1
- package/dist/lib/devices/devices.js.map +1 -1
- package/dist/lib/phone/audio.js +1 -1
- package/dist/lib/phone/audio.js.map +1 -1
- package/dist/lib/phone/call.js +1 -1
- package/dist/lib/phone/call.js.map +1 -1
- package/dist/lib/phone/queue.js +1 -1
- package/dist/lib/phone/queue.js.map +1 -1
- package/dist/lib/player/audio.js +1 -1
- package/dist/lib/player/audio.js.map +1 -1
- package/dist/lib/user/extensions.js +1 -1
- package/dist/lib/user/extensions.js.map +1 -1
- package/dist/lib/webrtc/janus.js +1 -1
- package/dist/lib/webrtc/janus.js.map +1 -1
- package/dist/lib/webrtc/messages.js +1 -1
- package/dist/lib/webrtc/messages.js.map +1 -1
- package/dist/models/conference.js +1 -1
- package/dist/models/conference.js.map +1 -1
- package/dist/models/currentCall.js +1 -1
- package/dist/models/currentCall.js.map +1 -1
- package/dist/models/mediaDevices.js +1 -1
- package/dist/models/mediaDevices.js.map +1 -1
- package/dist/models/player.js +1 -1
- package/dist/models/player.js.map +1 -1
- package/dist/models/queue.js +1 -1
- package/dist/models/queue.js.map +1 -1
- package/dist/models/ringtones.js +1 -1
- package/dist/models/ringtones.js.map +1 -1
- package/dist/models/streaming.js +1 -1
- package/dist/models/streaming.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/objectSpread2.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -1
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -1
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +1 -1
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js.map +1 -1
- package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js +1 -1
- package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js.map +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs.js.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs.js +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs.js.map +1 -1
- package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.mjs.js +1 -1
- package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.mjs.js.map +1 -1
- package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js +1 -1
- package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-slot.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-slot.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-text-value.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-text-value.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/internal/disabled.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/internal/id.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/machine.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/machine.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/react-glue.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/react-glue.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/bugs.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/default-map.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/element-movement.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/element-movement.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/env.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/get-text-value.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/get-text-value.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/match.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/owner.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/render.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/store.js +1 -1
- package/dist/node_modules/@headlessui/react/dist/utils/store.js.map +1 -1
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js +1 -1
- package/dist/node_modules/@react-aria/focus/dist/FocusScope.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js +1 -1
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.mjs.js +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs.js +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs.js +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useHover.mjs.js +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/useHover.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/utils.mjs.js +1 -1
- package/dist/node_modules/@react-aria/interactions/dist/utils.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/domHelpers.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/platform.mjs.js +1 -1
- package/dist/node_modules/@react-aria/utils/dist/platform.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/runAfterTransition.mjs.js +1 -1
- package/dist/node_modules/@react-aria/utils/dist/runAfterTransition.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs.js.map +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useId.mjs.js +1 -1
- package/dist/node_modules/@react-aria/utils/dist/useId.mjs.js.map +1 -1
- package/dist/node_modules/@rematch/core/dist/core.esm.js +1 -1
- package/dist/node_modules/@rematch/core/dist/core.esm.js.map +1 -1
- package/dist/node_modules/@rematch/immer/dist/immer.esm.js +1 -1
- package/dist/node_modules/@rematch/immer/dist/immer.esm.js.map +1 -1
- package/dist/node_modules/@rematch/select/dist/select.esm.js +1 -1
- package/dist/node_modules/@rematch/select/dist/select.esm.js.map +1 -1
- package/dist/node_modules/bowser/es5.js +1 -1
- package/dist/node_modules/bowser/es5.js.map +1 -1
- package/dist/node_modules/ebml-block/index.js +1 -1
- package/dist/node_modules/ebml-block/index.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/contrib/parseuri.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/contrib/parseuri.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/socket.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/socket.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/polling-xhr.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/polling.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/polling.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/websocket.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/websocket.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/transports/webtransport.js.map +1 -1
- package/dist/node_modules/engine.io-client/build/esm/util.js +1 -1
- package/dist/node_modules/engine.io-client/build/esm/util.js.map +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/commons.js +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/commons.js.map +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js.map +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/decodePacket.browser.js.map +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js.map +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/index.js +1 -1
- package/dist/node_modules/engine.io-parser/build/esm/index.js.map +1 -1
- package/dist/node_modules/events/events.js +1 -1
- package/dist/node_modules/events/events.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/press.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.mjs.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.mjs.js.map +1 -1
- package/dist/node_modules/i18next/dist/esm/i18next.js +1 -1
- package/dist/node_modules/i18next/dist/esm/i18next.js.map +1 -1
- package/dist/node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js +1 -1
- package/dist/node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js.map +1 -1
- package/dist/node_modules/immer/dist/immer.esm.mjs.js +1 -1
- package/dist/node_modules/immer/dist/immer.esm.mjs.js.map +1 -1
- package/dist/node_modules/int64-buffer/int64-buffer.js.map +1 -1
- package/dist/node_modules/js-base64/base64.mjs.js +1 -1
- package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
- package/dist/node_modules/mic-check/lib/index.js.map +1 -1
- package/dist/node_modules/mic-check/lib/requestMediaPermissions.js +1 -1
- package/dist/node_modules/mic-check/lib/requestMediaPermissions.js.map +1 -1
- package/dist/node_modules/moment/moment.js +1 -1
- package/dist/node_modules/moment/moment.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/delay.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/index.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.mjs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs.js +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs.js +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.mjs.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/errors.mjs.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js +1 -1
- package/dist/node_modules/motion-utils/dist/es/pipe.mjs.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/progress.mjs.js.map +1 -1
- package/dist/node_modules/object-assign/index.js +1 -1
- package/dist/node_modules/object-assign/index.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +1 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/context.js +1 -1
- package/dist/node_modules/react-i18next/dist/es/context.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/defaults.js +1 -1
- package/dist/node_modules/react-i18next/dist/es/defaults.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js +1 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/utils.js +1 -1
- package/dist/node_modules/react-i18next/dist/es/utils.js.map +1 -1
- package/dist/node_modules/react-moment/dist/index.js +1 -1
- package/dist/node_modules/react-moment/dist/index.js.map +1 -1
- package/dist/node_modules/react-redux/es/components/Context.js +1 -1
- package/dist/node_modules/react-redux/es/components/Context.js.map +1 -1
- package/dist/node_modules/react-redux/es/components/Provider.js +1 -1
- package/dist/node_modules/react-redux/es/components/Provider.js.map +1 -1
- package/dist/node_modules/react-redux/es/hooks/useSelector.js.map +1 -1
- package/dist/node_modules/react-redux/es/utils/Subscription.js +1 -1
- package/dist/node_modules/react-redux/es/utils/Subscription.js.map +1 -1
- package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js +1 -1
- package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/node_modules/react-redux/es/utils/useSyncExternalStore.js.map +1 -1
- package/dist/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/react-redux/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js +1 -1
- package/dist/node_modules/react-tooltip/dist/react-tooltip.min.mjs.js.map +1 -1
- package/dist/node_modules/redux/es/redux.js +1 -1
- package/dist/node_modules/redux/es/redux.js.map +1 -1
- package/dist/node_modules/reselect/es/defaultMemoize.js +1 -1
- package/dist/node_modules/reselect/es/defaultMemoize.js.map +1 -1
- package/dist/node_modules/reselect/es/index.js +1 -1
- package/dist/node_modules/reselect/es/index.js.map +1 -1
- package/dist/node_modules/sdp/sdp.js +1 -1
- package/dist/node_modules/sdp/sdp.js.map +1 -1
- package/dist/node_modules/socket.io-client/build/esm/manager.js +1 -1
- package/dist/node_modules/socket.io-client/build/esm/manager.js.map +1 -1
- package/dist/node_modules/socket.io-client/build/esm/socket.js +1 -1
- package/dist/node_modules/socket.io-client/build/esm/socket.js.map +1 -1
- package/dist/node_modules/socket.io-parser/build/esm/is-binary.js +1 -1
- package/dist/node_modules/socket.io-parser/build/esm/is-binary.js.map +1 -1
- package/dist/node_modules/styled-components/dist/styled-components.browser.esm.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 +2 -2
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +2 -2
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +1 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js.map +1 -1
- package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLDecoder.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLDecoder.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLEncoder.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLEncoder.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLReader.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/EBMLReader.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/ebmlID.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/index.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/tools-ebml.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/tools-ebml.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/tools.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/ebml/tools.js.map +1 -1
- package/dist/node_modules/webm-duration-fix/lib/index.js +1 -1
- package/dist/node_modules/webm-duration-fix/lib/index.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/common_shim.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/common_shim.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js.map +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/utils.js +1 -1
- package/dist/node_modules/webrtc-adapter/src/js/utils.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/services/astproxy.js +1 -1
- package/dist/services/astproxy.js.map +1 -1
- package/dist/services/history_call.js +1 -1
- package/dist/services/history_call.js.map +1 -1
- package/dist/services/offhour.js +1 -1
- package/dist/services/offhour.js.map +1 -1
- package/dist/services/phonebook.js +1 -1
- package/dist/services/phonebook.js.map +1 -1
- package/dist/services/user.js +1 -1
- package/dist/services/user.js.map +1 -1
- package/dist/services/voicemail.js +1 -1
- package/dist/services/voicemail.js.map +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/styles/Island.styles.js +1 -1
- package/dist/styles/Island.styles.js.map +1 -1
- package/dist/utils/customHooks/useCommittedRef.js +1 -1
- package/dist/utils/customHooks/useCommittedRef.js.map +1 -1
- package/dist/utils/customHooks/useEventCallback.js +1 -1
- package/dist/utils/customHooks/useEventCallback.js.map +1 -1
- package/dist/utils/customHooks/useEventListener.js +1 -1
- package/dist/utils/customHooks/useEventListener.js.map +1 -1
- package/dist/utils/customHooks/useIntersectionObserver.js +1 -1
- package/dist/utils/customHooks/useIntersectionObserver.js.map +1 -1
- package/dist/utils/customHooks/useLocalStorage.js +1 -1
- package/dist/utils/customHooks/useLocalStorage.js.map +1 -1
- package/dist/utils/customHooks/useLongPress.js +1 -1
- package/dist/utils/customHooks/useLongPress.js.map +1 -1
- package/dist/utils/deviceUtils.js +1 -1
- package/dist/utils/deviceUtils.js.map +1 -1
- package/dist/utils/genericFunctions/checkConnection.js +1 -1
- package/dist/utils/genericFunctions/checkConnection.js.map +1 -1
- package/dist/utils/genericFunctions/isBackCallVisible.js +1 -1
- package/dist/utils/genericFunctions/isBackCallVisible.js.map +1 -1
- package/dist/utils/genericFunctions/withTimeout.js +1 -1
- package/dist/utils/genericFunctions/withTimeout.js.map +1 -1
- package/dist/utils/streaming/getStreamingSourceId.js +1 -1
- package/dist/utils/streaming/getStreamingSourceId.js.map +1 -1
- package/dist/utils/streaming/isFromStreaming.js +1 -1
- package/dist/utils/streaming/isFromStreaming.js.map +1 -1
- package/dist/utils/streaming/streamingUtils.js +1 -1
- package/dist/utils/streaming/streamingUtils.js.map +1 -1
- package/dist/workers/wake_up.js +1 -1
- package/dist/workers/wake_up.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),i=require("../utils/customHooks/useEventListener.js"),r=require("../utils/genericFunctions/eventDispatch.js");require("../node_modules/tslib/tslib.es6.js");var t=require("../store/index.js");require("../node_modules/react-redux/es/index.js");var n=require("../node_modules/react-redux/es/hooks/useDispatch.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=s(e);exports.RecorderEvents=function(){var e=n.useDispatch();return i.useEventListener("phone-island-recording-open",
|
|
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");var t=require("../store/index.js");require("../node_modules/react-redux/es/index.js");var n=require("../node_modules/react-redux/es/hooks/useDispatch.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=s(e);exports.RecorderEvents=function(){var e=n.useDispatch();return i.useEventListener("phone-island-recording-open",function(i){e.island.setIslandView("recorder"),r.eventDispatch("phone-island-recording-opened",{})}),i.useEventListener("phone-island-physical-recording-view",function(i){e.island.setIslandView("physicalPhoneRecorder"),r.eventDispatch("phone-island-physical-recording-opened",{}),setTimeout(function(){r.eventDispatch("phone-island-physical-recording-open",{})},500)}),o.default.createElement(o.default.Fragment,null)},exports.dispatchPhysicalRecordingSave=function(){var e=t.store.getState().physicalRecorder.tempFileName;console.log("dispatchPhysicalRecordingSave",e),r.eventDispatch("phone-island-physical-recording-saved",{tempFileName:e})},exports.dispatchRecordingSave=function(){var e,i,n=t.store.getState().recorder.tempFileName,s=(null===(i=null===(e=t.store.getState().player.audioPlayer)||void 0===e?void 0:e.current)||void 0===i?void 0:i.src)||"";r.eventDispatch("phone-island-recording-saved",{tempFileName:n,audioFileURL:s})};
|
|
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 console.log('dispatchPhysicalRecordingSave', 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","console","log","recorder","audioFileURL","_a","player","audioPlayer","current","src"],"mappings":"4fASkC,WAChC,IAAMA,EAAWC,EAAAA,cAyBjB,OAlBAC,mBAAiB
|
|
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 console.log('dispatchPhysicalRecordingSave', 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","console","log","recorder","audioFileURL","_a","player","audioPlayer","current","src"],"mappings":"4fASkC,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,aACvDI,QAAQC,IAAI,gCAAiCL,GAC7CH,EAAAA,cAAc,wCAAyC,CACrDG,aAAYA,GAEhB,mDAjBQA,EAAeC,EAAKA,MAACC,WAAWI,SAASN,aACzCO,aAAoD,QAArCC,EAAAP,EAAAA,MAAMC,WAAWO,OAAOC,mBAAa,IAAAF,OAAA,EAAAA,EAAAG,8BAASC,MAAO,GAC1Ef,EAAAA,cAAc,+BAAgC,CAC5CG,aAAYA,EACZO,aAAYA,GAEhB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("../../store/index.js"),r=require("../storage/local_storage.js"),a=require("../../services/user.js"),s=864e5;exports.AVATARS_EXPIRATION_MILLIS=s,exports.getInitials=function(e){var t=e.split(" ").map(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("../../store/index.js"),r=require("../storage/local_storage.js"),a=require("../../services/user.js"),s=864e5;exports.AVATARS_EXPIRATION_MILLIS=s,exports.getInitials=function(e){var t=e.split(" ").map(function(e){return e.charAt(0)}).join("");return t.length>3?t.slice(0,2).concat(t.charAt(t.length-1)):t},exports.retrieveAvatars=function(n){return e.__awaiter(this,void 0,void 0,function(){var i,o,u;return e.__generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),(i=r.loadCache("operatorsAvatars",n))&&Object.values(i).length>0?(t.store.dispatch.avatars.updateAvatars(i),[3,3]):[3,1];case 1:return[4,a.getAllAvatars()];case 2:(o=e.sent())&&Object.values(o).length>0&&(u=(new Date).getTime()+s,r.saveCache("operatorsAvatars",o,n,u),t.store.dispatch.avatars.updateAvatars(o)),e.label=3;case 3:return[3,5];case 4:return e.sent(),[3,5];case 5:return[2]}})})};
|
|
2
2
|
//# sourceMappingURL=avatars.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatars.js","sources":["../../../src/lib/avatars/avatars.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { AvatarsTypes } from '../../types'\nimport { store } from '../../store'\nimport { loadCache, saveCache } from '../storage/local_storage'\nimport { getAllAvatars } from '../../services/user'\n\nexport const AVATARS_EXPIRATION_MILLIS = 24 * 60 * 60 * 1000 // 24 hours\n\n/**\n * Get avatars from localstorage or request it from the api\n * ... other applications like nethvoice-cti could use or\n * ... request an avatars object\n *\n * @param username The username of the current user\n */\nexport async function retrieveAvatars(username: string) {\n try {\n let avatars: AvatarsTypes | undefined = loadCache('operatorsAvatars', username)\n if (avatars && Object.values(avatars).length > 0) {\n // Avatars already are in localstorage\n store.dispatch.avatars.updateAvatars(avatars)\n } else {\n // Request avatars to the API\n const avatarsResponse: AvatarsTypes | undefined = await getAllAvatars()\n if (avatarsResponse && Object.values(avatarsResponse).length > 0) {\n const expiration: number = new Date().getTime() + AVATARS_EXPIRATION_MILLIS\n // Update avatars in localstorage for performances and for other applications\n saveCache('operatorsAvatars', avatarsResponse, username, expiration)\n // Update avatars store\n store.dispatch.avatars.updateAvatars(avatarsResponse)\n }\n }\n } catch (error) {}\n}\n\nexport const getInitials = (displayName: string) => {\n const initials = displayName\n .split(' ')\n .map((name) => name.charAt(0))\n .join('')\n\n // Maximum of 3 initials\n if (initials.length > 3) {\n return initials.slice(0, 2).concat(initials.charAt(initials.length - 1))\n }\n return initials\n}\n"],"names":["AVATARS_EXPIRATION_MILLIS","displayName","initials","split","map","name","charAt","join","length","slice","concat","username","avatars","loadCache","Object","values","store","dispatch","updateAvatars","getAllAvatars","avatarsResponse","_a","sent","expiration","Date","getTime","saveCache"],"mappings":"0OAQaA,EAA4B,8DA6Bd,SAACC,GAC1B,IAAMC,EAAWD,EACdE,MAAM,KACNC,
|
|
1
|
+
{"version":3,"file":"avatars.js","sources":["../../../src/lib/avatars/avatars.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { AvatarsTypes } from '../../types'\nimport { store } from '../../store'\nimport { loadCache, saveCache } from '../storage/local_storage'\nimport { getAllAvatars } from '../../services/user'\n\nexport const AVATARS_EXPIRATION_MILLIS = 24 * 60 * 60 * 1000 // 24 hours\n\n/**\n * Get avatars from localstorage or request it from the api\n * ... other applications like nethvoice-cti could use or\n * ... request an avatars object\n *\n * @param username The username of the current user\n */\nexport async function retrieveAvatars(username: string) {\n try {\n let avatars: AvatarsTypes | undefined = loadCache('operatorsAvatars', username)\n if (avatars && Object.values(avatars).length > 0) {\n // Avatars already are in localstorage\n store.dispatch.avatars.updateAvatars(avatars)\n } else {\n // Request avatars to the API\n const avatarsResponse: AvatarsTypes | undefined = await getAllAvatars()\n if (avatarsResponse && Object.values(avatarsResponse).length > 0) {\n const expiration: number = new Date().getTime() + AVATARS_EXPIRATION_MILLIS\n // Update avatars in localstorage for performances and for other applications\n saveCache('operatorsAvatars', avatarsResponse, username, expiration)\n // Update avatars store\n store.dispatch.avatars.updateAvatars(avatarsResponse)\n }\n }\n } catch (error) {}\n}\n\nexport const getInitials = (displayName: string) => {\n const initials = displayName\n .split(' ')\n .map((name) => name.charAt(0))\n .join('')\n\n // Maximum of 3 initials\n if (initials.length > 3) {\n return initials.slice(0, 2).concat(initials.charAt(initials.length - 1))\n }\n return initials\n}\n"],"names":["AVATARS_EXPIRATION_MILLIS","displayName","initials","split","map","name","charAt","join","length","slice","concat","username","avatars","loadCache","Object","values","store","dispatch","updateAvatars","getAllAvatars","avatarsResponse","_a","sent","expiration","Date","getTime","saveCache"],"mappings":"0OAQaA,EAA4B,8DA6Bd,SAACC,GAC1B,IAAMC,EAAWD,EACdE,MAAM,KACNC,IAAI,SAACC,GAAS,OAAAA,EAAKC,OAAO,KAC1BC,KAAK,IAGR,OAAIL,EAASM,OAAS,EACbN,EAASO,MAAM,EAAG,GAAGC,OAAOR,EAASI,OAAOJ,EAASM,OAAS,IAEhEN,CACT,0BA/BM,SAAgCS,2HAG9B,8BADAC,EAAoCC,EAASA,UAAC,mBAAoBF,KACvDG,OAAOC,OAAOH,GAASJ,OAAS,GAE7CQ,EAAAA,MAAMC,SAASL,QAAQM,cAAcN,UAFS,CAAA,EAAA,UAKI,MAAM,CAAA,EAAAO,EAAAA,yBAAlDC,EAA4CC,EAAqBC,SAChDR,OAAOC,OAAOK,GAAiBZ,OAAS,IACvDe,GAAqB,IAAIC,MAAOC,UAAYzB,EAElD0B,EAAAA,UAAU,mBAAoBN,EAAiBT,EAAUY,GAEzDP,EAAAA,MAAMC,SAASL,QAAQM,cAAcE,mFAI5C"}
|
|
@@ -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(
|
|
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),e.kind,"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 MediaPermissionsError,\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'\nimport { eventDispatch} from '../../utils/genericFunctions/eventDispatch'\n\nconst Janus: JanusTypes = JanusLib\n\nexport const getSupportedDevices = function (origCallback: () => void) {\n let hasMicrophone = false\n let hasSpeakers = 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 === 'audiooutput') {\n hasSpeakers = 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":"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"}
|
|
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 MediaPermissionsError,\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'\nimport { eventDispatch} from '../../utils/genericFunctions/eventDispatch'\n\nconst Janus: JanusTypes = JanusLib\n\nexport const getSupportedDevices = function (origCallback: () => void) {\n let hasMicrophone = false\n let hasSpeakers = 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 === 'audiooutput') {\n hasSpeakers = 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":"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"}
|
package/dist/lib/phone/audio.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("../../store/index.js");exports.updateAudioPlayerSource=function(t){return e.__awaiter(this,void 0,void 0,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("../../store/index.js");exports.updateAudioPlayerSource=function(t){return e.__awaiter(this,void 0,void 0,function(){return e.__generator(this,function(e){return[2,new Promise(function(e,o){var a,i,n,d;try{null===(i=null===(a=r.store.getState().player.audioPlayer)||void 0===a?void 0:a.current)||void 0===i||i.addEventListener("canplaythrough",function t(){var o,a;null===(a=null===(o=r.store.getState().player.audioPlayer)||void 0===o?void 0:o.current)||void 0===a||a.removeEventListener("canplaythrough",t),e(!0)}),null===(d=null===(n=r.store.getState().player.audioPlayer)||void 0===n?void 0:n.current)||void 0===d||d.addEventListener("loadedmetadata",function e(){var t,o,a,i,n=null===(o=null===(t=r.store.getState().player.audioPlayer)||void 0===t?void 0:t.current)||void 0===o?void 0:o.duration;n&&r.store.dispatch.player.updateAudioPlayerTrackDuration(n),null===(i=null===(a=r.store.getState().player.audioPlayer)||void 0===a?void 0:a.current)||void 0===i||i.removeEventListener("loadedmetadata",e)}),r.store.dispatch.player.updateAudioPlayerSrc(t)}catch(e){console.error(e),o(e)}})]})})};
|
|
2
2
|
//# sourceMappingURL=audio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sources":["../../../src/lib/phone/audio.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../../store'\n\n/**\n * Manages the audio update action\n */\nexport async function updateAudioPlayerSource(payload: string) {\n return new Promise((resolve, reject) => {\n function canPlayCb() {\n store.getState().player.audioPlayer?.current?.removeEventListener('canplaythrough', canPlayCb)\n resolve(true)\n }\n function loadedMetadata() {\n const trackDuration = store.getState().player.audioPlayer?.current?.duration\n trackDuration && store.dispatch.player.updateAudioPlayerTrackDuration(trackDuration)\n store\n .getState()\n .player.audioPlayer?.current?.removeEventListener('loadedmetadata', loadedMetadata)\n }\n try {\n // Event handlers must be set before updating the audio source of the element\n // Add event listener for canplaythrough event\n store.getState().player.audioPlayer?.current?.addEventListener('canplaythrough', canPlayCb)\n // Add event listener for onloadedmetadata event\n store\n .getState()\n .player.audioPlayer?.current?.addEventListener('loadedmetadata', loadedMetadata)\n // Update the audio player source\n store.dispatch.player.updateAudioPlayerSrc(payload)\n } catch (err) {\n console.error(err)\n reject(err)\n }\n })\n}\n"],"names":["payload","Promise","resolve","reject","_b","store","getState","player","audioPlayer","_a","current","addEventListener","canPlayCb","removeEventListener","_d","_c","loadedMetadata","trackDuration","duration","dispatch","updateAudioPlayerTrackDuration","updateAudioPlayerSrc","err","console","error"],"mappings":"6LAQM,SAAwCA,
|
|
1
|
+
{"version":3,"file":"audio.js","sources":["../../../src/lib/phone/audio.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../../store'\n\n/**\n * Manages the audio update action\n */\nexport async function updateAudioPlayerSource(payload: string) {\n return new Promise((resolve, reject) => {\n function canPlayCb() {\n store.getState().player.audioPlayer?.current?.removeEventListener('canplaythrough', canPlayCb)\n resolve(true)\n }\n function loadedMetadata() {\n const trackDuration = store.getState().player.audioPlayer?.current?.duration\n trackDuration && store.dispatch.player.updateAudioPlayerTrackDuration(trackDuration)\n store\n .getState()\n .player.audioPlayer?.current?.removeEventListener('loadedmetadata', loadedMetadata)\n }\n try {\n // Event handlers must be set before updating the audio source of the element\n // Add event listener for canplaythrough event\n store.getState().player.audioPlayer?.current?.addEventListener('canplaythrough', canPlayCb)\n // Add event listener for onloadedmetadata event\n store\n .getState()\n .player.audioPlayer?.current?.addEventListener('loadedmetadata', loadedMetadata)\n // Update the audio player source\n store.dispatch.player.updateAudioPlayerSrc(payload)\n } catch (err) {\n console.error(err)\n reject(err)\n }\n })\n}\n"],"names":["payload","Promise","resolve","reject","_b","store","getState","player","audioPlayer","_a","current","addEventListener","canPlayCb","removeEventListener","_d","_c","loadedMetadata","trackDuration","duration","dispatch","updateAudioPlayerTrackDuration","updateAudioPlayerSrc","err","console","error"],"mappings":"6LAQM,SAAwCA,0FAC5C,MAAA,CAAA,EAAO,IAAIC,QAAQ,SAACC,EAASC,eAY3B,YAGEC,EAAqC,UAArCC,EAAAA,MAAMC,WAAWC,OAAOC,mBAAa,IAAAC,OAAA,EAAAA,EAAAC,wBAASC,iBAAiB,iBAdjE,SAASC,oBACPR,EAAqC,UAArCC,EAAAA,MAAMC,WAAWC,OAAOC,mBAAa,IAAAC,OAAA,EAAAA,EAAAC,wBAASG,oBAAoB,iBAAkBD,GACpFV,GAAQ,EACT,GAe+B,QAF9BY,EAEqB,UAFrBT,EAAKA,MACFC,WACAC,OAAOC,mBAAW,IAAAO,OAAA,EAAAA,EAAEL,eAAO,IAAAI,GAAAA,EAAEH,iBAAiB,iBAdnD,SAASK,gBACDC,EAA4D,QAA5Cb,EAAmC,QAAnCK,EAAAJ,EAAAA,MAAMC,WAAWC,OAAOC,mBAAW,IAAAC,OAAA,EAAAA,EAAEC,eAAO,IAAAN,OAAA,EAAAA,EAAEc,SACpED,GAAiBZ,EAAKA,MAACc,SAASZ,OAAOa,+BAA+BH,GAGxC,QAF9BH,EAEqB,UAFrBT,EAAKA,MACFC,WACAC,OAAOC,mBAAW,IAAAO,OAAA,EAAAA,EAAEL,eAAO,IAAAI,GAAAA,EAAED,oBAAoB,iBAAkBG,EACvE,GAUCX,EAAAA,MAAMc,SAASZ,OAAOc,qBAAqBrB,EAC5C,CAAC,MAAOsB,GACPC,QAAQC,MAAMF,GACdnB,EAAOmB,EACR,CACF,OACF"}
|
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()):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(){var t;return e.__awaiter(this,void 0,void 0,(function(){var 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(n=null===(t=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===t?void 0:t.currentCall,o=n.accepted,a=n.chSource,u=n.chDest,l=n.incoming,d=n.outgoing,p=n.incomingSocket,v=n.outgoingSocket,f=n.conversationId,h=r.store.getState().currentUser.default_device,g=(null==h?void 0:h.id)||(null==h?void 0:h.exten),C="",o&&(l||p)&&!c.isEmpty(a)?C=null==a?void 0:a.callerNum:o&&(d||v)&&!c.isEmpty(u)&&(C=null==u?void 0:u.callerNum),""===g||""===f||""===C)return[3,4];if(!(m={convid:null==f?void 0:f.toString(),addEndpointId:null==C?void 0:C.toString(),ownerEndpointId:null==g?void 0:g.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.startConf(m)];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 b=e.sent(),console.error(b),[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){var a="sip:".concat(e,"@").concat(o);r.store.dispatch.island.resetOperatorBusy(),r.store.dispatch.island.setOperatorBusyCalledNumber(e),n.isWebRTC()?t.callSipURI(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){var o;return e.__awaiter(this,void 0,void 0,(function(){var 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(!(i=r.store.getState().conference.usersList)||0===Object.keys(i).length)return[2,!1];e.label=1;case 1:e.trys.push([1,6,,7]),a=Object.values(i),c=n?s.unmuteUserConf:s.muteUserConf,u=0,l=a,e.label=2;case 2:return u<l.length?(d=l[u],p={confId:null==t?void 0:t.toString(),userId:null===(o=d.id)||void 0===o?void 0:o.toString()},[4,c(p)]):[3,5];case 3:e.sent()&&r.store.dispatch.conference.toggleUserMuted({extenId:d.extenId,muted:!n}),e.label=4;case 4:return u++,[3,2];case 5:return[2,!0];case 6:return v=e.sent(),console.error(v),[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()):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){var n,o,i,a;return e.__awaiter(this,void 0,void 0,(function(){var 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),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=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}(c))?[3,1]:[2];case 1:switch(l=null===(i=null==u?void 0:u.id)||void 0===i?void 0:i.match(/\/(\d+)-/),d=l[1],p={convid:null===(a=null==u?void 0:u.id)||void 0===a?void 0:a.toString(),endpointId:null==d?void 0:d.toString()},v="",null==u?void 0:u.recording){case"false":v="start_record";break;case"true":v="mute_record";break;case"mute":v="unmute_record";break;default:v=""}if(!p)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,s.toggleRecord(v,p)];case 3:return e.sent(),[3,5];case 4:return f=e.sent(),console.error(f),[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"),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()):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(){var t;return e.__awaiter(this,void 0,void 0,function(){var 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(n=null===(t=null===r.store||void 0===r.store?void 0:r.store.getState())||void 0===t?void 0:t.currentCall,o=n.accepted,a=n.chSource,u=n.chDest,l=n.incoming,d=n.outgoing,p=n.incomingSocket,v=n.outgoingSocket,f=n.conversationId,h=r.store.getState().currentUser.default_device,g=(null==h?void 0:h.id)||(null==h?void 0:h.exten),C="",o&&(l||p)&&!c.isEmpty(a)?C=null==a?void 0:a.callerNum:o&&(d||v)&&!c.isEmpty(u)&&(C=null==u?void 0:u.callerNum),""===g||""===f||""===C)return[3,4];if(!(m={convid:null==f?void 0:f.toString(),addEndpointId:null==C?void 0:C.toString(),ownerEndpointId:null==g?void 0:g.toString()}))return[3,4];e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.startConf(m)];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 b=e.sent(),console.error(b),[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){var a="sip:".concat(e,"@").concat(o);r.store.dispatch.island.resetOperatorBusy(),r.store.dispatch.island.setOperatorBusyCalledNumber(e),n.isWebRTC()?t.callSipURI(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){var o;return e.__awaiter(this,void 0,void 0,function(){var 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(!(i=r.store.getState().conference.usersList)||0===Object.keys(i).length)return[2,!1];e.label=1;case 1:e.trys.push([1,6,,7]),a=Object.values(i),c=n?s.unmuteUserConf:s.muteUserConf,u=0,l=a,e.label=2;case 2:return u<l.length?(d=l[u],p={confId:null==t?void 0:t.toString(),userId:null===(o=d.id)||void 0===o?void 0:o.toString()},[4,c(p)]):[3,5];case 3:e.sent()&&r.store.dispatch.conference.toggleUserMuted({extenId:d.extenId,muted:!n}),e.label=4;case 4:return u++,[3,2];case 5:return[2,!0];case 6:return v=e.sent(),console.error(v),[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()):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){var n,o,i,a;return e.__awaiter(this,void 0,void 0,function(){var 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),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=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}(c))?[3,1]:[2];case 1:switch(l=null===(i=null==u?void 0:u.id)||void 0===i?void 0:i.match(/\/(\d+)-/),d=l[1],p={convid:null===(a=null==u?void 0:u.id)||void 0===a?void 0:a.toString(),endpointId:null==d?void 0:d.toString()},v="",null==u?void 0:u.recording){case"false":v="start_record";break;case"true":v="mute_record";break;case"mute":v="unmute_record";break;default:v=""}if(!p)return[3,5];e.label=2;case 2:return e.trys.push([2,4,,5]),[4,s.toggleRecord(v,p)];case 3:return e.sent(),[3,5];case 4:return f=e.sent(),console.error(f),[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;
|
|
2
2
|
//# sourceMappingURL=call.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sources":["../../../src/lib/phone/call.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n callSipURI,\n hangup,\n answerWebRTC,\n muteWebRTC,\n unmuteWebRTC,\n pauseWebRTC,\n unpauseWebRTC,\n} from '../webrtc/messages'\nimport { Dispatch, store } from '../../store'\nimport { isWebRTC } from '../user/default_device'\nimport {\n blindTransfer as blindTransferRequest,\n attendedTransfer as attendedTransferRequest,\n hangupPhysical,\n answerPhysical,\n mutePhysical,\n pausePhysical,\n callPhysical,\n toggleRecord,\n hangupPhysicalRecordingCall,\n startConf,\n joinMyConf,\n endConf,\n muteUserConf,\n unmuteUserConf,\n hangupUserConf,\n forceHangup,\n} from '../../services/astproxy'\nimport dtmfAudios from '../../static/dtmf'\nimport { hangupConversation, parkConversation } from '../../services/astproxy'\nimport { eventDispatch } from '../../utils'\nimport { isEmpty } from '../../utils/genericFunctions/isEmpty'\nimport { getStreamingSourceId } from '../../utils/streaming/getStreamingSourceId'\nimport { unsubscribe } from '../../services/user'\n\n/**\n * Starts a call to a number\n * @param number The number string\n */\nexport function callNumber(number: string, sipHost: string) {\n const sipURI = `sip:${number}@${sipHost}`\n\n // Reset any previous operator busy state when starting a new call\n store.dispatch.island.resetOperatorBusy()\n // Save the called number for potential operator busy scenarios\n store.dispatch.island.setOperatorBusyCalledNumber(number)\n\n if (isWebRTC()) {\n callSipURI(sipURI)\n } else {\n callPhysical(number)\n }\n\n eventDispatch('phone-island-call-started', {})\n}\n\n/**\n * Answer incoming call\n */\nexport function answerIncomingCall() {\n if (isWebRTC()) {\n answerWebRTC()\n } else {\n answerPhysical()\n }\n // Reset operator busy completely when call is answered successfully\n store.dispatch.island.resetOperatorBusyCompletely()\n}\n\n/**\n * Hangup all the conversations of all the extensions of the current user\n */\nexport function hangupAllExtensions() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n hangupConversation({\n convid: id,\n endpointId: extension,\n })\n })\n }\n}\n\nexport function forceHangupConversation() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n forceHangup({\n convid: id,\n endpointId: extension,\n endpointType: 'extension',\n })\n })\n }\n}\n\n/**\n * Hangup current call\n */\nexport function hangupCurrentCall() {\n const { outgoing, accepted, streamingSourceNumber } = store.getState().currentCall\n const { isFromStreaming } = store.getState().island\n\n if (outgoing || accepted) {\n if (isWebRTC()) {\n hangup()\n } else {\n hangupPhysical()\n }\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n store.dispatch.listen.reset()\n\n // If call was from a streaming source, unsubscribe and clear images\n if (isFromStreaming && streamingSourceNumber) {\n const sourceId = getStreamingSourceId(streamingSourceNumber)\n if (sourceId) {\n // Unsubscribe from streaming updates\n unsubscribe({ id: sourceId })\n .then(() => console.debug(`Unsubscribed from streaming source: ${sourceId}`))\n .catch((error) => console.error('Error unsubscribing from streaming source:', error))\n\n // Clear source images to free up memory\n store.dispatch.streaming.clearSourceImages()\n }\n }\n\n // Reset isFromStreaming flag\n store.dispatch.island.setIsFromStreaming(false)\n }\n // Reset operator busy state when call ends\n store.dispatch.island.resetOperatorBusy()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Hangup current physical recording\n */\nexport function hangupCurrentPhysicalRecording() {\n hangupPhysicalRecordingCall()\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.physicalRecorder.reset()\n store.dispatch.physicalRecorder.setRecording(false)\n store.dispatch.island.setIslandView(null)\n store.dispatch.listen.reset()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Mute the current call\n */\nexport function muteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const muted = muteWebRTC()\n if (muted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: true,\n })\n }\n } else {\n mutePhysical(true)\n }\n eventDispatch('phone-island-call-muted', {})\n}\n\n/**\n * Unmute the current call\n */\nexport function unmuteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unmuted = unmuteWebRTC()\n if (unmuted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: false,\n })\n }\n } else {\n mutePhysical(false)\n }\n eventDispatch('phone-island-call-unmuted', {})\n}\n\n/**\n * Pause the current call\n */\nexport function pauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const paused = pauseWebRTC()\n if (paused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: true,\n })\n // Pause remote audio\n store.dispatch.player.pauseRemoteAudio()\n }\n } else {\n pausePhysical(true)\n }\n eventDispatch('phone-island-call-held', {})\n}\n\n/**\n * Unpause the current call\n */\nexport function unpauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unpaused = unpauseWebRTC()\n if (unpaused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: false,\n })\n // Play remote audio\n store.dispatch.player.playRemoteAudio()\n }\n } else {\n pausePhysical(false)\n }\n eventDispatch('phone-island-call-unheld', {})\n}\n\n/**\n * Transfer the current call through a blind transfer (not in use)\n */\nexport async function blindTransferFunction(number: string, endpointIdInConversation: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n // Transfer the call through blind transfer\n if (conversationId && endpointIdInConversation && number) {\n return await blindTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: endpointIdInConversation,\n })\n }\n}\n\n/**\n * Transfer the current call through a attended transfer\n */\nexport async function attendedTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n let default_device_details = default_device?.id || default_device?.exten\n // Transfer the call through attended transfer\n if (conversationId && default_device_details && number) {\n return await attendedTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device_details,\n })\n }\n}\n\n/**\n * Play the dtmf audio files\n */\nexport function playDtmfAudio(key: string) {\n if (key === '*') key = 'star'\n if (key === '#') key = 'pound'\n store.dispatch.player.updateStartAudioPlayer({ src: dtmfAudios[`dtmf_${key}`] })\n}\n\n/**\n * Park the current call\n */\nexport function parkCurrentCall() {\n const conversationId = store?.getState()?.currentCall?.conversationId\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n let parkingInformation: any = {}\n\n if (conversationId) {\n if (userConversationInformations) {\n for (const key in userConversationInformations) {\n if (userConversationInformations.hasOwnProperty(key)) {\n const conversation = userConversationInformations[key]\n if (Object.keys(conversation).length > 0) {\n parkingInformation = {\n numberParkId: key,\n idConversation: conversationId,\n }\n }\n }\n }\n }\n\n if (Object.keys(parkingInformation).length > 0) {\n if (parkingInformation?.numberParkId) {\n // If park information are not empty park call\n parkConversation({\n applicantId: parkingInformation?.numberParkId,\n convid: conversationId,\n endpointId: parkingInformation?.numberParkId,\n })\n\n store.dispatch.currentCall.setParked(true)\n\n eventDispatch('phone-island-call-parked', {})\n }\n }\n }\n}\n\nconst findFirstExtesnionNotEmpty = (data) => {\n for (const key in data) {\n if (Object.keys(data[key]).length !== 0) {\n const firstEntry: any = Object.values(data[key])[0]\n return {\n id: firstEntry.id,\n recording: firstEntry.recording,\n }\n }\n }\n return null\n}\n\nexport async function recordCurrentCall(recordingValue: boolean) {\n store.dispatch.currentCall.updateRecordingStatus(!recordingValue)\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n const firstExtensionNotEmpty = findFirstExtesnionNotEmpty(userConversationInformations)\n\n if (!firstExtensionNotEmpty) {\n return\n } else {\n const numberToSendCall = firstExtensionNotEmpty?.id?.match(/\\/(\\d+)-/)\n const endpointId = numberToSendCall[1]\n\n const listenInformations = {\n convid: firstExtensionNotEmpty?.id?.toString(),\n endpointId: endpointId?.toString(),\n }\n\n let recordingValues = ''\n switch (firstExtensionNotEmpty?.recording) {\n case 'false':\n recordingValues = 'start_record'\n break\n case 'true':\n recordingValues = 'mute_record'\n break\n case 'mute':\n recordingValues = 'unmute_record'\n break\n default:\n recordingValues = ''\n break\n }\n\n if (listenInformations) {\n try {\n await toggleRecord(recordingValues, listenInformations)\n } catch (e) {\n console.error(e)\n return []\n }\n }\n }\n}\n\nexport async function startConference() {\n const {\n accepted,\n chSource,\n chDest,\n incoming,\n outgoing,\n incomingSocket,\n outgoingSocket,\n conversationId,\n }: any = store?.getState()?.currentCall\n const { default_device } = store.getState().currentUser\n const defaultDeviceId = default_device?.id || default_device?.exten\n let addedUserExtension = ''\n if (accepted && (incoming || incomingSocket) && !isEmpty(chSource)) {\n addedUserExtension = chSource?.callerNum\n } else if (accepted && (outgoing || outgoingSocket) && !isEmpty(chDest)) {\n addedUserExtension = chDest?.callerNum\n }\n\n if (defaultDeviceId !== '' && conversationId !== '' && addedUserExtension !== '') {\n const startConferenceInformations = {\n convid: conversationId?.toString(),\n addEndpointId: addedUserExtension?.toString(),\n ownerEndpointId: defaultDeviceId?.toString(),\n }\n\n if (startConferenceInformations) {\n try {\n const result = await startConf(startConferenceInformations)\n if (result) {\n // Set conferencing and disable pause\n store.dispatch.currentCall.updateCurrentCall({\n conferencing: true,\n paused: false,\n })\n\n eventDispatch('phone-island-call-conferenced', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function joinConference() {\n const { default_device } = store.getState().currentUser\n const defaultDeviceId = default_device?.id || default_device?.exten\n\n if (defaultDeviceId !== '') {\n const joinConferenceInformation = {\n endpointId: defaultDeviceId?.toString(),\n }\n\n if (joinConferenceInformation) {\n try {\n const result = await joinMyConf(joinConferenceInformation)\n if (result) {\n eventDispatch('phone-island-owner-conference-enter', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function endConference() {\n const { conferenceId } = store.getState().conference\n\n if (conferenceId !== '') {\n const endConferenceInformation = {\n confId: conferenceId?.toString(),\n }\n\n if (endConferenceInformation) {\n try {\n const result = await endConf(endConferenceInformation)\n if (result) {\n eventDispatch('phone-island-owner-conference-finished', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function muteUserConference(confId, userId, isAlreadyMuted) {\n if (confId === '' || userId === '') {\n return false\n }\n\n const muteUnmuteUserInformation = {\n confId: confId?.toString(),\n userId: userId?.toString(),\n }\n\n try {\n // Check if the user is already muted\n const actionFunction = isAlreadyMuted ? unmuteUserConf : muteUserConf\n const result = await actionFunction(muteUnmuteUserInformation)\n return !!result\n } catch (e) {\n console.error(e)\n return false\n }\n}\n\nexport async function muteAllUsersConference(confId, isAlreadyMuted) {\n if (confId === '') {\n return false\n }\n\n // Get the conference users from the store\n const { usersList } = store.getState().conference\n\n if (!usersList || Object.keys(usersList).length === 0) {\n return false\n }\n\n try {\n // Iterate through all users (except the owner) and mute/unmute them\n const nonOwnerUsers = Object.values(usersList)\n\n // Determine which function to use based on isAlreadyMuted\n const actionFunction = isAlreadyMuted ? unmuteUserConf : muteUserConf\n\n // For each user, call the appropriate function directly\n for (const user of nonOwnerUsers) {\n const muteUnmuteUserInformation = {\n confId: confId?.toString(),\n userId: user.id?.toString(),\n }\n\n const result = await actionFunction(muteUnmuteUserInformation)\n\n if (result) {\n store.dispatch.conference.toggleUserMuted({\n extenId: user.extenId,\n muted: !isAlreadyMuted,\n })\n }\n }\n\n return true\n } catch (e) {\n console.error(e)\n return false\n }\n}\n\nexport async function removeUserConference(conferenceId, extensionId) {\n if (conferenceId !== '' && extensionId !== '') {\n const removeUserInformation = {\n confId: conferenceId?.toString(),\n extenId: extensionId?.toString(),\n }\n\n if (removeUserInformation) {\n try {\n const result = await hangupUserConf(removeUserInformation)\n if (result) {\n // Check if this was the last participant (excluding owner)\n setTimeout(async () => {\n const { usersList } = store.getState().conference\n const remainingParticipants = Object.values(usersList || {}).filter(\n (user) => !user.owner && user.extenId !== extensionId,\n ).length\n\n // If no more participants left, end the conference\n if (remainingParticipants === 0) {\n await endConference()\n }\n }, 500)\n\n return true\n }\n\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport const clickTransferOrConference = async (number: string, dispatch: Dispatch) => {\n if (isInsideConferenceList()) {\n const { isActive } = store.getState().conference\n\n // Put current call user inside conference mode (only for first user to add not for the second one)\n // If conference is not active, start it first, otherwise proceed directly\n if (!isActive) {\n const conferenceStarted = await startConference()\n if (!conferenceStarted) {\n return // Early return if conference failed to start\n }\n }\n\n // Proceed to waiting conference view (common path for both cases)\n waitingConferenceView(number, dispatch)\n } else {\n handleAttendedTransfer(number, dispatch)\n }\n}\n\nexport const isInsideConferenceList = () => {\n const { isConferenceList } = store.getState().island\n if (isConferenceList) {\n return true\n }\n return false\n}\n\nexport const waitingConferenceView = (numberToCall, dispatch: Dispatch) => {\n // Get all required state in one call to minimize store access\n const state = store.getState()\n const { username } = state.currentUser\n const { isActive, isOwnerInside, conferenceId } = state.conference\n const { extensions } = state.users\n\n // Show current waiting user in back view (only on first)\n if (!isActive && username) {\n dispatch.conference.setConferenceActive(true)\n dispatch.conference.setConferenceStartedFrom(username)\n }\n\n // Add pending user to track the participant being added (before socket confirms)\n const extension = extensions\n ? Object.values(extensions).find((ext: any) => ext.exten === numberToCall)\n : null\n const extensionName = extension?.name || numberToCall\n\n dispatch.conference.addPendingUser({\n id: `${conferenceId}-${numberToCall}`,\n name: extensionName,\n owner: false,\n muted: false,\n extenId: numberToCall,\n joinTime: Date.now(),\n })\n\n // If owner has already started the conference, hangup before making a new call\n if (isOwnerInside) {\n hangupCurrentCall()\n dispatch.conference.toggleIsOwnerInside(false)\n }\n\n // Start new call with selected user from conference list\n // Use requestAnimationFrame to ensure state updates are complete before dispatching event\n requestAnimationFrame(() => {\n setTimeout(() => {\n eventDispatch('phone-island-call-start', { number: numberToCall })\n }, 1000)\n })\n}\n\nexport async function handleAttendedTransfer(number: string, dispatch: Dispatch) {\n // Send attended transfer message\n unpauseCurrentCall()\n const transferringMessageSent = await attendedTransfer(number)\n if (transferringMessageSent) {\n // Set transferring and disable pause\n dispatch.currentCall.updateCurrentCall({\n transferring: true,\n paused: false,\n })\n\n // Use requestAnimationFrame to ensure state update is complete before audio operations\n requestAnimationFrame(() => {\n dispatch.player.playRemoteAudio()\n eventDispatch('phone-island-call-transfered', {})\n })\n }\n}\n"],"names":["hangupCurrentCall","_a","store","getState","currentCall","outgoing","accepted","streamingSourceNumber","isFromStreaming","island","isWebRTC","hangup","hangupPhysical","dispatch","player","stopAudioPlayer","reset","listen","sourceId_1","getStreamingSourceId","unsubscribe","id","then","console","debug","concat","catch","error","streaming","clearSourceImages","setIsFromStreaming","resetOperatorBusy","eventDispatch","unpauseCurrentCall","unpauseWebRTC","updateCurrentCall","paused","playRemoteAudio","pausePhysical","attendedTransfer","number","conversationId","default_device","currentUser","default_device_details","exten","attendedTransferRequest","convid","to","endpointId","startConference","_b","chSource","chDest","incoming","incomingSocket","outgoingSocket","defaultDeviceId","addedUserExtension","isEmpty","callerNum","startConferenceInformations","toString","addEndpointId","ownerEndpointId","startConf","_c","sent","conferencing","e_2","endConference","conferenceId","conference","endConferenceInformation","confId","endConf","e_4","isInsideConferenceList","isConferenceList","waitingConferenceView","numberToCall","state","username","isActive","isOwnerInside","extensions","users","setConferenceActive","setConferenceStartedFrom","extension","Object","values","find","ext","extensionName","name","addPendingUser","owner","muted","extenId","joinTime","Date","now","toggleIsOwnerInside","requestAnimationFrame","setTimeout","handleAttendedTransfer","transferring","answerWebRTC","answerPhysical","resetOperatorBusyCompletely","endpointIdInConversation","blindTransferRequest","sipHost","sipURI","setOperatorBusyCalledNumber","callSipURI","callPhysical","__awaiter","conversations","keys","forEach","forceHangup","endpointType","hangupConversation","hangupPhysicalRecordingCall","physicalRecorder","setRecording","setIslandView","joinConferenceInformation","joinMyConf","e_3","isAlreadyMuted","usersList","length","nonOwnerUsers","actionFunction","unmuteUserConf","muteUserConf","_i","nonOwnerUsers_1","user","muteUnmuteUserInformation","userId","toggleUserMuted","e_6","muteWebRTC","mutePhysical","e_5","userConversationInformations","_d","parkingInformation","key","hasOwnProperty","conversation","numberParkId","idConversation","parkConversation","applicantId","setParked","pauseWebRTC","pauseRemoteAudio","updateStartAudioPlayer","src","dtmfAudios","recordingValue","updateRecordingStatus","firstExtensionNotEmpty","data","firstEntry","recording","findFirstExtesnionNotEmpty","numberToSendCall","match","listenInformations","recordingValues","toggleRecord","_e","e_1","extensionId","removeUserInformation","hangupUserConf","_this","remainingParticipants","filter","e_7","unmuteWebRTC"],"mappings":"oiBA8GgBA,IACR,IAAAC,EAAgDC,EAAKA,MAACC,WAAWC,YAA/DC,EAAQJ,EAAAI,SAAEC,EAAQL,EAAAK,SAAEC,0BACpBC,EAAoBN,EAAKA,MAACC,WAAWM,OAAMD,gBAEnD,GAAIH,GAAYC,EAAU,CAWxB,GAVII,EAAQA,WACVC,EAAAA,SAEAC,EAAAA,iBAEFV,EAAAA,MAAMW,SAASC,OAAOC,kBACtBb,EAAAA,MAAMW,SAAST,YAAYY,QAC3Bd,EAAAA,MAAMW,SAASI,OAAOD,QAGlBR,GAAmBD,EAAuB,CAC5C,IAAMW,EAAWC,uBAAqBZ,GAClCW,IAEFE,cAAY,CAAEC,GAAIH,IACfI,MAAK,WAAM,OAAAC,QAAQC,MAAM,uCAAAC,OAAuCP,OAChEQ,OAAM,SAACC,GAAU,OAAAJ,QAAQI,MAAM,6CAA8CA,EAA5D,IAGpBzB,EAAAA,MAAMW,SAASe,UAAUC,oBAE5B,CAGD3B,EAAAA,MAAMW,SAASJ,OAAOqB,oBAAmB,EAC1C,CAED5B,EAAAA,MAAMW,SAASJ,OAAOsB,oBAEtBC,gBAAc,0BAA2B,CAAA,EAC3C,UA2EgBC,IAEVvB,EAAQA,WACOwB,EAAAA,kBAEfhC,QAAMW,SAAST,YAAY+B,kBAAkB,CAC3CC,QAAQ,IAGVlC,EAAAA,MAAMW,SAASC,OAAOuB,mBAGxBC,EAAaA,eAAC,GAEhBN,gBAAc,2BAA4B,CAAA,EAC5C,CAqBM,SAAgBO,EAAiBC,6HAMjC,OAJIC,EAAmBvC,EAAAA,MAAMC,WAAWC,2BACpCsC,EAAmBxC,EAAAA,MAAMC,WAAWwC,2BACxCC,GAAyBF,aAAc,EAAdA,EAAgBrB,MAAMqB,aAAc,EAAdA,EAAgBG,OAE/DJ,GAAkBG,GAA0BJ,EACvC,CAAA,EAAMM,mBAAwB,CACnCC,OAAQN,EACRO,GAAIR,EACJS,WAAYL,KAJsC,CAAA,EAAA,GACpD,KAAA,EAAA,MAAA,CAAA,EAAO3C,iCAMV,UA6GqBiD,0JAoBhB,GAnBEC,UASGlD,EAAA,OAAAC,kBAAAA,EAAAA,aAAAA,EAAKA,MAAEC,iCAAYC,YAR1BE,EAAQ6C,EAAA7C,SACR8C,EAAQD,EAAAC,SACRC,WACAC,EAAQH,EAAAG,SACRjD,EAAQ8C,EAAA9C,SACRkD,EAAcJ,EAAAI,eACdC,EAAcL,EAAAK,eACdf,mBAEMC,EAAmBxC,EAAAA,MAAMC,WAAWwC,2BACtCc,GAAkBf,aAAc,EAAdA,EAAgBrB,MAAMqB,aAAc,EAAdA,EAAgBG,OAC1Da,EAAqB,GACrBpD,IAAagD,GAAYC,KAAoBI,EAAAA,QAAQP,GACvDM,EAAqBN,eAAAA,EAAUQ,UACtBtD,IAAaD,GAAYmD,KAAoBG,EAAAA,QAAQN,KAC9DK,EAAqBL,eAAAA,EAAQO,WAGP,KAApBH,GAA6C,KAAnBhB,GAAgD,KAAvBiB,EAAnD,MAA4E,CAAA,EAAA,GAO1E,KANEG,EAA8B,CAClCd,OAAQN,eAAAA,EAAgBqB,WACxBC,cAAeL,eAAAA,EAAoBI,WACnCE,gBAAiBP,eAAAA,EAAiBK,aAGhC,MAA2B,CAAA,EAAA,oBAEZ,6BAAA,CAAA,EAAMG,YAAUJ,WAC/B,OADeK,EAA4CC,QAGzDjE,QAAMW,SAAST,YAAY+B,kBAAkB,CAC3CiC,cAAc,EACdhC,QAAQ,IAGVJ,gBAAc,gCAAiC,CAAA,GAC/C,CAAA,GAAO,IAET,CAAA,GAAO,UAGP,kBADAT,QAAQI,MAAM0C,GACd,CAAA,GAAO,GAIb,KAAA,EAAA,MAAA,CAAA,GAAO,SACR,UA4BqBC,8HAGhB,GAAiB,MAFbC,EAAiBrE,EAAAA,MAAMC,WAAWqE,yBAEtC,MAAmB,CAAA,EAAA,GAKjB,KAJEC,EAA2B,CAC/BC,OAAQH,eAAAA,EAAcT,aAGpB,MAAwB,CAAA,EAAA,oBAET,6BAAA,CAAA,EAAMa,UAAQF,WAC7B,OADexE,EAAuCkE,QAEpDnC,gBAAc,yCAA0C,CAAA,GACxD,CAAA,GAAO,IAET,CAAA,GAAO,UAGP,kBADAT,QAAQI,MAAMiD,GACd,CAAA,GAAO,GAIb,KAAA,EAAA,MAAA,CAAA,GAAO,SACR,CAuGY,IAoBAC,EAAyB,WAEpC,QAD6B3E,EAAKA,MAACC,WAAWM,OAAMqE,gBAKtD,EAEaC,EAAwB,SAACC,EAAcnE,GAElD,IAAMoE,EAAQ/E,QAAMC,WACZ+E,EAAaD,EAAMtC,qBACrB1C,EAA4CgF,EAAMT,WAAhDW,EAAQlF,EAAAkF,SAAEC,EAAanF,EAAAmF,cAAEb,iBACzBc,EAAeJ,EAAMK,kBAGxBH,GAAYD,IACfrE,EAAS2D,WAAWe,qBAAoB,GACxC1E,EAAS2D,WAAWgB,yBAAyBN,IAI/C,IAAMO,EAAYJ,EACdK,OAAOC,OAAON,GAAYO,MAAK,SAACC,GAAa,OAAAA,EAAIhD,QAAUmC,CAAd,IAC7C,KACEc,GAAgBL,aAAA,EAAAA,EAAWM,OAAQf,EAEzCnE,EAAS2D,WAAWwB,eAAe,CACjC3E,GAAI,GAAAI,OAAG8C,EAAY,KAAA9C,OAAIuD,GACvBe,KAAMD,EACNG,OAAO,EACPC,OAAO,EACPC,QAASnB,EACToB,SAAUC,KAAKC,QAIblB,IACFpF,IACAa,EAAS2D,WAAW+B,qBAAoB,IAK1CC,uBAAsB,WACpBC,YAAW,WACTzE,EAAAA,cAAc,0BAA2B,CAAEQ,OAAQwC,GACpD,GAAE,IACL,GACF,EAEsB,SAAA0B,EAAuBlE,EAAgB3B,mHAG3B,OADhCoB,IACgC,CAAA,EAAMM,EAAiBC,kBAAvBvC,EAA8BkE,SAG5DtD,EAAST,YAAY+B,kBAAkB,CACrCwE,cAAc,EACdvE,QAAQ,IAIVoE,uBAAsB,WACpB3F,EAASC,OAAOuB,kBAChBL,gBAAc,+BAAgC,CAAA,EAChD,eAEH,uCA5lBKtB,EAAQA,WACVkG,EAAAA,eAEAC,EAAAA,iBAGF3G,EAAAA,MAAMW,SAASJ,OAAOqG,6BACxB,2DAyKsB,SAAsBtE,EAAgBuE,yHAItD,OAFItE,EAAmBvC,EAAAA,MAAMC,WAAWC,6BAEtB2G,GAA4BvE,EACzC,CAAA,EAAMwE,gBAAqB,CAChCjE,OAAQN,EACRO,GAAIR,EACJS,WAAY8D,KAJwC,CAAA,EAAA,GACtD,KAAA,EAAA,MAAA,CAAA,EAAO9G,iCAMV,qBAhNe,SAAWuC,EAAgByE,GACzC,IAAMC,EAAS,OAAAzF,OAAOe,EAAU,KAAAf,OAAAwF,GAGhC/G,EAAAA,MAAMW,SAASJ,OAAOsB,oBAEtB7B,EAAAA,MAAMW,SAASJ,OAAO0G,4BAA4B3E,GAE9C9B,EAAQA,WACV0G,EAAUA,WAACF,GAEXG,EAAYA,aAAC7E,GAGfR,gBAAc,4BAA6B,CAAA,EAC7C,oCA0gByC,SAAOQ,EAAgB3B,GAAkB,OAAAyG,EAAAA,eAAA,OAAA,OAAA,GAAA,gFAC5EzC,IACmB3E,EAAAA,MAAMC,WAAWqE,oBAIzB,CAAA,EAAA,GACqB,CAAA,EAAAtB,KANR,CAAA,EAAA,UAOxB,IAD0BjD,EAAuBkE,OAE/C,MAAA,CAAA,2BAKJY,EAAsBvC,EAAQ3B,gBAE9B6F,EAAuBlE,EAAQ3B,oCAElC,qEAzfS,IAAA0G,EAAkBrH,EAAKA,MAACC,WAAWwC,YAAW4E,yBAE3C9B,GACgBC,OAAO8B,KAAKD,EAAc9B,IAClCgC,SAAQ,SAACpG,GACxBqG,cAAY,CACV3E,OAAQ1B,EACR4B,WAAYwC,EACZkC,aAAc,aAElB,KARF,IAAK,IAAMlC,KAAa8B,IAAb9B,EAUb,0EA3BU,IAAA8B,EAAkBrH,EAAKA,MAACC,WAAWwC,YAAW4E,yBAE3C9B,GACgBC,OAAO8B,KAAKD,EAAc9B,IAClCgC,SAAQ,SAACpG,GACxBuG,qBAAmB,CACjB7E,OAAQ1B,EACR4B,WAAYwC,GAEhB,KAPF,IAAK,IAAMA,KAAa8B,IAAb9B,EASb,gFA8DEoC,EAAAA,8BACA3H,EAAAA,MAAMW,SAASC,OAAOC,kBACtBb,EAAAA,MAAMW,SAASiH,iBAAiB9G,QAChCd,EAAAA,MAAMW,SAASiH,iBAAiBC,cAAa,GAC7C7H,EAAAA,MAAMW,SAASJ,OAAOuH,cAAc,MACpC9H,EAAAA,MAAMW,SAASI,OAAOD,QAEtBgB,gBAAc,0BAA2B,CAAA,EAC3C,iMAiRM,GAHIU,EAAmBxC,EAAAA,MAAMC,WAAWwC,2BAGpB,MAFlBc,GAAkBf,aAAc,EAAdA,EAAgBrB,MAAMqB,aAAc,EAAdA,EAAgBG,QAE1D,MAAsB,CAAA,EAAA,GAKpB,KAJEoF,EAA4B,CAChChF,WAAYQ,eAAAA,EAAiBK,aAG3B,MAAyB,CAAA,EAAA,oBAEV,6BAAA,CAAA,EAAMoE,aAAWD,WAChC,OADehI,EAA2CkE,QAExDnC,gBAAc,sCAAuC,CAAA,GACrD,CAAA,GAAO,IAET,CAAA,GAAO,UAGP,kBADAT,QAAQI,MAAMwG,GACd,CAAA,GAAO,GAIb,KAAA,EAAA,MAAA,CAAA,GAAO,SACR,iCAgDqB,SAAuBzD,EAAQ0D,6IACnD,GAAe,KAAX1D,EACF,MAAA,CAAA,GAAO,GAMT,KAFQ2D,EAAcnI,EAAAA,MAAMC,WAAWqE,uBAEa,IAAlCkB,OAAO8B,KAAKa,GAAWC,OACvC,MAAA,CAAA,GAAO,0CAKDC,EAAgB7C,OAAOC,OAAO0C,GAG9BG,EAAiBJ,EAAiBK,EAAcA,eAAGC,eAGzBC,EAAA,EAAbC,EAAaL,mBAAb,OAAAI,YAARE,EAAID,EAAAD,GACPG,EAA4B,CAChCpE,OAAQA,eAAAA,EAAQZ,WAChBiF,OAAe,QAAP9I,EAAA4I,EAAKxH,UAAE,IAAApB,OAAA,EAAAA,EAAE6D,YAGJ,CAAA,EAAM0E,EAAeM,KANN,CAAA,EAAA,UAMf3F,EAA+CgB,QAG5DjE,QAAMW,SAAS2D,WAAWwE,gBAAgB,CACxC7C,QAAS0C,EAAK1C,QACdD,OAAQkC,4BAXKO,UAgBnB,KAAA,EAAA,MAAA,CAAA,GAAO,UAGP,kBADApH,QAAQI,MAAMsH,GACd,CAAA,GAAO,0BAEV,qCAvXKvI,EAAQA,WACIwI,EAAAA,cAEZhJ,QAAMW,SAAST,YAAY+B,kBAAkB,CAC3C+D,OAAO,IAIXiD,EAAYA,cAAC,GAEfnH,gBAAc,0BAA2B,CAAA,EAC3C,sCA8SyC0C,EAAQqE,EAAQX,2HACvD,GAAe,KAAX1D,GAA4B,KAAXqE,EACnB,MAAA,CAAA,GAAO,GAGHD,EAA4B,CAChCpE,OAAQA,eAAAA,EAAQZ,WAChBiF,OAAQA,eAAAA,EAAQjF,6BAMD,6BAAA,CAAA,GADQsE,EAAiBK,EAAcA,eAAGC,gBACrBI,WACpC,MAAO,CAAA,IADQ7I,EAA+CkE,eAI9D,kBADA5C,QAAQI,MAAMyH,GACd,CAAA,GAAO,0BAEV,iDAtNO3G,EAA+C,QAA9BU,EAAiB,QAAjBlD,SAAAC,EAAAA,YAAK,IAALA,EAAKA,WAAA,EAALA,EAAAA,MAAOC,kBAAU,IAAAF,OAAA,EAAAA,EAAEG,mBAAW,IAAA+C,OAAA,EAAAA,EAAEV,eACjD4G,EAA6D,QAA9BC,EAAiB,QAAjBpF,SAAAhE,EAAAA,YAAK,IAALA,EAAKA,WAAA,EAALA,EAAAA,MAAOC,kBAAU,IAAA+D,OAAA,EAAAA,EAAEvB,mBAAW,IAAA2G,OAAA,EAAAA,EAAE/B,cAEjEgC,EAA0B,CAAA,EAE9B,GAAI9G,EAAgB,CAClB,GAAI4G,EACF,IAAK,IAAMG,KAAOH,EAChB,GAAIA,EAA6BI,eAAeD,GAAM,CACpD,IAAME,EAAeL,EAA6BG,GAC9C9D,OAAO8B,KAAKkC,GAAcpB,OAAS,IACrCiB,EAAqB,CACnBI,aAAcH,EACdI,eAAgBnH,GAGrB,CAIDiD,OAAO8B,KAAK+B,GAAoBjB,OAAS,IACvCiB,eAAAA,EAAoBI,gBAEtBE,mBAAiB,CACfC,YAAaP,aAAA,EAAAA,EAAoBI,aACjC5G,OAAQN,EACRQ,WAAYsG,aAAA,EAAAA,EAAoBI,eAGlCzJ,EAAAA,MAAMW,SAAST,YAAY2J,WAAU,GAErC/H,gBAAc,2BAA4B,CAAA,GAG/C,CACH,sCArHMtB,EAAQA,WACKsJ,EAAAA,gBAEb9J,QAAMW,SAAST,YAAY+B,kBAAkB,CAC3CC,QAAQ,IAGVlC,EAAAA,MAAMW,SAASC,OAAOmJ,oBAGxB3H,EAAaA,eAAC,GAEhBN,gBAAc,yBAA0B,CAAA,EAC1C,wBA2DM,SAAwBwH,GAChB,MAARA,IAAaA,EAAM,QACX,MAARA,IAAaA,EAAM,SACvBtJ,EAAAA,MAAMW,SAASC,OAAOoJ,uBAAuB,CAAEC,IAAKC,UAAW,QAAQ3I,OAAA+H,KACzE,4BAwDM,SAAkCa,wJACtCnK,EAAAA,MAAMW,SAAST,YAAYkK,uBAAuBD,GAC5ChB,EAA6D,QAA9BlG,EAAiB,QAAjBlD,SAAAC,EAAKA,YAAA,IAALA,aAAK,EAALA,EAAKA,MAAEC,kBAAU,IAAAF,OAAA,EAAAA,EAAE0C,mBAAW,IAAAQ,OAAA,EAAAA,EAAEoE,eAE/DgD,EAjB2B,SAACC,GAClC,IAAK,IAAMhB,KAAOgB,EAChB,GAAsC,IAAlC9E,OAAO8B,KAAKgD,EAAKhB,IAAMlB,OAAc,CACvC,IAAMmC,EAAkB/E,OAAOC,OAAO6E,EAAKhB,IAAM,GACjD,MAAO,CACLnI,GAAIoJ,EAAWpJ,GACfqJ,UAAWD,EAAWC,UAEzB,CAEH,OAAO,IACT,CAMiCC,CAA2BtB,IAE/B,CAAA,EAAA,GACnB,CAAA,UAWN,OATMuB,EAA+C,QAA5B1G,EAAAqG,aAAA,EAAAA,EAAwBlJ,UAAI,IAAA6C,OAAA,EAAAA,EAAA2G,MAAM,YACrD5H,EAAa2H,EAAiB,GAE9BE,EAAqB,CACzB/H,OAAoC,QAA5BuG,EAAAiB,aAAA,EAAAA,EAAwBlJ,UAAI,IAAAiI,OAAA,EAAAA,EAAAxF,WACpCb,WAAYA,eAAAA,EAAYa,YAGtBiH,EAAkB,GACdR,eAAAA,EAAwBG,WAC9B,IAAK,QACHK,EAAkB,eAClB,MACF,IAAK,OACHA,EAAkB,cAClB,MACF,IAAK,OACHA,EAAkB,gBAClB,MACF,QACEA,EAAkB,GAIlB,IAAAD,EAAA,MAAkB,CAAA,EAAA,oBAElB,6BAAA,CAAA,EAAME,EAAAA,aAAaD,EAAiBD,kBAApCG,EAAA9G,oBAGA,kBADA5C,QAAQI,MAAMuJ,GACd,CAAA,EAAO,2BAId,+BAuKqB,SAAqB3G,EAAc4G,qIAClC,KAAjB5G,GAAuC,KAAhB4G,EAAvB,MAAyC,CAAA,EAAA,GAMvC,KALEC,EAAwB,CAC5B1G,OAAQH,eAAAA,EAAcT,WACtBqC,QAASgF,eAAAA,EAAarH,aAGpB,MAAqB,CAAA,EAAA,oBAEN,6BAAA,CAAA,EAAMuH,iBAAeD,WACpC,OADenL,EAA2CkE,QAGxDsC,YAAW,WAAA,OAAAa,EAAAA,UAAAgE,OAAA,OAAA,GAAA,iFAOL,OANIjD,EAAcnI,EAAAA,MAAMC,WAAWqE,qBACjC+G,EAAwB7F,OAAOC,OAAO0C,GAAa,CAAA,GAAImD,QAC3D,SAAC3C,GAAS,OAACA,EAAK5C,OAAS4C,EAAK1C,UAAYgF,CAAhC,IACV7C,OAG4B,IAA1BiD,EAA2B,CAAA,EAAA,GACvB,CAAA,EAAAjH,YAANrE,EAAAkE,2CAED,KAEH,CAAA,GAAO,IAGT,CAAA,GAAO,UAGP,kBADA5C,QAAQI,MAAM8J,GACd,CAAA,GAAO,GAIb,KAAA,EAAA,MAAA,CAAA,GAAO,SACR,iEA1YK/K,EAAQA,WACMgL,EAAAA,gBAEdxL,QAAMW,SAAST,YAAY+B,kBAAkB,CAC3C+D,OAAO,IAIXiD,EAAYA,cAAC,GAEfnH,gBAAc,4BAA6B,CAAA,EAC7C"}
|
|
1
|
+
{"version":3,"file":"call.js","sources":["../../../src/lib/phone/call.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport {\n callSipURI,\n hangup,\n answerWebRTC,\n muteWebRTC,\n unmuteWebRTC,\n pauseWebRTC,\n unpauseWebRTC,\n} from '../webrtc/messages'\nimport { Dispatch, store } from '../../store'\nimport { isWebRTC } from '../user/default_device'\nimport {\n blindTransfer as blindTransferRequest,\n attendedTransfer as attendedTransferRequest,\n hangupPhysical,\n answerPhysical,\n mutePhysical,\n pausePhysical,\n callPhysical,\n toggleRecord,\n hangupPhysicalRecordingCall,\n startConf,\n joinMyConf,\n endConf,\n muteUserConf,\n unmuteUserConf,\n hangupUserConf,\n forceHangup,\n} from '../../services/astproxy'\nimport dtmfAudios from '../../static/dtmf'\nimport { hangupConversation, parkConversation } from '../../services/astproxy'\nimport { eventDispatch } from '../../utils'\nimport { isEmpty } from '../../utils/genericFunctions/isEmpty'\nimport { getStreamingSourceId } from '../../utils/streaming/getStreamingSourceId'\nimport { unsubscribe } from '../../services/user'\n\n/**\n * Starts a call to a number\n * @param number The number string\n */\nexport function callNumber(number: string, sipHost: string) {\n const sipURI = `sip:${number}@${sipHost}`\n\n // Reset any previous operator busy state when starting a new call\n store.dispatch.island.resetOperatorBusy()\n // Save the called number for potential operator busy scenarios\n store.dispatch.island.setOperatorBusyCalledNumber(number)\n\n if (isWebRTC()) {\n callSipURI(sipURI)\n } else {\n callPhysical(number)\n }\n\n eventDispatch('phone-island-call-started', {})\n}\n\n/**\n * Answer incoming call\n */\nexport function answerIncomingCall() {\n if (isWebRTC()) {\n answerWebRTC()\n } else {\n answerPhysical()\n }\n // Reset operator busy completely when call is answered successfully\n store.dispatch.island.resetOperatorBusyCompletely()\n}\n\n/**\n * Hangup all the conversations of all the extensions of the current user\n */\nexport function hangupAllExtensions() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n hangupConversation({\n convid: id,\n endpointId: extension,\n })\n })\n }\n}\n\nexport function forceHangupConversation() {\n // Get current user endpoints\n const { conversations } = store.getState().currentUser\n // Hangup all the conversations of all extensions of the current user\n for (const extension in conversations) {\n const conversationsIds = Object.keys(conversations[extension])\n conversationsIds.forEach((id) => {\n forceHangup({\n convid: id,\n endpointId: extension,\n endpointType: 'extension',\n })\n })\n }\n}\n\n/**\n * Hangup current call\n */\nexport function hangupCurrentCall() {\n const { outgoing, accepted, streamingSourceNumber } = store.getState().currentCall\n const { isFromStreaming } = store.getState().island\n\n if (outgoing || accepted) {\n if (isWebRTC()) {\n hangup()\n } else {\n hangupPhysical()\n }\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.currentCall.reset()\n store.dispatch.listen.reset()\n\n // If call was from a streaming source, unsubscribe and clear images\n if (isFromStreaming && streamingSourceNumber) {\n const sourceId = getStreamingSourceId(streamingSourceNumber)\n if (sourceId) {\n // Unsubscribe from streaming updates\n unsubscribe({ id: sourceId })\n .then(() => console.debug(`Unsubscribed from streaming source: ${sourceId}`))\n .catch((error) => console.error('Error unsubscribing from streaming source:', error))\n\n // Clear source images to free up memory\n store.dispatch.streaming.clearSourceImages()\n }\n }\n\n // Reset isFromStreaming flag\n store.dispatch.island.setIsFromStreaming(false)\n }\n // Reset operator busy state when call ends\n store.dispatch.island.resetOperatorBusy()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Hangup current physical recording\n */\nexport function hangupCurrentPhysicalRecording() {\n hangupPhysicalRecordingCall()\n store.dispatch.player.stopAudioPlayer()\n store.dispatch.physicalRecorder.reset()\n store.dispatch.physicalRecorder.setRecording(false)\n store.dispatch.island.setIslandView(null)\n store.dispatch.listen.reset()\n // Caller close the call before the call is accepted\n eventDispatch('phone-island-call-ended', {})\n}\n\n/**\n * Mute the current call\n */\nexport function muteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const muted = muteWebRTC()\n if (muted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: true,\n })\n }\n } else {\n mutePhysical(true)\n }\n eventDispatch('phone-island-call-muted', {})\n}\n\n/**\n * Unmute the current call\n */\nexport function unmuteCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unmuted = unmuteWebRTC()\n if (unmuted) {\n store.dispatch.currentCall.updateCurrentCall({\n muted: false,\n })\n }\n } else {\n mutePhysical(false)\n }\n eventDispatch('phone-island-call-unmuted', {})\n}\n\n/**\n * Pause the current call\n */\nexport function pauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const paused = pauseWebRTC()\n if (paused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: true,\n })\n // Pause remote audio\n store.dispatch.player.pauseRemoteAudio()\n }\n } else {\n pausePhysical(true)\n }\n eventDispatch('phone-island-call-held', {})\n}\n\n/**\n * Unpause the current call\n */\nexport function unpauseCurrentCall() {\n // Check the current user default device\n if (isWebRTC()) {\n const unpaused = unpauseWebRTC()\n if (unpaused) {\n store.dispatch.currentCall.updateCurrentCall({\n paused: false,\n })\n // Play remote audio\n store.dispatch.player.playRemoteAudio()\n }\n } else {\n pausePhysical(false)\n }\n eventDispatch('phone-island-call-unheld', {})\n}\n\n/**\n * Transfer the current call through a blind transfer (not in use)\n */\nexport async function blindTransferFunction(number: string, endpointIdInConversation: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n // Transfer the call through blind transfer\n if (conversationId && endpointIdInConversation && number) {\n return await blindTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: endpointIdInConversation,\n })\n }\n}\n\n/**\n * Transfer the current call through a attended transfer\n */\nexport async function attendedTransfer(number: string) {\n // Retrieve current conversation info\n const { conversationId } = store.getState().currentCall\n const { default_device } = store.getState().currentUser\n let default_device_details = default_device?.id || default_device?.exten\n // Transfer the call through attended transfer\n if (conversationId && default_device_details && number) {\n return await attendedTransferRequest({\n convid: conversationId,\n to: number,\n endpointId: default_device_details,\n })\n }\n}\n\n/**\n * Play the dtmf audio files\n */\nexport function playDtmfAudio(key: string) {\n if (key === '*') key = 'star'\n if (key === '#') key = 'pound'\n store.dispatch.player.updateStartAudioPlayer({ src: dtmfAudios[`dtmf_${key}`] })\n}\n\n/**\n * Park the current call\n */\nexport function parkCurrentCall() {\n const conversationId = store?.getState()?.currentCall?.conversationId\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n let parkingInformation: any = {}\n\n if (conversationId) {\n if (userConversationInformations) {\n for (const key in userConversationInformations) {\n if (userConversationInformations.hasOwnProperty(key)) {\n const conversation = userConversationInformations[key]\n if (Object.keys(conversation).length > 0) {\n parkingInformation = {\n numberParkId: key,\n idConversation: conversationId,\n }\n }\n }\n }\n }\n\n if (Object.keys(parkingInformation).length > 0) {\n if (parkingInformation?.numberParkId) {\n // If park information are not empty park call\n parkConversation({\n applicantId: parkingInformation?.numberParkId,\n convid: conversationId,\n endpointId: parkingInformation?.numberParkId,\n })\n\n store.dispatch.currentCall.setParked(true)\n\n eventDispatch('phone-island-call-parked', {})\n }\n }\n }\n}\n\nconst findFirstExtesnionNotEmpty = (data) => {\n for (const key in data) {\n if (Object.keys(data[key]).length !== 0) {\n const firstEntry: any = Object.values(data[key])[0]\n return {\n id: firstEntry.id,\n recording: firstEntry.recording,\n }\n }\n }\n return null\n}\n\nexport async function recordCurrentCall(recordingValue: boolean) {\n store.dispatch.currentCall.updateRecordingStatus(!recordingValue)\n const userConversationInformations = store?.getState()?.currentUser?.conversations\n\n const firstExtensionNotEmpty = findFirstExtesnionNotEmpty(userConversationInformations)\n\n if (!firstExtensionNotEmpty) {\n return\n } else {\n const numberToSendCall = firstExtensionNotEmpty?.id?.match(/\\/(\\d+)-/)\n const endpointId = numberToSendCall[1]\n\n const listenInformations = {\n convid: firstExtensionNotEmpty?.id?.toString(),\n endpointId: endpointId?.toString(),\n }\n\n let recordingValues = ''\n switch (firstExtensionNotEmpty?.recording) {\n case 'false':\n recordingValues = 'start_record'\n break\n case 'true':\n recordingValues = 'mute_record'\n break\n case 'mute':\n recordingValues = 'unmute_record'\n break\n default:\n recordingValues = ''\n break\n }\n\n if (listenInformations) {\n try {\n await toggleRecord(recordingValues, listenInformations)\n } catch (e) {\n console.error(e)\n return []\n }\n }\n }\n}\n\nexport async function startConference() {\n const {\n accepted,\n chSource,\n chDest,\n incoming,\n outgoing,\n incomingSocket,\n outgoingSocket,\n conversationId,\n }: any = store?.getState()?.currentCall\n const { default_device } = store.getState().currentUser\n const defaultDeviceId = default_device?.id || default_device?.exten\n let addedUserExtension = ''\n if (accepted && (incoming || incomingSocket) && !isEmpty(chSource)) {\n addedUserExtension = chSource?.callerNum\n } else if (accepted && (outgoing || outgoingSocket) && !isEmpty(chDest)) {\n addedUserExtension = chDest?.callerNum\n }\n\n if (defaultDeviceId !== '' && conversationId !== '' && addedUserExtension !== '') {\n const startConferenceInformations = {\n convid: conversationId?.toString(),\n addEndpointId: addedUserExtension?.toString(),\n ownerEndpointId: defaultDeviceId?.toString(),\n }\n\n if (startConferenceInformations) {\n try {\n const result = await startConf(startConferenceInformations)\n if (result) {\n // Set conferencing and disable pause\n store.dispatch.currentCall.updateCurrentCall({\n conferencing: true,\n paused: false,\n })\n\n eventDispatch('phone-island-call-conferenced', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function joinConference() {\n const { default_device } = store.getState().currentUser\n const defaultDeviceId = default_device?.id || default_device?.exten\n\n if (defaultDeviceId !== '') {\n const joinConferenceInformation = {\n endpointId: defaultDeviceId?.toString(),\n }\n\n if (joinConferenceInformation) {\n try {\n const result = await joinMyConf(joinConferenceInformation)\n if (result) {\n eventDispatch('phone-island-owner-conference-enter', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function endConference() {\n const { conferenceId } = store.getState().conference\n\n if (conferenceId !== '') {\n const endConferenceInformation = {\n confId: conferenceId?.toString(),\n }\n\n if (endConferenceInformation) {\n try {\n const result = await endConf(endConferenceInformation)\n if (result) {\n eventDispatch('phone-island-owner-conference-finished', {})\n return true\n }\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport async function muteUserConference(confId, userId, isAlreadyMuted) {\n if (confId === '' || userId === '') {\n return false\n }\n\n const muteUnmuteUserInformation = {\n confId: confId?.toString(),\n userId: userId?.toString(),\n }\n\n try {\n // Check if the user is already muted\n const actionFunction = isAlreadyMuted ? unmuteUserConf : muteUserConf\n const result = await actionFunction(muteUnmuteUserInformation)\n return !!result\n } catch (e) {\n console.error(e)\n return false\n }\n}\n\nexport async function muteAllUsersConference(confId, isAlreadyMuted) {\n if (confId === '') {\n return false\n }\n\n // Get the conference users from the store\n const { usersList } = store.getState().conference\n\n if (!usersList || Object.keys(usersList).length === 0) {\n return false\n }\n\n try {\n // Iterate through all users (except the owner) and mute/unmute them\n const nonOwnerUsers = Object.values(usersList)\n\n // Determine which function to use based on isAlreadyMuted\n const actionFunction = isAlreadyMuted ? unmuteUserConf : muteUserConf\n\n // For each user, call the appropriate function directly\n for (const user of nonOwnerUsers) {\n const muteUnmuteUserInformation = {\n confId: confId?.toString(),\n userId: user.id?.toString(),\n }\n\n const result = await actionFunction(muteUnmuteUserInformation)\n\n if (result) {\n store.dispatch.conference.toggleUserMuted({\n extenId: user.extenId,\n muted: !isAlreadyMuted,\n })\n }\n }\n\n return true\n } catch (e) {\n console.error(e)\n return false\n }\n}\n\nexport async function removeUserConference(conferenceId, extensionId) {\n if (conferenceId !== '' && extensionId !== '') {\n const removeUserInformation = {\n confId: conferenceId?.toString(),\n extenId: extensionId?.toString(),\n }\n\n if (removeUserInformation) {\n try {\n const result = await hangupUserConf(removeUserInformation)\n if (result) {\n // Check if this was the last participant (excluding owner)\n setTimeout(async () => {\n const { usersList } = store.getState().conference\n const remainingParticipants = Object.values(usersList || {}).filter(\n (user) => !user.owner && user.extenId !== extensionId,\n ).length\n\n // If no more participants left, end the conference\n if (remainingParticipants === 0) {\n await endConference()\n }\n }, 500)\n\n return true\n }\n\n return false\n } catch (e) {\n console.error(e)\n return false\n }\n }\n }\n return false\n}\n\nexport const clickTransferOrConference = async (number: string, dispatch: Dispatch) => {\n if (isInsideConferenceList()) {\n const { isActive } = store.getState().conference\n\n // Put current call user inside conference mode (only for first user to add not for the second one)\n // If conference is not active, start it first, otherwise proceed directly\n if (!isActive) {\n const conferenceStarted = await startConference()\n if (!conferenceStarted) {\n return // Early return if conference failed to start\n }\n }\n\n // Proceed to waiting conference view (common path for both cases)\n waitingConferenceView(number, dispatch)\n } else {\n handleAttendedTransfer(number, dispatch)\n }\n}\n\nexport const isInsideConferenceList = () => {\n const { isConferenceList } = store.getState().island\n if (isConferenceList) {\n return true\n }\n return false\n}\n\nexport const waitingConferenceView = (numberToCall, dispatch: Dispatch) => {\n // Get all required state in one call to minimize store access\n const state = store.getState()\n const { username } = state.currentUser\n const { isActive, isOwnerInside, conferenceId } = state.conference\n const { extensions } = state.users\n\n // Show current waiting user in back view (only on first)\n if (!isActive && username) {\n dispatch.conference.setConferenceActive(true)\n dispatch.conference.setConferenceStartedFrom(username)\n }\n\n // Add pending user to track the participant being added (before socket confirms)\n const extension = extensions\n ? Object.values(extensions).find((ext: any) => ext.exten === numberToCall)\n : null\n const extensionName = extension?.name || numberToCall\n\n dispatch.conference.addPendingUser({\n id: `${conferenceId}-${numberToCall}`,\n name: extensionName,\n owner: false,\n muted: false,\n extenId: numberToCall,\n joinTime: Date.now(),\n })\n\n // If owner has already started the conference, hangup before making a new call\n if (isOwnerInside) {\n hangupCurrentCall()\n dispatch.conference.toggleIsOwnerInside(false)\n }\n\n // Start new call with selected user from conference list\n // Use requestAnimationFrame to ensure state updates are complete before dispatching event\n requestAnimationFrame(() => {\n setTimeout(() => {\n eventDispatch('phone-island-call-start', { number: numberToCall })\n }, 1000)\n })\n}\n\nexport async function handleAttendedTransfer(number: string, dispatch: Dispatch) {\n // Send attended transfer message\n unpauseCurrentCall()\n const transferringMessageSent = await attendedTransfer(number)\n if (transferringMessageSent) {\n // Set transferring and disable pause\n dispatch.currentCall.updateCurrentCall({\n transferring: true,\n paused: false,\n })\n\n // Use requestAnimationFrame to ensure state update is complete before audio operations\n requestAnimationFrame(() => {\n dispatch.player.playRemoteAudio()\n eventDispatch('phone-island-call-transfered', {})\n })\n }\n}\n"],"names":["hangupCurrentCall","_a","store","getState","currentCall","outgoing","accepted","streamingSourceNumber","isFromStreaming","island","isWebRTC","hangup","hangupPhysical","dispatch","player","stopAudioPlayer","reset","listen","sourceId_1","getStreamingSourceId","unsubscribe","id","then","console","debug","concat","catch","error","streaming","clearSourceImages","setIsFromStreaming","resetOperatorBusy","eventDispatch","unpauseCurrentCall","unpauseWebRTC","updateCurrentCall","paused","playRemoteAudio","pausePhysical","attendedTransfer","number","conversationId","default_device","currentUser","default_device_details","exten","attendedTransferRequest","convid","to","endpointId","startConference","_b","chSource","chDest","incoming","incomingSocket","outgoingSocket","defaultDeviceId","addedUserExtension","isEmpty","callerNum","startConferenceInformations","toString","addEndpointId","ownerEndpointId","startConf","_c","sent","conferencing","e_2","endConference","conferenceId","conference","endConferenceInformation","confId","endConf","e_4","isInsideConferenceList","isConferenceList","waitingConferenceView","numberToCall","state","username","isActive","isOwnerInside","extensions","users","setConferenceActive","setConferenceStartedFrom","extension","Object","values","find","ext","extensionName","name","addPendingUser","owner","muted","extenId","joinTime","Date","now","toggleIsOwnerInside","requestAnimationFrame","setTimeout","handleAttendedTransfer","transferring","answerWebRTC","answerPhysical","resetOperatorBusyCompletely","endpointIdInConversation","blindTransferRequest","sipHost","sipURI","setOperatorBusyCalledNumber","callSipURI","callPhysical","__awaiter","conversations","keys","forEach","forceHangup","endpointType","hangupConversation","hangupPhysicalRecordingCall","physicalRecorder","setRecording","setIslandView","joinConferenceInformation","joinMyConf","e_3","isAlreadyMuted","usersList","length","nonOwnerUsers","actionFunction","unmuteUserConf","muteUserConf","_i","nonOwnerUsers_1","user","muteUnmuteUserInformation","userId","toggleUserMuted","e_6","muteWebRTC","mutePhysical","e_5","userConversationInformations","_d","parkingInformation","key","hasOwnProperty","conversation","numberParkId","idConversation","parkConversation","applicantId","setParked","pauseWebRTC","pauseRemoteAudio","updateStartAudioPlayer","src","dtmfAudios","recordingValue","updateRecordingStatus","firstExtensionNotEmpty","data","firstEntry","recording","findFirstExtesnionNotEmpty","numberToSendCall","match","listenInformations","recordingValues","toggleRecord","_e","e_1","extensionId","removeUserInformation","hangupUserConf","_this","remainingParticipants","filter","e_7","unmuteWebRTC"],"mappings":"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"}
|
package/dist/lib/phone/queue.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var u={throughQueue:!1,queueId:"",queueName:"",queueNumber:"",queuePosition:"",queueWaitingTime:0};function e(u){return(null==u?void 0:u.queueId)||(null==u?void 0:u.queue)||""}exports.getCurrentCallQueueContext=function(n,i){var l=e(n),o=function(u){return(null==u?void 0:u.queueName)||""}(n),d=function(u,n){var i,l,o,d,r,t,v=e(u),a=(null===(i=null==n?void 0:n.waitingCallersById)||void 0===i?void 0:i[null==u?void 0:u.linkedId])||(null===(l=null==n?void 0:n.waitingCallersById)||void 0===l?void 0:l[null==u?void 0:u.uniqueId]);if(a)return a;var q=(null===(o=null==n?void 0:n.waitingCallersByChannel)||void 0===o?void 0:o[(null===(d=null==u?void 0:u.chSource)||void 0===d?void 0:d.channel)||""])||(null===(r=null==n?void 0:n.waitingCallersByChannel)||void 0===r?void 0:r[(null===(t=null==u?void 0:u.chDest)||void 0===t?void 0:t.channel)||""]);if(q)return q;var c=function(u,e){return u&&(null==e?void 0:e.waitingCallersByNumber[u])||[]}(null==u?void 0:u.counterpartNum,n);return v?c.find(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var u={throughQueue:!1,queueId:"",queueName:"",queueNumber:"",queuePosition:"",queueWaitingTime:0};function e(u){return(null==u?void 0:u.queueId)||(null==u?void 0:u.queue)||""}exports.getCurrentCallQueueContext=function(n,i){var l=e(n),o=function(u){return(null==u?void 0:u.queueName)||""}(n),d=function(u,n){var i,l,o,d,r,t,v=e(u),a=(null===(i=null==n?void 0:n.waitingCallersById)||void 0===i?void 0:i[null==u?void 0:u.linkedId])||(null===(l=null==n?void 0:n.waitingCallersById)||void 0===l?void 0:l[null==u?void 0:u.uniqueId]);if(a)return a;var q=(null===(o=null==n?void 0:n.waitingCallersByChannel)||void 0===o?void 0:o[(null===(d=null==u?void 0:u.chSource)||void 0===d?void 0:d.channel)||""])||(null===(r=null==n?void 0:n.waitingCallersByChannel)||void 0===r?void 0:r[(null===(t=null==u?void 0:u.chDest)||void 0===t?void 0:t.channel)||""]);if(q)return q;var c=function(u,e){return u&&(null==e?void 0:e.waitingCallersByNumber[u])||[]}(null==u?void 0:u.counterpartNum,n);return v?c.find(function(u){return(null==u?void 0:u.queue)===v}):1===c.length?c[0]:void 0}(n,i),r=l||(null==d?void 0:d.queue)||"",t=r?i.byQueue[r]:void 0,v=o||(null==t?void 0:t.name)||(null==d?void 0:d.queueName)||"",a=n.queueNumber||(null==t?void 0:t.queue)||r,q=Boolean(n.throughQueue||function(u,e){return u||e}(v,a));return q?{throughQueue:q,queueId:r,queueName:v,queueNumber:a,queuePosition:(null==d?void 0:d.position)||"",queueWaitingTime:(null==d?void 0:d.waitingTime)||0}:u};
|
|
2
2
|
//# sourceMappingURL=queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sources":["../../../src/lib/phone/queue.ts"],"sourcesContent":["// Copyright (C) 2026 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport type { QueueStoreTypes, QueueWaitingCallerReference } from '../../models/queue'\nimport type { ConversationTypes } from '../../types'\n\nexport interface CurrentCallQueueContext {\n throughQueue: boolean\n queueId: string\n queueName: string\n queueNumber: string\n queuePosition: string\n queueWaitingTime: number\n}\n\nconst emptyQueueContext: CurrentCallQueueContext = {\n throughQueue: false,\n queueId: '',\n queueName: '',\n queueNumber: '',\n queuePosition: '',\n queueWaitingTime: 0,\n}\n\nfunction getExplicitQueueId(conv: ConversationTypes): string {\n return conv?.queueId || conv?.queue || ''\n}\n\nfunction getExplicitQueueName(conv: ConversationTypes): string {\n return conv?.queueName || ''\n}\n\nfunction getQueueLabel(queueName: string, queueNumber: string): string {\n return queueName || queueNumber\n}\n\nfunction getCandidatesByNumber(\n number: string,\n queueState: QueueStoreTypes,\n): QueueWaitingCallerReference[] {\n if (!number) {\n return []\n }\n\n return queueState?.waitingCallersByNumber[number] || []\n}\n\nfunction findMatchingWaitingCaller(\n conv: ConversationTypes,\n queueState: QueueStoreTypes,\n): QueueWaitingCallerReference | undefined {\n const explicitQueueId = getExplicitQueueId(conv)\n const linkedIdCandidate =\n queueState?.waitingCallersById?.[conv?.linkedId] || queueState?.waitingCallersById?.[conv?.uniqueId]\n\n if (linkedIdCandidate) {\n return linkedIdCandidate\n }\n\n const channelCandidate =\n queueState?.waitingCallersByChannel?.[conv?.chSource?.channel || ''] ||\n queueState?.waitingCallersByChannel?.[conv?.chDest?.channel || '']\n\n if (channelCandidate) {\n return channelCandidate\n }\n\n const candidatesByNumber = getCandidatesByNumber(conv?.counterpartNum, queueState)\n\n if (explicitQueueId) {\n return candidatesByNumber.find((candidate) => candidate?.queue === explicitQueueId)\n }\n\n if (candidatesByNumber.length === 1) {\n return candidatesByNumber[0]\n }\n\n return undefined\n}\n\nexport function getCurrentCallQueueContext(\n conv: ConversationTypes,\n queueState: QueueStoreTypes,\n): CurrentCallQueueContext {\n const explicitQueueId = getExplicitQueueId(conv)\n const explicitQueueName = getExplicitQueueName(conv)\n const matchedWaitingCaller = findMatchingWaitingCaller(conv, queueState)\n const matchedQueueId = explicitQueueId || matchedWaitingCaller?.queue || ''\n const matchedQueue = matchedQueueId ? queueState.byQueue[matchedQueueId] : undefined\n const queueName = explicitQueueName || matchedQueue?.name || matchedWaitingCaller?.queueName || ''\n const queueNumber = conv.queueNumber || matchedQueue?.queue || matchedQueueId\n const throughQueue = Boolean(conv.throughQueue || getQueueLabel(queueName, queueNumber))\n\n if (!throughQueue) {\n return emptyQueueContext\n }\n\n return {\n throughQueue,\n queueId: matchedQueueId,\n queueName,\n queueNumber,\n queuePosition: matchedWaitingCaller?.position || '',\n queueWaitingTime: matchedWaitingCaller?.waitingTime || 0,\n }\n}\n"],"names":["emptyQueueContext","throughQueue","queueId","queueName","queueNumber","queuePosition","queueWaitingTime","getExplicitQueueId","conv","queue","queueState","explicitQueueId","explicitQueueName","getExplicitQueueName","matchedWaitingCaller","linkedIdCandidate","_a","waitingCallersById","linkedId","_b","uniqueId","channelCandidate","_c","waitingCallersByChannel","_d","chSource","channel","_e","_f","chDest","candidatesByNumber","number","waitingCallersByNumber","getCandidatesByNumber","counterpartNum","find","candidate","length","findMatchingWaitingCaller","matchedQueueId","matchedQueue","byQueue","undefined","name","Boolean","getQueueLabel","position","waitingTime"],"mappings":"oEAeA,IAAMA,EAA6C,CACjDC,cAAc,EACdC,QAAS,GACTC,UAAW,GACXC,YAAa,GACbC,cAAe,GACfC,iBAAkB,GAGpB,SAASC,EAAmBC,GAC1B,OAAOA,aAAA,EAAAA,EAAMN,WAAWM,eAAAA,EAAMC,QAAS,EACzC,oCAsDgB,SACdD,EACAE,GAEA,IAAMC,EAAkBJ,EAAmBC,GACrCI,EAzDR,SAA8BJ,GAC5B,OAAOA,aAAI,EAAJA,EAAML,YAAa,EAC5B,CAuD4BU,CAAqBL,GACzCM,EAvCR,SACEN,EACAE,mBAEMC,EAAkBJ,EAAmBC,GACrCO,GAC6B,QAAjCC,EAAAN,aAAU,EAAVA,EAAYO,0BAAqB,IAAAD,OAAA,EAAAA,EAAAR,aAAI,EAAJA,EAAMU,aAA2C,UAA9BR,aAAA,EAAAA,EAAYO,0BAAkB,IAAAE,OAAA,EAAAA,EAAGX,aAAA,EAAAA,EAAMY,WAE7F,GAAIL,EACF,OAAOA,EAGT,IAAMM,GAC+B,QAAnCC,EAAAZ,aAAU,EAAVA,EAAYa,+BAAuB,IAAAD,OAAA,EAAAA,GAAmB,QAAhBE,EAAAhB,aAAA,EAAAA,EAAMiB,gBAAU,IAAAD,OAAA,EAAAA,EAAAE,UAAW,OAC3B,QAAtCC,EAAAjB,aAAU,EAAVA,EAAYa,+BAA0B,IAAAI,OAAA,EAAAA,GAAY,QAAZC,EAAApB,aAAI,EAAJA,EAAMqB,cAAM,IAAAD,OAAA,EAAAA,EAAEF,UAAW,KAEjE,GAAIL,EACF,OAAOA,EAGT,IAAMS,EA/BR,SACEC,EACArB,GAEA,OAAKqB,IAIErB,aAAA,EAAAA,EAAYsB,uBAAuBD,KAHjC,EAIX,CAsB6BE,CAAsBzB,aAAA,EAAAA,EAAM0B,eAAgBxB,GAEvE,OAAIC,EACKmB,EAAmBK,
|
|
1
|
+
{"version":3,"file":"queue.js","sources":["../../../src/lib/phone/queue.ts"],"sourcesContent":["// Copyright (C) 2026 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport type { QueueStoreTypes, QueueWaitingCallerReference } from '../../models/queue'\nimport type { ConversationTypes } from '../../types'\n\nexport interface CurrentCallQueueContext {\n throughQueue: boolean\n queueId: string\n queueName: string\n queueNumber: string\n queuePosition: string\n queueWaitingTime: number\n}\n\nconst emptyQueueContext: CurrentCallQueueContext = {\n throughQueue: false,\n queueId: '',\n queueName: '',\n queueNumber: '',\n queuePosition: '',\n queueWaitingTime: 0,\n}\n\nfunction getExplicitQueueId(conv: ConversationTypes): string {\n return conv?.queueId || conv?.queue || ''\n}\n\nfunction getExplicitQueueName(conv: ConversationTypes): string {\n return conv?.queueName || ''\n}\n\nfunction getQueueLabel(queueName: string, queueNumber: string): string {\n return queueName || queueNumber\n}\n\nfunction getCandidatesByNumber(\n number: string,\n queueState: QueueStoreTypes,\n): QueueWaitingCallerReference[] {\n if (!number) {\n return []\n }\n\n return queueState?.waitingCallersByNumber[number] || []\n}\n\nfunction findMatchingWaitingCaller(\n conv: ConversationTypes,\n queueState: QueueStoreTypes,\n): QueueWaitingCallerReference | undefined {\n const explicitQueueId = getExplicitQueueId(conv)\n const linkedIdCandidate =\n queueState?.waitingCallersById?.[conv?.linkedId] || queueState?.waitingCallersById?.[conv?.uniqueId]\n\n if (linkedIdCandidate) {\n return linkedIdCandidate\n }\n\n const channelCandidate =\n queueState?.waitingCallersByChannel?.[conv?.chSource?.channel || ''] ||\n queueState?.waitingCallersByChannel?.[conv?.chDest?.channel || '']\n\n if (channelCandidate) {\n return channelCandidate\n }\n\n const candidatesByNumber = getCandidatesByNumber(conv?.counterpartNum, queueState)\n\n if (explicitQueueId) {\n return candidatesByNumber.find((candidate) => candidate?.queue === explicitQueueId)\n }\n\n if (candidatesByNumber.length === 1) {\n return candidatesByNumber[0]\n }\n\n return undefined\n}\n\nexport function getCurrentCallQueueContext(\n conv: ConversationTypes,\n queueState: QueueStoreTypes,\n): CurrentCallQueueContext {\n const explicitQueueId = getExplicitQueueId(conv)\n const explicitQueueName = getExplicitQueueName(conv)\n const matchedWaitingCaller = findMatchingWaitingCaller(conv, queueState)\n const matchedQueueId = explicitQueueId || matchedWaitingCaller?.queue || ''\n const matchedQueue = matchedQueueId ? queueState.byQueue[matchedQueueId] : undefined\n const queueName = explicitQueueName || matchedQueue?.name || matchedWaitingCaller?.queueName || ''\n const queueNumber = conv.queueNumber || matchedQueue?.queue || matchedQueueId\n const throughQueue = Boolean(conv.throughQueue || getQueueLabel(queueName, queueNumber))\n\n if (!throughQueue) {\n return emptyQueueContext\n }\n\n return {\n throughQueue,\n queueId: matchedQueueId,\n queueName,\n queueNumber,\n queuePosition: matchedWaitingCaller?.position || '',\n queueWaitingTime: matchedWaitingCaller?.waitingTime || 0,\n }\n}\n"],"names":["emptyQueueContext","throughQueue","queueId","queueName","queueNumber","queuePosition","queueWaitingTime","getExplicitQueueId","conv","queue","queueState","explicitQueueId","explicitQueueName","getExplicitQueueName","matchedWaitingCaller","linkedIdCandidate","_a","waitingCallersById","linkedId","_b","uniqueId","channelCandidate","_c","waitingCallersByChannel","_d","chSource","channel","_e","_f","chDest","candidatesByNumber","number","waitingCallersByNumber","getCandidatesByNumber","counterpartNum","find","candidate","length","findMatchingWaitingCaller","matchedQueueId","matchedQueue","byQueue","undefined","name","Boolean","getQueueLabel","position","waitingTime"],"mappings":"oEAeA,IAAMA,EAA6C,CACjDC,cAAc,EACdC,QAAS,GACTC,UAAW,GACXC,YAAa,GACbC,cAAe,GACfC,iBAAkB,GAGpB,SAASC,EAAmBC,GAC1B,OAAOA,aAAA,EAAAA,EAAMN,WAAWM,eAAAA,EAAMC,QAAS,EACzC,oCAsDgB,SACdD,EACAE,GAEA,IAAMC,EAAkBJ,EAAmBC,GACrCI,EAzDR,SAA8BJ,GAC5B,OAAOA,aAAI,EAAJA,EAAML,YAAa,EAC5B,CAuD4BU,CAAqBL,GACzCM,EAvCR,SACEN,EACAE,mBAEMC,EAAkBJ,EAAmBC,GACrCO,GAC6B,QAAjCC,EAAAN,aAAU,EAAVA,EAAYO,0BAAqB,IAAAD,OAAA,EAAAA,EAAAR,aAAI,EAAJA,EAAMU,aAA2C,UAA9BR,aAAA,EAAAA,EAAYO,0BAAkB,IAAAE,OAAA,EAAAA,EAAGX,aAAA,EAAAA,EAAMY,WAE7F,GAAIL,EACF,OAAOA,EAGT,IAAMM,GAC+B,QAAnCC,EAAAZ,aAAU,EAAVA,EAAYa,+BAAuB,IAAAD,OAAA,EAAAA,GAAmB,QAAhBE,EAAAhB,aAAA,EAAAA,EAAMiB,gBAAU,IAAAD,OAAA,EAAAA,EAAAE,UAAW,OAC3B,QAAtCC,EAAAjB,aAAU,EAAVA,EAAYa,+BAA0B,IAAAI,OAAA,EAAAA,GAAY,QAAZC,EAAApB,aAAI,EAAJA,EAAMqB,cAAM,IAAAD,OAAA,EAAAA,EAAEF,UAAW,KAEjE,GAAIL,EACF,OAAOA,EAGT,IAAMS,EA/BR,SACEC,EACArB,GAEA,OAAKqB,IAIErB,aAAA,EAAAA,EAAYsB,uBAAuBD,KAHjC,EAIX,CAsB6BE,CAAsBzB,aAAA,EAAAA,EAAM0B,eAAgBxB,GAEvE,OAAIC,EACKmB,EAAmBK,KAAK,SAACC,GAAc,OAAAA,aAAS,EAATA,EAAW3B,SAAUE,CAAe,GAGlD,IAA9BmB,EAAmBO,OACdP,EAAmB,QAD5B,CAKF,CAQ+BQ,CAA0B9B,EAAME,GACvD6B,EAAiB5B,IAAmBG,aAAA,EAAAA,EAAsBL,QAAS,GACnE+B,EAAeD,EAAiB7B,EAAW+B,QAAQF,QAAkBG,EACrEvC,EAAYS,IAAqB4B,aAAA,EAAAA,EAAcG,QAAQ7B,aAAA,EAAAA,EAAsBX,YAAa,GAC1FC,EAAcI,EAAKJ,cAAeoC,aAAY,EAAZA,EAAc/B,QAAS8B,EACzDtC,EAAe2C,QAAQpC,EAAKP,cA3DpC,SAAuBE,EAAmBC,GACxC,OAAOD,GAAaC,CACtB,CAyDoDyC,CAAc1C,EAAWC,IAE3E,OAAKH,EAIE,CACLA,aAAYA,EACZC,QAASqC,EACTpC,UAASA,EACTC,YAAWA,EACXC,eAAeS,eAAAA,EAAsBgC,WAAY,GACjDxC,kBAAkBQ,eAAAA,EAAsBiC,cAAe,GAThD/C,CAWX"}
|
package/dist/lib/player/audio.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("../../services/offhour.js"),r=require("../../services/history_call.js"),a=require("../../store/index.js"),i=require("../../services/voicemail.js");exports.getAnnouncementName=function(r){return e.__awaiter(this,void 0,void 0,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("../../services/offhour.js"),r=require("../../services/history_call.js"),a=require("../../store/index.js"),i=require("../../services/voicemail.js");exports.getAnnouncementName=function(r){return e.__awaiter(this,void 0,void 0,function(){var i,n;return e.__generator(this,function(e){switch(e.label){case 0:return r?[4,t.getAllAnnouncementsInfo()]:[3,2];case 1:i=e.sent(),(null==(n=i.find(function(e){return e.id.toString()===r}))?void 0:n.description)&&a.store.dispatch.player.setAudioPlayerTrackName(n.description),e.label=2;case 2:return[2]}})})},exports.getRecordingName=function(t){return e.__awaiter(this,void 0,void 0,function(){var i;return e.__generator(this,function(e){switch(e.label){case 0:return t?[4,r.getRecordingFileName(t)]:[3,2];case 1:(i=e.sent())&&a.store.dispatch.player.setAudioPlayerTrackName(i),e.label=2;case 2:return[2]}})})},exports.getVoicemailName=function(t){return e.__awaiter(this,void 0,void 0,function(){var r;return e.__generator(this,function(e){switch(e.label){case 0:return t?[4,i.getVoicemailFileName(t)]:[3,2];case 1:(r=e.sent())&&a.store.dispatch.player.setAudioPlayerTrackName(r),e.label=2;case 2:return[2]}})})},exports.playAnnouncement=function(r){return e.__awaiter(this,void 0,void 0,function(){var i;return e.__generator(this,function(e){switch(e.label){case 0:return r?[4,t.getAnnouncement(r)]:[3,2];case 1:(i=e.sent())&&(a.store.dispatch.island.setIslandView("player"),a.store.dispatch.player.setAudioPlayerType("announcement"),a.store.dispatch.player.updateStartAudioPlayer({src:i})),e.label=2;case 2:return[2]}})})},exports.playCallRecording=function(t){return e.__awaiter(this,void 0,void 0,function(){var i;return e.__generator(this,function(e){switch(e.label){case 0:return t?[4,r.getCallRecording(t)]:[3,2];case 1:(i=e.sent())&&(a.store.dispatch.island.setIslandView("player"),a.store.dispatch.player.setAudioPlayerType("call_recording"),a.store.dispatch.player.updateStartAudioPlayer({src:i})),e.label=2;case 2:return[2]}})})},exports.playVoicemail=function(t){return e.__awaiter(this,void 0,void 0,function(){var r;return e.__generator(this,function(e){switch(e.label){case 0:return t?[4,i.getVoicemailBase64(t)]:[3,2];case 1:(r=e.sent())&&(a.store.dispatch.island.setIslandView("player"),a.store.dispatch.player.setAudioPlayerType("voicemail"),a.store.dispatch.player.updateStartAudioPlayer({src:r})),e.label=2;case 2:return[2]}})})};
|
|
2
2
|
//# sourceMappingURL=audio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sources":["../../../src/lib/player/audio.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { getAnnouncement, getAllAnnouncementsInfo } from '../../services/offhour'\nimport { getCallRecording, getRecordingFileName } from '../../services/history_call'\nimport { store } from '../../store'\nimport { AnnouncementInfoTypes } from '../../types'\nimport { getVoicemailBase64, getVoicemailFileName } from '../../services/voicemail'\n\n/**\n * Given an id plays an announcement\n */\nexport async function playAnnouncement(id: string) {\n if (id) {\n const audioFile: string = await getAnnouncement(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('announcement')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id plays a call recording\n */\nexport async function playCallRecording(id: string) {\n if (id) {\n const audioFile: string = await getCallRecording(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('call_recording')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id plays a call recording\n */\nexport async function playVoicemail(id: string) {\n if (id) {\n const audioFile: string = await getVoicemailBase64(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('voicemail')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id retrieves the name of the call recording\n */\nexport async function getRecordingName(id: string) {\n if (id) {\n const fileName: string = await getRecordingFileName(id)\n if (fileName) {\n store.dispatch.player.setAudioPlayerTrackName(fileName)\n }\n }\n}\n\n/**\n * Given an id retrieves the name of the call recording\n */\nexport async function getAnnouncementName(id: string) {\n if (id) {\n const allAnnouncements: AnnouncementInfoTypes[] = await getAllAnnouncementsInfo()\n const announcement = allAnnouncements.find((announcement) => announcement.id.toString() === id)\n if (announcement?.description) {\n store.dispatch.player.setAudioPlayerTrackName(announcement.description)\n }\n }\n}\n\nexport async function getVoicemailName(id: string) {\n if (id) {\n const fileName: string = await getVoicemailFileName(id)\n\n if (fileName) {\n store.dispatch.player.setAudioPlayerTrackName(fileName)\n }\n }\n}\n"],"names":["id","getAllAnnouncementsInfo","allAnnouncements","_a","sent","announcement","find","toString","description","store","dispatch","player","setAudioPlayerTrackName","getRecordingFileName","fileName","getVoicemailFileName","getAnnouncement","audioFile","island","setIslandView","setAudioPlayerType","updateStartAudioPlayer","src","getCallRecording","getVoicemailBase64"],"mappings":"qTAwEM,SAAoCA,
|
|
1
|
+
{"version":3,"file":"audio.js","sources":["../../../src/lib/player/audio.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { getAnnouncement, getAllAnnouncementsInfo } from '../../services/offhour'\nimport { getCallRecording, getRecordingFileName } from '../../services/history_call'\nimport { store } from '../../store'\nimport { AnnouncementInfoTypes } from '../../types'\nimport { getVoicemailBase64, getVoicemailFileName } from '../../services/voicemail'\n\n/**\n * Given an id plays an announcement\n */\nexport async function playAnnouncement(id: string) {\n if (id) {\n const audioFile: string = await getAnnouncement(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('announcement')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id plays a call recording\n */\nexport async function playCallRecording(id: string) {\n if (id) {\n const audioFile: string = await getCallRecording(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('call_recording')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id plays a call recording\n */\nexport async function playVoicemail(id: string) {\n if (id) {\n const audioFile: string = await getVoicemailBase64(id)\n if (audioFile) {\n store.dispatch.island.setIslandView('player')\n store.dispatch.player.setAudioPlayerType('voicemail')\n store.dispatch.player.updateStartAudioPlayer({\n src: audioFile,\n })\n }\n }\n}\n\n/**\n * Given an id retrieves the name of the call recording\n */\nexport async function getRecordingName(id: string) {\n if (id) {\n const fileName: string = await getRecordingFileName(id)\n if (fileName) {\n store.dispatch.player.setAudioPlayerTrackName(fileName)\n }\n }\n}\n\n/**\n * Given an id retrieves the name of the call recording\n */\nexport async function getAnnouncementName(id: string) {\n if (id) {\n const allAnnouncements: AnnouncementInfoTypes[] = await getAllAnnouncementsInfo()\n const announcement = allAnnouncements.find((announcement) => announcement.id.toString() === id)\n if (announcement?.description) {\n store.dispatch.player.setAudioPlayerTrackName(announcement.description)\n }\n }\n}\n\nexport async function getVoicemailName(id: string) {\n if (id) {\n const fileName: string = await getVoicemailFileName(id)\n\n if (fileName) {\n store.dispatch.player.setAudioPlayerTrackName(fileName)\n }\n }\n}\n"],"names":["id","getAllAnnouncementsInfo","allAnnouncements","_a","sent","announcement","find","toString","description","store","dispatch","player","setAudioPlayerTrackName","getRecordingFileName","fileName","getVoicemailFileName","getAnnouncement","audioFile","island","setIslandView","setAudioPlayerType","updateStartAudioPlayer","src","getCallRecording","getVoicemailBase64"],"mappings":"qTAwEM,SAAoCA,yHACpC,OAAAA,EACsD,CAAA,EAAAC,EAAuBA,2BAD3E,CAAA,EAAA,UACEC,EAA4CC,EAA+BC,QAE7EC,OADEA,EAAeH,EAAiBI,KAAK,SAACD,GAAiB,OAAAA,EAAaL,GAAGO,aAAeP,CAAE,WAC1FK,EAAcG,cAChBC,EAAKA,MAACC,SAASC,OAAOC,wBAAwBP,EAAaG,4CAGhE,2BApBK,SAAiCR,uHACjC,OAAAA,EACuB,CAAA,EAAMa,uBAAqBb,IADhD,CAAA,EAAA,WACEc,EAAmBX,EAA8BC,SAErDK,EAAAA,MAAMC,SAASC,OAAOC,wBAAwBE,kCAGnD,2BAeK,SAAiCd,uHACjC,OAAAA,EACuB,CAAA,EAAMe,uBAAqBf,IADhD,CAAA,EAAA,WACEc,EAAmBX,EAA8BC,SAGrDK,EAAAA,MAAMC,SAASC,OAAOC,wBAAwBE,kCAGnD,2BA9EK,SAAiCd,uHACjC,OAAAA,EACwB,CAAA,EAAMgB,kBAAgBhB,IAD5C,CAAA,EAAA,WACEiB,EAAoBd,EAAyBC,UAEjDK,EAAAA,MAAMC,SAASQ,OAAOC,cAAc,UACpCV,EAAAA,MAAMC,SAASC,OAAOS,mBAAmB,gBACzCX,QAAMC,SAASC,OAAOU,uBAAuB,CAC3CC,IAAKL,oCAIZ,4BAKK,SAAkCjB,uHAClC,OAAAA,EACwB,CAAA,EAAMuB,mBAAiBvB,IAD7C,CAAA,EAAA,WACEiB,EAAoBd,EAA0BC,UAElDK,EAAAA,MAAMC,SAASQ,OAAOC,cAAc,UACpCV,EAAAA,MAAMC,SAASC,OAAOS,mBAAmB,kBACzCX,QAAMC,SAASC,OAAOU,uBAAuB,CAC3CC,IAAKL,oCAIZ,wBAKK,SAA8BjB,uHAC9B,OAAAA,EACwB,CAAA,EAAMwB,qBAAmBxB,IAD/C,CAAA,EAAA,WACEiB,EAAoBd,EAA4BC,UAEpDK,EAAAA,MAAMC,SAASQ,OAAOC,cAAc,UACpCV,EAAAA,MAAMC,SAASC,OAAOS,mBAAmB,aACzCX,QAAMC,SAASC,OAAOU,uBAAuB,CAC3CC,IAAKL,oCAIZ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../store/index.js");exports.getExtensionData=function(t){var n=e.store.getState().users.extensions;return n&&n[t]?n[t]:null},exports.getExtensionsList=function(){var t=e.store.getState().currentUser.endpoints;return(null==t?void 0:t.extension.map(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../store/index.js");exports.getExtensionData=function(t){var n=e.store.getState().users.extensions;return n&&n[t]?n[t]:null},exports.getExtensionsList=function(){var t=e.store.getState().currentUser.endpoints;return(null==t?void 0:t.extension.map(function(e){return e.id}))||[]},exports.getWebrtcExtensions=function(){var t=e.store.getState().currentUser.endpoints;if((null==t?void 0:t.extension)&&t.extension.length>0){var n=null==t?void 0:t.extension.filter(function(e){return"webrtc"===(null==e?void 0:e.type)||"nethlink"===(null==e?void 0:e.type)});return 1===n.length?n[0]:n.length>1?n:null}return null},exports.userTotallyFree=function(){var t=e.store.getState().users.extensions,n=e.store.getState().currentUser.endpoints;if(t&&n)for(var r=0,s=n.extension;r<s.length;r++){var o=s[r];if(t[o.id]&&t[o.id].conversations&&Object.keys(t[o.id].conversations).length>0)return!1}return!0};
|
|
2
2
|
//# sourceMappingURL=extensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sources":["../../../src/lib/user/extensions.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { UserExtensionTypes } from '../../types'\nimport { store } from '../../store'\nimport { ExtensionTypes } from '../../types'\nimport { isFromTrunk } from '../phone/trunk'\n\n/**\n * Retrive the webrtc extensions for currentUser extensions\n *\n * @returns An extension object, an array of extension objects or null\n */\nexport function getWebrtcExtensions(): UserExtensionTypes | UserExtensionTypes[] | null {\n // Get endpoints currentUser store\n const { endpoints } = store.getState().currentUser\n if (endpoints?.extension && endpoints.extension.length > 0) {\n const webrtcExtensions = endpoints?.extension.filter(\n (extension) => extension?.type === 'webrtc' || extension?.type === 'nethlink',\n )\n return webrtcExtensions.length === 1\n ? webrtcExtensions[0]\n : webrtcExtensions.length > 1\n ? webrtcExtensions\n : null\n }\n return null\n}\n\n/**\n * Retrieve the data of the id extension passed as parameter\n *\n * @param id The extension id\n * @return The extension data with conversations\n */\nexport function getExtensionData(id: string): ExtensionTypes | null {\n const { extensions } = store.getState().users\n return extensions && extensions[id] ? extensions[id] : null\n}\n\n/**\n * Checks if all the extensions are free\n */\nexport function userTotallyFree() {\n const { extensions } = store.getState().users\n const { endpoints } = store.getState().currentUser\n // Check all extensions for conversations\n if (extensions && endpoints) {\n for (const extension of endpoints.extension) {\n if (extensions[extension.id] && extensions[extension.id].conversations) {\n if (Object.keys(extensions[extension.id].conversations).length > 0) {\n return false\n }\n }\n }\n }\n return true\n}\n\n/**\n * Retrieve the list of the extensions of the current user\n */\nexport function getExtensionsList(): string[] {\n const { endpoints } = store.getState().currentUser\n return endpoints?.extension.map((extension) => extension.id) || []\n}\n\nexport { isFromTrunk }\n"],"names":["id","extensions","store","getState","users","endpoints","currentUser","extension","map","length","webrtcExtensions","filter","type","_i","_a","conversations","Object","keys"],"mappings":"mIAmCM,SAA2BA,GACvB,IAAAC,EAAeC,EAAKA,MAACC,WAAWC,MAAKH,WAC7C,OAAOA,GAAcA,EAAWD,GAAMC,EAAWD,GAAM,IACzD,uCAyBU,IAAAK,EAAcH,EAAKA,MAACC,WAAWG,YAAWD,UAClD,OAAOA,eAAAA,EAAWE,UAAUC,
|
|
1
|
+
{"version":3,"file":"extensions.js","sources":["../../../src/lib/user/extensions.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { UserExtensionTypes } from '../../types'\nimport { store } from '../../store'\nimport { ExtensionTypes } from '../../types'\nimport { isFromTrunk } from '../phone/trunk'\n\n/**\n * Retrive the webrtc extensions for currentUser extensions\n *\n * @returns An extension object, an array of extension objects or null\n */\nexport function getWebrtcExtensions(): UserExtensionTypes | UserExtensionTypes[] | null {\n // Get endpoints currentUser store\n const { endpoints } = store.getState().currentUser\n if (endpoints?.extension && endpoints.extension.length > 0) {\n const webrtcExtensions = endpoints?.extension.filter(\n (extension) => extension?.type === 'webrtc' || extension?.type === 'nethlink',\n )\n return webrtcExtensions.length === 1\n ? webrtcExtensions[0]\n : webrtcExtensions.length > 1\n ? webrtcExtensions\n : null\n }\n return null\n}\n\n/**\n * Retrieve the data of the id extension passed as parameter\n *\n * @param id The extension id\n * @return The extension data with conversations\n */\nexport function getExtensionData(id: string): ExtensionTypes | null {\n const { extensions } = store.getState().users\n return extensions && extensions[id] ? extensions[id] : null\n}\n\n/**\n * Checks if all the extensions are free\n */\nexport function userTotallyFree() {\n const { extensions } = store.getState().users\n const { endpoints } = store.getState().currentUser\n // Check all extensions for conversations\n if (extensions && endpoints) {\n for (const extension of endpoints.extension) {\n if (extensions[extension.id] && extensions[extension.id].conversations) {\n if (Object.keys(extensions[extension.id].conversations).length > 0) {\n return false\n }\n }\n }\n }\n return true\n}\n\n/**\n * Retrieve the list of the extensions of the current user\n */\nexport function getExtensionsList(): string[] {\n const { endpoints } = store.getState().currentUser\n return endpoints?.extension.map((extension) => extension.id) || []\n}\n\nexport { isFromTrunk }\n"],"names":["id","extensions","store","getState","users","endpoints","currentUser","extension","map","length","webrtcExtensions","filter","type","_i","_a","conversations","Object","keys"],"mappings":"mIAmCM,SAA2BA,GACvB,IAAAC,EAAeC,EAAKA,MAACC,WAAWC,MAAKH,WAC7C,OAAOA,GAAcA,EAAWD,GAAMC,EAAWD,GAAM,IACzD,uCAyBU,IAAAK,EAAcH,EAAKA,MAACC,WAAWG,YAAWD,UAClD,OAAOA,eAAAA,EAAWE,UAAUC,IAAI,SAACD,GAAc,OAAAA,EAAUP,OAAO,EAClE,yCAlDU,IAAAK,EAAcH,EAAKA,MAACC,WAAWG,YAAWD,UAClD,IAAIA,aAAS,EAATA,EAAWE,YAAaF,EAAUE,UAAUE,OAAS,EAAG,CAC1D,IAAMC,EAAmBL,aAAS,EAATA,EAAWE,UAAUI,OAC5C,SAACJ,GAAc,MAAoB,YAApBA,aAAA,EAAAA,EAAWK,OAAyC,cAApBL,aAAA,EAAAA,EAAWK,KAA3C,GAEjB,OAAmC,IAA5BF,EAAiBD,OACpBC,EAAiB,GACjBA,EAAiBD,OAAS,EAC1BC,EACA,IACL,CACD,OAAO,IACT,qCAiBU,IAAAT,EAAeC,EAAKA,MAACC,WAAWC,MAAKH,WACrCI,EAAcH,EAAKA,MAACC,WAAWG,YAAWD,UAElD,GAAIJ,GAAcI,EAChB,IAAwB,IAAAQ,EAAA,EAAAC,EAAAT,EAAUE,UAAVM,EAAAC,EAAAL,OAAAI,IAAqB,CAAxC,IAAMN,EAASO,EAAAD,GAClB,GAAIZ,EAAWM,EAAUP,KAAOC,EAAWM,EAAUP,IAAIe,eACnDC,OAAOC,KAAKhB,EAAWM,EAAUP,IAAIe,eAAeN,OAAS,EAC/D,OAAO,CAGZ,CAEH,OAAO,CACT"}
|