{"version":3,"file":"js/main.9e4d52cef2c4c338a8cf.bundle.js","mappings":"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","sources":["webpack:///./src/api/client.ts","webpack:///./src/store/alerts/slice.ts","webpack:///./src/api/clients.ts","webpack:///./src/api/services/routes.ts","webpack:///./src/api/common.ts","webpack:///./src/api/validation/archiveImagesNavMeta.ts","webpack:///./src/api/validation/cameraOrCabinetMeta.ts","webpack:///./src/utilities/api.ts","webpack:///./src/api/services/implementations/archiveMetadata.ts","webpack:///./src/api/validation/presetImages.ts","webpack:///./src/api/services/implementations/presetImages.ts","webpack:///./src/api/validation/videoRetrieval.ts","webpack:///./src/api/services/implementations/videoRetrieval.ts","webpack:///./src/api/validation/archiveCabinetInfo.ts","webpack:///./src/api/services/implementations/archiveCabinetInfo.ts","webpack:///./src/api/requestedVideos.ts","webpack:///./src/api/services/implementations/alert.ts","webpack:///./src/api/user.ts","webpack:///./src/api/elasticSearch/vmsSearchApi.ts","webpack:///./src/api/vmsBase.ts","webpack:///./src/api/liveUnitMosaic/liveUnitMosaic.ts","webpack:///./src/utilities/types/search.ts","webpack:///./src/api/speakerTalkdown/speakerTalkdownApi.ts","webpack:///./src/store/elasticSearch/slice.ts","webpack:///./src/api/map/archiveCabinets/archiveCabinetSchema.ts","webpack:///./src/api/map/archiveCabinets/archiveCabinets.ts","webpack:///./src/store/map/archiveCabinets/slice.ts","webpack:///./src/api/map/liveUnits/liveUnitSchema.ts","webpack:///./src/api/map/liveUnits/liveUnits.ts","webpack:///./src/store/map/liveUnits/slice.ts","webpack:///./src/utilities/time.ts","webpack:///./src/store/archives/slice.ts","webpack:///./src/api/cameras.ts","webpack:///./src/store/cameras/slice.ts","webpack:///./src/api/streamMetadata/schema.ts","webpack:///./src/api/streamMetadata/streamMetadata.ts","webpack:///./src/api/streamMetadata/types.ts","webpack:///./src/store/clients/slice.ts","webpack:///./src/api/archiveCabinets/archiveCabinets.ts","webpack:///./src/store/liveUnitNav/slice.ts","webpack:///./src/api/liveUnits/liveUnitSchema.ts","webpack:///./src/api/liveUnits/liveUnits.ts","webpack:///./src/store/liveUnits/slice.ts","webpack:///./src/store/map/slice.ts","webpack:///./src/store/streamData/slice.ts","webpack:///./src/store/user/slice.ts","webpack:///./src/api/users.ts","webpack:///./src/store/userLists/slice.ts","webpack:///./src/store/index.ts","webpack:///./src/common/components/Featurehub.tsx","webpack:///./src/common/containers/EmptyLayout.tsx","webpack:///./src/common/components/SVG/Svg.styles.ts","webpack:///./src/common/components/SVG/Svg.tsx","webpack:///./src/common/contexts/productEntitlementsContext.tsx","webpack:///./src/utilities/support.ts","webpack:///./src/common/components/VerticalNavBar/HelpCenter/HelpCenter.styles.ts","webpack:///./src/common/components/VerticalNavBar/HelpCenter/HelpCenter.tsx","webpack:///./src/common/components/VerticalNavBar/MyAccount/MyAccount.tsx","webpack:///./src/common/components/VerticalNavBar/VerticalNavBar.tsx","webpack:///./src/common/components/VerticalNavBar/useShouldShowReports.ts","webpack:///./src/common/containers/SideNavLayout.tsx","webpack:///./src/common/contexts/ArchiveMetadataContext.tsx","webpack:///./src/common/contexts/PresetImagesContext.tsx","webpack:///./src/common/contexts/VideoRetrievalContext.tsx","webpack:///./src/locales/enUS.ts","webpack:///./src/i18n.ts","webpack:///./src/common/contexts/FeatureFlagContext.tsx","webpack:///./src/utilities/OnFeatureFlag.tsx","webpack:///./src/utilities/hooks/fullstory.ts","webpack:///./src/common/components/InformationalVideoModal/InformationalVideoModal.tsx","webpack:///./src/common/components/InformationalVideoModal/InformationalVideoModalWrapper.tsx","webpack:///./src/common/components/InformationalVideoModal/types.ts","webpack:///./src/common/components/MapLandingPage/Filters/FiltersStyles.ts","webpack:///./src/common/components/MapLandingPage/Filters/Filters.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/RightUnitDrawerStyles.ts","webpack:///./src/common/components/MapLandingPage/MapView/MapViewStyles.ts","webpack:///./src/api/liveUnits/defaultCamera.ts","webpack:///./src/api/validation/liveUnitMeta.ts","webpack:///./src/api/services/implementations/liveUnitMetadata.ts","webpack:///./src/utilities/types/archive.ts","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/UnitInfoBoxStyles.ts","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/ArchiveCabinetInfoBox.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/CameraNavigationStyles.ts","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/CameraPreviewStyles.ts","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/CameraPreview.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/CameraNavigation.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/DrawerNavigationButtonsStyles.ts","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/DrawerNavigationButtons.tsx","webpack:///./src/common/components/streaming/HealthDot/HealthDot.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/LiveUnitInfoBox.tsx","webpack:///./src/common/components/MapLandingPage/RightUnitDrawer/RightUnitDrawer.tsx","webpack:///./src/utilities/types/liveunit.ts","webpack:///./src/utilities/liveUnitHelper.ts","webpack:///./src/common/components/MapLandingPage/Map/MapHelper.ts","webpack:///./src/common/components/MapLandingPage/Map/ArchiveCabinetMarker/ArchiveCabinetMarkerStyles.ts","webpack:///./src/common/components/MapLandingPage/Map/ArchiveCabinetMarker/ArchiveCabinetMarker.tsx","webpack:///./src/common/components/MapLandingPage/Map/ClusterMarker/ClusterMarkerStyles.ts","webpack:///./src/common/components/MapLandingPage/Map/ClusterMarker/ClusterMarker.tsx","webpack:///./src/common/components/MapLandingPage/Map/DeactivatedUnitMarker/DeactivatedUnitMarkerStyles.ts","webpack:///./src/common/components/MapLandingPage/Map/DeactivatedUnitMarker/DeactivatedUnitMarker.tsx","webpack:///./src/common/components/MapLandingPage/Map/LiveUnitMarker/LiveUnitMarkerStyles.ts","webpack:///./src/common/components/MapLandingPage/Map/LiveUnitMarker/LiveUnitMarker.tsx","webpack:///./src/common/components/MapLandingPage/Map/MapStyles.ts","webpack:///./src/utilities/localStorage/index.ts","webpack:///./src/utilities/types/common.ts","webpack:///./src/utilities/localStorage/recentSearches.ts","webpack:///./src/utilities/jsx.tsx","webpack:///./src/common/components/VmsSearch/RecentSearches/RecentSearches.tsx","webpack:///./src/common/components/VmsSearch/SearchInput/SearchInput.Util.ts","webpack:///./src/common/components/VmsSearch/SearchInput/SearchInputStyles.ts","webpack:///./src/common/components/VmsSearch/SearchInput/SearchInput.tsx","webpack:///./src/common/components/VmsSearch/Results/ResultStyles.ts","webpack:///./src/common/components/VmsSearch/Results/ArchiveCabinetResult.tsx","webpack:///./src/common/components/VmsSearch/Results/ClientResult.tsx","webpack:///./src/common/components/VmsSearch/Results/LiveUnitResult.tsx","webpack:///./src/common/components/VmsSearch/Results/RegionResult.tsx","webpack:///./src/common/components/VmsSearch/VmsSearch.Utils.ts","webpack:///./src/common/components/VmsSearch/VmsSearchResults.tsx","webpack:///./src/common/components/VmsSearch/VmsSearchStyles.ts","webpack:///./src/common/components/VmsSearch/VmsSearch.tsx","webpack:///./src/utilities/hooks/useFocus.ts","webpack:///./src/common/hooks/useSearch.ts","webpack:///./src/common/components/MapLandingPage/Map/Map.tsx","webpack:///./src/common/components/MapLandingPage/SearchMap/SearchMap.tsx","webpack:///./src/common/components/MapLandingPage/MapView/MapView.tsx","webpack:///./src/views/mapLanding/MapLandingPage.tsx","webpack:///./src/common/containers/Failure/Failure.styles.ts","webpack:///./src/common/containers/Failure/Failure.tsx","webpack:///./src/common/containers/Loading.styles.ts","webpack:///./src/common/containers/Loading.tsx","webpack:///./src/utilities/types/alert.ts","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertClip/MediaErrorPlaceholder/MediaErrorPlaceholder.styles.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertClip/MediaErrorPlaceholder/MediaErrorPlaceholder.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertClip/AlertClip.styles.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertClip/AlertClip.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertIcon/AlertIcon.styles.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertIcon/AlertIcon.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertItem.styles.tsx","webpack:///./src/views/alerts/AlertsPage/AlertItem/AlertItem.tsx","webpack:///./src/views/alerts/AlertsPage/ResolveDialog/ResolveDialog.styles.ts","webpack:///./src/views/alerts/AlertsPage/ResolveDialog/ResolveDialog.tsx","webpack:///./src/views/alerts/AlertsPage/AlertsPage.styles.tsx","webpack:///./src/views/alerts/AlertsPage/AlertsPage.tsx","webpack:///./src/common/components/LiveUnitNav/LiveUnitNavSearchBarStyles.ts","webpack:///./src/common/components/LiveUnitNav/LiveUnitNavStyles.ts","webpack:///./src/utilities/localStorage/recentStreamingCameras.ts","webpack:///./src/common/components/Header/HeaderStyles.ts","webpack:///./src/common/components/Header/Header.tsx","webpack:///./src/common/components/LiveUnitNav/LiveUnitNavTabs/types.ts","webpack:///./src/common/components/LiveUnitNav/LiveUnitNavTabs/LiveUnitNavTabs.tsx","webpack:///./src/common/components/LiveUnitNav/LiveUnitNav.tsx","webpack:///./src/common/components/RequestedVideosPage/PreviewModal/PreviewModal.styles.ts","webpack:///./src/common/components/RequestedVideosPage/PreviewModal/PreviewModal.tsx","webpack:///./src/common/components/RequestedVideosPage/RequestedVideosPage.styles.ts","webpack:///./src/common/components/RequestedVideosPage/RequestedVideoRow/RequestedVideoRow.styles.ts","webpack:///./src/common/components/RequestedVideosPage/RequestedVideoRow/RequestedVideoRow.tsx","webpack:///./src/common/components/RequestedVideosPage/RequestedVideosTable/RequestedVideosTable.tsx","webpack:///./src/common/components/RequestedVideosPage/RequestedVideosPage.tsx","webpack:///./src/common/components/ArchivePage/CameraSection/CameraSectionStyles.ts","webpack:///./src/common/components/ArchivePage/ImageCarousel/ImageCarouselStyles.ts","webpack:///./src/common/contexts/LiveUnitMetadataContext.tsx","webpack:///./src/common/components/ArchivePage/ImageCarousel/ImageCarousel.tsx","webpack:///./src/common/components/ArchivePage/Preset/PresetStyles.ts","webpack:///./src/common/components/ArchivePage/Preset/PresetThumbnail.tsx","webpack:///./src/common/components/Draggable/Draggable.tsx","webpack:///./src/common/components/Draggable/DraggableTime/DraggableTime.tsx","webpack:///./src/common/components/ArchivePage/Preset/HoverImage.styles.ts","webpack:///./src/common/components/ArchivePage/Preset/HoverImage.tsx","webpack:///./src/common/components/ArchivePage/Preset/Preset.tsx","webpack:///./src/store/archives/async.ts","webpack:///./src/common/components/ArchivePage/CameraSection/CameraSection.tsx","webpack:///./src/store/archives/selector.ts","webpack:///./src/utilities/async.ts","webpack:///./src/common/components/ArchivePage/CameraSection/CameraSection.utils.ts","webpack:///./src/common/components/ArchivePage/VideoRequestOverlay/VideoRequestOverlay.scss","webpack:///./src/common/components/ArchivePage/VideoRequestOverlay/VideoRequestOverlay.tsx","webpack:///./src/common/components/ArchivePage/CameraList/CameraListStyles.ts","webpack:///./src/common/components/ArchivePage/CameraList/CameraList.tsx","webpack:///./src/common/components/Timeline/Timeline.styles.ts","webpack:///./src/common/components/Timeline/Tick.tsx","webpack:///./src/common/components/Timeline/Timeline.tsx","webpack:///./src/common/components/ArchivePage/ArchiveTimeline/ArchiveTimeline.tsx","webpack:///./src/common/components/ArchivePage/DateTimeHeader/DateTimeHeaderStyles.ts","webpack:///./src/common/components/ArchivePage/VideoRequestHeader/VideoRequestHeaderStyles.ts","webpack:///./src/common/components/ArchivePage/VideoRequestModal/VideoRequestModalStyles.ts","webpack:///./src/common/components/ArchivePage/VideoRequestModal/VideoRequestModal.tsx","webpack:///./src/common/components/ArchivePage/VideoRequestHeader/VideoRequestHeader.scss","webpack:///./src/common/components/ArchivePage/VideoRequestHeader/VideoRequestHeader.tsx","webpack:///./src/common/components/ArchivePage/DateTimeHeader/DateTimeHeader.tsx","webpack:///./src/views/archives/ArchivesPage.Utils.ts","webpack:///./src/views/archives/ArchivesPage.tsx","webpack:///./src/utilities/types/streaming.ts","webpack:///./src/common/components/streaming/ActionButtons/ActionButton.styles.tsx","webpack:///./src/common/components/streaming/ActionButtons/LightsButton/LightsButtonItem.tsx","webpack:///./src/common/components/streaming/ActionButtons/LightsButton/LightsButton.tsx","webpack:///./src/common/components/streaming/ActionButtons/PresetsButton/AddPreset.tsx","webpack:///./src/common/components/streaming/ActionButtons/PresetsButton/PresetsMenuItem.tsx","webpack:///./src/common/components/streaming/ActionButtons/PresetsButton/PresetsButton.tsx","webpack:///./src/common/components/streaming/ActionButtons/QuickDownloadButton/QuickDownloadButton.tsx","webpack:///./src/common/components/streaming/ActionButtons/QuickSettingsButton/QuickSettingsButtonStyles.ts","webpack:///./src/common/components/streaming/ActionButtons/QuickSettingsButton/QuickSettingsButton.tsx","webpack:///./src/common/components/streaming/ActionButtons/SnapshotButton/SnapshotModal/SnapshotModalStyles.ts","webpack:///./src/common/components/streaming/ActionButtons/SnapshotButton/SnapshotModal/SnapshotModal.tsx","webpack:///./src/common/components/streaming/ActionButtons/SnapshotButton/SnapshotButton.tsx","webpack:///./src/common/components/streaming/ActionButtons/QuickSoundsButton/QuickSounds.tsx","webpack:///./src/utilities/twilio.ts","webpack:///./src/common/components/streaming/ActionButtons/SpeakerButtons/SpeakerButtons.tsx","webpack:///./src/common/components/streaming/ActionButtons/SuspendPatrolButton/SuspendPatrolModal/SuspendPatrolModal.scss","webpack:///./src/common/components/streaming/ActionButtons/SuspendPatrolButton/SuspendPatrolModal/SuspendPatrolModal.tsx","webpack:///./src/common/components/streaming/ActionButtons/SuspendPatrolButton/SuspendPatrolButton.tsx","webpack:///./src/common/components/streaming/CameraCard/Thumbnail.tsx","webpack:///./src/common/components/streaming/CameraCard/ImgMediaCard.tsx","webpack:///./src/common/components/streaming/Camera/Camera.tsx","webpack:///./src/common/components/streaming/Camera/Camera.scss","webpack:///./src/common/components/streaming/CameraNav/CameraNav.styles.ts","webpack:///./src/common/components/streaming/CameraNav/CameraGroupName.tsx","webpack:///./src/common/components/streaming/CameraNav/CameraNav.tsx","webpack:///./src/common/components/streaming/StreamCamNav/StreamCamNav.tsx","webpack:///./src/common/components/streaming/StreamContent/StreamContent.styles.ts","webpack:///./src/common/components/streaming/StreamContent/StreamContentHead.tsx","webpack:///./src/common/components/streaming/StreamContent/StreamContent.tsx","webpack:///./src/common/components/streaming/StreamContent/StreamContent.Utils.ts","webpack:///./src/views/stream/StreamPage.styles.ts","webpack:///./src/views/stream/StreamPage.tsx","webpack:///./src/views/liveUnit/LiveUnitPage.styles.ts","webpack:///./src/views/liveUnit/LiveUnitPage.tsx","webpack:///./src/common/contexts/AlertTileContextType.tsx","webpack:///./src/utilities/alerts.ts","webpack:///./src/common/components/liveUnitMosaic/AlertMediaTile/AlertMediaTile.styles.ts","webpack:///./src/common/components/liveUnitMosaic/AlertMediaTile/AlertMediaTile.tsx","webpack:///./src/common/components/liveUnitMosaic/Mosaic/MosaicItem/MosaicItem.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Mosaic/MosaicItem/MosaicItem.tsx","webpack:///./src/common/components/liveUnitMosaic/CameraStreamTile/CameraStreamTile.styles.ts","webpack:///./src/common/components/liveUnitMosaic/CameraStreamTile/CameraStreamTile.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/AlertFooter/AlertFooter.Styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/AlertFooter/AlertFooter.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/AlertTimelineFooter/AlertTimelineFooter.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/AlertTimelineFooter/AlertTimelineFooter.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/LightsButton/LightsButton.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/LightsButton/LightsButton.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/SoundsButton/SoundsButton.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/SoundsButton/SoundsButton.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/SpeakerTalkdownButton/SpeakerTalkdownButton.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/SpeakerTalkdownButton/SpeakerTalkdownButton.tsx","webpack:///./src/common/components/liveUnitMosaic/Footer/LiveStreamFooter/LiveStreamFooter.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Footer/LiveStreamFooter/LiveStreamFooter.tsx","webpack:///./src/common/components/liveUnitMosaic/Header/Header.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Header/Header.tsx","webpack:///./src/common/components/liveUnitMosaic/Mosaic/Mosaic.styles.ts","webpack:///./src/common/components/liveUnitMosaic/Mosaic/Mosaic.tsx","webpack:///./src/views/liveUnitMosaic/LiveUnitMosaicPage.styles.ts","webpack:///./src/views/liveUnitMosaic/LiveUnitViewers/LiveUnitViewersItem/LiveUnitViewersItem.styles.tsx","webpack:///./src/views/liveUnitMosaic/LiveUnitViewers/LiveUnitViewersItem/LiveUnitViewersItem.tsx","webpack:///./src/views/liveUnitMosaic/LiveUnitViewers/LiveUnitViewers.styles.tsx","webpack:///./src/views/liveUnitMosaic/LiveUnitViewers/LiveUnitViewers.tsx","webpack:///./src/views/liveUnitMosaic/LiveUnitMosaicPage.tsx","webpack:///./src/common/components/LegacyMosaic/Mosaic.styles.ts","webpack:///./src/common/components/LegacyMosaic/MosaicItem.tsx","webpack:///./src/common/components/LegacyMosaic/Mosaic.tsx","webpack:///./src/views/mosaic/MosaicPage.tsx","webpack:///./src/common/containers/App.tsx","webpack:///./src/index.tsx","webpack:///./src/api/services/implementations/featureFlag.ts","webpack:///./src/utilities/twilio.min.js"],"sourcesContent":["import globals from \"@lvt/globals\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\n\nexport default applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n withCredentials: true,\n }),\n {\n preservedKeys: [\n \"controlMode\",\n \"controlValue\",\n \"controlXValue\",\n \"controlYValue\",\n \"resolutionX\",\n \"resolutionY\",\n ],\n },\n);\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\n\nexport enum Severity {\n Error = \"error\",\n Warning = \"warning\",\n Info = \"info\",\n Success = \"success\",\n}\n\ninterface AlertState {\n alerts: Array;\n alertIndex: number;\n}\n\ninterface Alert {\n message: string;\n severity: Severity;\n index: number;\n}\n\nconst initialState: AlertState = {\n alerts: [],\n alertIndex: 1,\n};\n\nconst alertsSlice = createSlice({\n name: \"alerts\",\n initialState,\n reducers: {\n addAlert(state, action: PayloadAction>) {\n state.alerts.unshift({\n ...action.payload,\n index: state.alertIndex++,\n });\n },\n },\n});\n\nexport const { addAlert } = alertsSlice.actions;\nexport const alertsReducer = alertsSlice.reducer;\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk, SerializedError } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\n\n\nexport interface Client {\n id: number;\n name: string;\n}\n\nconst fetchClientsSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n additionalProperties: false,\n properties: {\n status: { const: 200 },\n statusMessage: { type: \"string\" },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"name\"],\n additionalProperties: true,\n properties: {\n id: { type: \"integer\" },\n name: { type: \"string\" },\n },\n },\n },\n },\n};\n\nconst fetchClientsValidator = new Ajv().compile(fetchClientsSchema);\n\nexport const fetchClients = createAsyncThunk(\"fetchClients\", async (_, { dispatch }) => {\n try {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n\n const response = await client.get(\"/api/clients?page_type=streaming\", {\n withCredentials: true,\n });\n\n if (fetchClientsValidator(response.data)) {\n return response.data.data as Array;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(fetchClientsValidator.errors),\n };\n\n throw error;\n }\n } catch (e) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to retrieve clients\",\n }),\n );\n\n throw e;\n }\n});\n","import globals from \"@lvt/globals\";\nimport { DateTime } from \"luxon\";\n\n\nconst root = globals.userdashboard.proxyUrl;\n\nexport const routes = {\n getLiveUnitMetaData: (liveUnitId: number): string => {\n return `${root}/api/archive/live_units/${liveUnitId}/nav_meta`;\n },\n getArchiveCabinetMetaData: (archiveCabinetId: number): string => {\n return `${root}/api/archive/archive_cabinets/${archiveCabinetId}/nav_meta`;\n },\n getCameraOrCabinetMetadata: (): string => {\n return `${root}/api/archive/camera_metadata`;\n },\n getPresetImages: (presetId: number, startTime: DateTime, endTime: DateTime): string => {\n return `${root}/api/archive/preset/${presetId}/images/${encodeURIComponent(\n startTime.toUTC().toISO(),\n )}/${encodeURIComponent(endTime.toUTC().toISO())}`;\n },\n getPresetsImages: (): string => {\n return `${root}/api/archive/presets_images`;\n },\n retrieveVideo: (cameraId: number) => {\n return `${root}/api/cameras/archive/${cameraId}`;\n },\n getLiveUnitMetaDataLanding: (liveUnitId: number): string => {\n return `${root}/api/vms/live_units/${liveUnitId}/meta`;\n },\n getLiveUnitInfo: (liveUnitId: number): string => {\n return `${root}/api/vms/live_unit_info/${liveUnitId}`;\n },\n getArchiveCabinetInfo: (archiveCabinetId: number): string => {\n return `${root}/api/vms/archive_cabinets/${archiveCabinetId}`;\n },\n postUserFeedback: (): string => {\n return `${root}/api/user_feedback`;\n },\n getPresignedUrl: (presetId: number): string => {\n return `${root}/api/archive/get_latest_preset_image_presigned_url/${presetId}`;\n },\n postResolveAlert: (alertId: string): string => {\n return `${root}/api/alerts/${alertId}/resolve`;\n },\n getAlert: (alertId: string): string => {\n return `${root}/api/alerts/${alertId}`;\n },\n getAlerts: (): string => {\n return `${root}/api/alerts`;\n },\n};\n","import { AnyAction, SerializedError, ThunkDispatch } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport { AxiosResponse } from \"axios\";\n\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\n\n\nexport interface LvtResponse {\n data: D;\n status: number;\n statusMessage: string;\n}\n\nexport function lvtResponseSchema(dataSchema: any) {\n return {\n type: \"object\",\n additionalProperties: false,\n required: [\"status\", \"statusMessage\", \"data\"],\n properties: {\n status: { const: 200 },\n statusMessage: { type: \"string\" },\n data: dataSchema,\n },\n };\n}\n\nexport type LvtResponse2 = {\n data: D;\n error: null;\n} | {\n data: null;\n error: E;\n};\n\nexport const lvtResponseSchema2 = (dataSchema: any) => {\n return {\n type: \"object\",\n additionalProperties: false,\n required: [\"data\", \"error\"],\n properties: {\n data: dataSchema,\n error: {},\n },\n };\n};\n\nexport const validateRequest = async (\n dispatch: ThunkDispatch,\n request: Promise>>,\n validator: Ajv.ValidateFunction,\n message: string,\n) => {\n try {\n const response = await request;\n\n if (validator(response.data)) {\n return response.data.data;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(validator.errors),\n };\n\n throw error;\n }\n } catch (e) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message,\n }),\n );\n\n console.log(\"ERROR: \", e);\n\n throw e;\n }\n};\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n// TODO: do the schema\nconst archiveImagesNavMetaProperties = {\n liveUnitId: { type: \"integer\" },\n clientId: { type: \"integer\" },\n name: { type: \"string\" },\n recordingStart: { type: [\"string\", \"null\"] },\n archiveImagesStart: { type: [\"string\", \"null\"] },\n timezone: { type: \"string\" },\n cameraIds: { type: \"array\", items: { type: \"integer\" } },\n};\n\nconst archiveImagesNavMetaSchema = {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(archiveImagesNavMetaProperties),\n properties: archiveImagesNavMetaProperties,\n};\n\nexport const archiveImagesNavMetaValidator = new Ajv().compile(archiveImagesNavMetaSchema);\n\nconst lvtResponseArchiveImagesNavMetaSchema = lvtResponseSchema(archiveImagesNavMetaSchema);\n\nexport const lvtResponseArchiveImagesNavMetaValidator = new Ajv().compile(lvtResponseArchiveImagesNavMetaSchema);\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n\nconst cameraOrCabinetMetadataProperties = {\n record: {\n type: \"object\",\n items: {\n oneOf: [\n {\n properties: {\n id: { type: \"number\" },\n name: { type: \"string\" },\n notRecordingReason: { type: [\"string\", \"null\"] },\n clientId: { type: [\"number\", \"null\"] },\n },\n },\n {\n properties: {\n id: { type: \"number\" },\n name: { type: \"string\" },\n notRecordingReason: { type: [\"string\", \"null\"] },\n clientId: { type: [\"number\", \"null\"] },\n canRequestVideo: { type: \"boolean\" },\n },\n },\n ],\n },\n },\n archivedVideos: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: { type: \"number\" },\n cameraId: { type: [\"number\", \"null\"] },\n archiveCabinetId: { type: [\"number\", \"null\"] },\n title: { type: [\"string\", \"null\"] },\n url: { type: [\"string\", \"null\"] },\n bytes: { type: [\"number\", \"null\"] },\n timestampRecorded: { type: [\"string\", \"null\"] },\n timestampRequested: { type: [\"string\", \"null\"] },\n requestedDurationMinutes: { type: [\"number\", \"null\"] },\n },\n },\n },\n presets: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: { type: \"number\" },\n cameraId: { type: [\"number\", \"null\"] },\n archiveCabinetId: { type: [\"number\", \"null\"] },\n name: { type: [\"string\", \"null\"] },\n default: { type: \"boolean\" },\n },\n },\n },\n};\n\nconst cameraOrCabinetMetadataSchema = {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(cameraOrCabinetMetadataProperties),\n properties: cameraOrCabinetMetadataProperties,\n },\n};\n\nexport const cameraMetadataValidator = new Ajv().compile(cameraOrCabinetMetadataSchema);\n\nconst lvtResponseCameraOrCabinetMetadataSchema = lvtResponseSchema(cameraOrCabinetMetadataSchema);\n\nexport const lvtResponseCameraOrCabinetMetadataValidator = new Ajv().compile(lvtResponseCameraOrCabinetMetadataSchema);\n","// TODO: Move to a central logger\nexport const logError = (route: string | null, error: Error) => {\n //NOTE: No central error handling exists at this time. Logging to console to assist debugging.\n console.log(`service network error -> ${error.message}. Route -> ${route}`);\n};\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { ArchiveMetadataService } from \"@/api/services/interfaces\";\nimport { routes } from \"@/api/services/routes\";\nimport { lvtResponseArchiveImagesNavMetaValidator } from \"@/api/validation/archiveImagesNavMeta\";\nimport { lvtResponseCameraOrCabinetMetadataValidator } from \"@/api/validation/cameraOrCabinetMeta\";\nimport { logError } from \"@/utilities/api\";\nimport {\n ArchiveImagesNavMeta,\n Cabinet,\n Camera,\n CameraOrCabinetMetadata,\n CameraOrCabinetMetadataResponse,\n} from \"@/utilities/types/archive\";\n\n\naxios.defaults.withCredentials = true;\n\nconst client = applyCaseMiddleware(axios.create());\n\nexport const archiveMetadataService: ArchiveMetadataService = {\n async fetchLiveUnitMetadata(liveUnitId: number): Promise {\n const route = routes.getLiveUnitMetaData(liveUnitId);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponseArchiveImagesNavMetaValidator(response.data)) {\n return response.data.data as ArchiveImagesNavMeta; //TODO: conversion?\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseArchiveImagesNavMetaValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n async fetchArchiveCabinetMetadata(archiveCabinetId: number): Promise {\n const route = routes.getArchiveCabinetMetaData(archiveCabinetId);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponseArchiveImagesNavMetaValidator(response.data)) {\n return response.data.data as ArchiveImagesNavMeta; //TODO: conversion?\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseArchiveImagesNavMetaValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n async fetchCameraOrCabinetMetadata(\n cameraIds: number[] | null,\n archiveCabinetIds: number[] | null,\n ): Promise {\n const route = routes.getCameraOrCabinetMetadata();\n\n try {\n const response = await client.post(route, { cameraIds, archiveCabinetIds });\n\n if (lvtResponseCameraOrCabinetMetadataValidator(response.data)) {\n const responseData: CameraOrCabinetMetadataResponse[] = response.data.data;\n\n const convertedData = responseData.map((data: CameraOrCabinetMetadataResponse) => {\n const recordType = (): Camera | Cabinet => {\n if (data.record.hasOwnProperty(\"camera\")) return data.record.camera as Camera;\n else return data.record.cabinet as Cabinet;\n };\n\n return {\n record: recordType(),\n archivedVideos: data.archivedVideos,\n presets: data.presets,\n };\n });\n\n return convertedData;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseCameraOrCabinetMetadataValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n};\n\nexport const dummyArchiveMetadataService: ArchiveMetadataService = {\n async fetchLiveUnitMetadata(): Promise {\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n async fetchArchiveCabinetMetadata(): Promise {\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n async fetchCameraOrCabinetMetadata(): Promise {\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n};\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n// TODO: do the schema\nconst presetImagesProperties = {\n datetimeRecorded: { type: \"string\" },\n imageUrl: { type: \"string\" },\n thumbUrl: { type: [\"string\", \"null\"] },\n presetId: { type: \"integer\" },\n};\n\nconst presetImageSchema = {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(presetImagesProperties),\n properties: presetImagesProperties,\n};\n\nconst presetImagesSchema = {\n type: \"array\",\n items: presetImageSchema,\n uniqueItems: true,\n};\n\nexport const presetImagesValidator = new Ajv().compile(presetImagesSchema);\n\nconst lvtResponsePrestImagesSchema = lvtResponseSchema(presetImagesSchema);\n\n// TODO: actually do this\nexport const lvtResponsePresetImagesValidator = new Ajv().compile(lvtResponsePrestImagesSchema);\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\nimport { DateTime } from \"luxon\";\n\nimport { PresetImagesService } from \"@/api/services/interfaces\";\nimport { lvtResponsePresetImagesValidator } from \"@/api/validation/presetImages\";\nimport { logError } from \"@/utilities/api\";\nimport { ArchiveImage } from \"@/utilities/types/archive\";\n\nimport { routes } from \"../routes\";\n\n\naxios.defaults.withCredentials = true;\n\nconst client = applyCaseMiddleware(axios.create());\n\nexport const presetImagesService: PresetImagesService = {\n async fetchPresetImages(presetId: number, startTime: DateTime, endTime: DateTime): Promise {\n const route = routes.getPresetImages(presetId, startTime, endTime);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponsePresetImagesValidator(response.data)) {\n return response.data.data as ArchiveImage[]; //TODO: conversion?\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponsePresetImagesValidator.errors),\n };\n\n return error as Error;\n }\n } catch (error) {\n logError(route, error as Error);\n\n return error as Error;\n }\n },\n async fetchPresetsImages(\n presetIds: number[],\n startTime: DateTime,\n endTime: DateTime,\n ): Promise {\n const route = routes.getPresetsImages();\n\n try {\n const response = await client.post(route, {\n start: startTime.toUTC().toISO(),\n end: endTime.toUTC().toISO(),\n presetIds,\n });\n\n if (lvtResponsePresetImagesValidator(response.data)) {\n return response.data.data as ArchiveImage[]; //TODO: conversion?\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponsePresetImagesValidator.errors),\n };\n\n return error as Error;\n }\n } catch (error) {\n logError(route, error as Error);\n\n return error as Error;\n }\n },\n async fetchPresetImagePresignedUrl(presetId: number): Promise {\n const route = routes.getPresignedUrl(presetId);\n\n try {\n const response = await client.get(route);\n\n console.log(\"The presigned url response: \", response.data.data);\n\n return response.data.data;\n } catch (error) {\n logError(route, error as Error);\n console.log(\"The presigned url ERROR response: \", error);\n\n return error as Error;\n }\n },\n};\n\nexport const dummyPresetImagesService: PresetImagesService = {\n async fetchPresetImages(): Promise {\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n async fetchPresetsImages(\n ): Promise {\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n async fetchPresetImagePresignedUrl(): Promise {\n\n const error = {\n name: \"dummy\",\n message: \"Using the dummy service\",\n };\n\n throw error;\n },\n};\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n\nconst videoRetrievalSchema = {\n type: \"number\",\n};\n\nexport const videoRetrievalValidator = new Ajv().compile(videoRetrievalSchema);\n\nconst lvtResponseVideoRetrievalSchema = lvtResponseSchema(videoRetrievalSchema);\n\n// TODO: actually do this\nexport const lvtResponseVideoRetrievalValidator = new Ajv().compile(lvtResponseVideoRetrievalSchema);\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\nimport { DateTime } from \"luxon\";\n\nimport { VideoRetrievalService } from \"@/api/services/interfaces\";\nimport { lvtResponseVideoRetrievalValidator } from \"@/api/validation/videoRetrieval\";\nimport { logError } from \"@/utilities/api\";\n\nimport { routes } from \"../routes\";\n\n\naxios.defaults.withCredentials = true;\n\nconst client = applyCaseMiddleware(axios.create());\n\nexport const videoRetrievalService: VideoRetrievalService = {\n async requestVideoRetrieval(\n cameraId: number,\n title: string,\n startTime: DateTime,\n endTime: DateTime,\n ): Promise {\n const route = routes.retrieveVideo(cameraId);\n\n try {\n const response = await client.post(route, {\n title,\n start: startTime.toUTC().toISO(),\n stop: endTime.toUTC().toISO(),\n });\n\n if (lvtResponseVideoRetrievalValidator(response.data)) {\n return;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseVideoRetrievalValidator.errors),\n };\n\n return error as Error;\n }\n } catch (error) {\n logError(route, error as Error);\n\n return (error as Error);\n }\n },\n};\n\nexport const dummyVideoRetrievalService: VideoRetrievalService = {\n async requestVideoRetrieval(\n cameraId: number,\n title: string,\n startTime: DateTime,\n endTime: DateTime,\n ): Promise {\n const error = {\n name: \"dummy\",\n message: `Using the dummy service for cameraId: ${cameraId}, with title: ${title}, starttime: ${startTime} and endtime: ${endTime}`,\n };\n\n return error;\n },\n};\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n\nconst archiveCabinetInfoProperties = {\n id: { type: \"number\" },\n clientId: { type: \"number\" },\n clientName: { type: [\"string\", \"null\"] },\n locationName: { type: [\"string\", \"null\"] },\n liveUnitName: { type: [\"string\", \"null\"] },\n city: { type: [\"string\", \"null\"] },\n state: { type: [\"string\", \"null\"] },\n accessArchives: { type: \"boolean\" },\n showClientName: { type: \"boolean\" },\n};\n\nconst archiveCabinetInfoSchema = {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(archiveCabinetInfoProperties),\n properties: archiveCabinetInfoProperties,\n};\n\nexport const archiveCabinetInfoValidator = new Ajv().compile(archiveCabinetInfoSchema);\n\nconst lvtResponseArchiveCabinetInfoSchema = lvtResponseSchema(archiveCabinetInfoSchema);\n\nexport const lvtResponseArchiveCabinetInfoValidator = new Ajv().compile(lvtResponseArchiveCabinetInfoSchema);\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { ArchiveCabinetInfoService } from \"@/api/services/interfaces\";\nimport { routes } from \"@/api/services/routes\";\nimport { lvtResponseArchiveCabinetInfoValidator } from \"@/api/validation/archiveCabinetInfo\";\nimport { logError } from \"@/utilities/api\";\nimport { ArchiveCabinetInfo } from \"@/utilities/types/archive\";\n\n\nconst client = applyCaseMiddleware(axios.create());\n\naxios.defaults.withCredentials = true;\n\nexport const archiveCabinetInfoService: ArchiveCabinetInfoService = {\n async fetchArchiveCabinetInfo(archiveCabinetId: number): Promise {\n const route = routes.getArchiveCabinetInfo(archiveCabinetId);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponseArchiveCabinetInfoValidator(response.data)) {\n return response.data.data as ArchiveCabinetInfo;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseArchiveCabinetInfoValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n};\n","import globals from \"@lvt/globals\";\nimport { createApi } from \"@reduxjs/toolkit/query/react\";\n\nimport { vmsBaseQuery } from \"@/api/vmsBase\";\n\n// Interfaces\nexport interface RequestedVideo {\n /**\n * An id that can be for a camera or archive cabinet.\n */\n camOrAcId: number;\n /**\n * The url for the dewarped video. Video playback will either use this or the videoUrl.\n */\n dewarpedVideoUrl?: string;\n /**\n * Id for the requested video itself.\n */\n id: number;\n /**\n * Flag to check if the requested video comes from an archive cabinet.\n */\n isArchiveCabinet: boolean;\n /**\n * Flag to display in the UI if the video comes from a thermal camera.\n */\n isThermal: boolean;\n /**\n * The city where the video was recorded.\n */\n locationCity?: string;\n /**\n * The county where the video was recorded.\n */\n locationCounty?: string;\n /**\n * The country where the video was recorded.\n */\n locationCountry?: string;\n /**\n * The name of the location where the video was recorded.\n */\n locationName?: string;\n /**\n * The state where the video was recorded.\n */\n locationState?: string;\n /**\n * The street address where the video was recorded.\n */\n locationStreet?: string;\n /**\n * The timezone where the video was recorded.\n */\n locationTimezone?: string;\n /**\n * The zipcode where the video was recorded.\n */\n locationZip?: string;\n /**\n * The serial of the live unit.\n */\n liveUnitSerialNumber?: string;\n /**\n * The name of the camera or archive cabinet.\n */\n name?: string;\n /**\n * ISO datetime when the video was recorded.\n */\n recordedDatetime?: string;\n /**\n * ISO datetime when the video was requested.\n */\n requestedDatetime?: string;\n /**\n * The user who requested the video.\n */\n requestedByName?: string;\n /**\n * The email of the user who requested the video.\n */\n requestedByEmail?: string;\n /**\n * The url for the video. Video playback will either use this or the dewarpedVideoUrl.\n */\n videoUrl?: string;\n}\n\nexport enum RequestType {\n LiveUnit = \"live_unit\",\n}\n\n// Helpers\nexport const isRequestedVideo = (value: RequestedVideo[] | Error): value is RequestedVideo[] => {\n return Array.isArray(value) && value.every((data) => data.hasOwnProperty(\"camOrAcId\"));\n};\n\nexport interface RequestVideosLiveUnitParams {\n liveUnitId: number;\n}\n\nexport interface RequestVideoShareLinkParams {\n dewarped: boolean;\n liveUnitId: number;\n videoId: number;\n}\n\nexport const requestedVideosApi = createApi({\n reducerPath: \"requestedVideosApi\",\n baseQuery: vmsBaseQuery(globals.userdashboard.proxyUrl),\n endpoints: (builder) => ({\n fetchRequestedVideos: builder.query({\n query: ({ liveUnitId }) => ({\n url: `/api/vms/requested_videos/${liveUnitId}?request_type=${RequestType.LiveUnit}`,\n method: \"GET\",\n }),\n }),\n getShareLink: builder.query({\n query: ({ dewarped, liveUnitId, videoId }) => ({\n url: `/api/vms/requested_videos/${liveUnitId}/${videoId}:share?dewarped=${dewarped}`,\n method: \"GET\",\n }),\n }),\n }),\n});\n\nexport const { useFetchRequestedVideosQuery, useLazyGetShareLinkQuery } = requestedVideosApi;\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { routes } from \"@/api/services/routes\";\nimport { logError } from \"@/utilities/api\";\nimport { Alert, ResolvedAlert } from \"@/utilities/types/alert\";\n\nimport { AlertService } from \"../interfaces\";\n\n\nconst client = applyCaseMiddleware(axios.create({ withCredentials: true }));\n\nexport const alertService: AlertService = {\n async getAlerts(): Promise {\n const route = routes.getAlerts();\n\n try {\n const response = await client.get(route);\n\n if (response.status == 200) {\n return response.data.data;\n } else {\n const error: SerializedError = {\n name: \"statusCode\",\n message: \"Error\" + response.data.status + \": \" + response.data.statusMessage,\n };\n\n throw error;\n }\n } catch (error: any) {\n logError(route, error);\n\n throw error;\n }\n },\n\n async postResolveAlert(resolvedAlert: ResolvedAlert): Promise {\n await client.post(routes.postResolveAlert(resolvedAlert.alertId), resolvedAlert);\n },\n\n async getAlert(alertId: string): Promise {\n const route = routes.getAlert(alertId);\n\n try {\n const response = await client.get(route);\n\n if (response.status == 200) {\n return response.data.data;\n } else {\n const error: SerializedError = {\n name: \"statusCode\",\n message: \"Error\" + response.data.status + \": \" + response.data.statusMessage,\n };\n\n throw error;\n }\n } catch (error: any) {\n logError(route, error);\n\n throw error;\n }\n },\n};\n","import globals from \"@lvt/globals\";\nimport { SerializedError, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\n\nexport interface UserPermissions {\n archives: boolean;\n cameras: boolean;\n streamDeactivated: boolean;\n d3cc: boolean;\n selfService: boolean;\n liveUnits: boolean;\n clients: boolean;\n locations: boolean;\n users: boolean;\n quickConfig: boolean;\n reportViewAll: boolean;\n}\n\nexport interface UserInfo {\n id: number;\n lvtc: string;\n lvtu: string;\n lvtr: string;\n username: string;\n name: string;\n permissions: UserPermissions;\n timeZone: string | null;\n videoPreference: string;\n}\n\nconst fetchUserInfoSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n additionalProperties: false,\n properties: {\n status: { const: 200 },\n statusMessage: { type: \"string\" },\n data: {\n type: \"object\",\n required: [\"id\", \"lvtc\", \"lvtu\", \"lvtr\", \"name\", \"permissions\", \"username\"],\n properties: {\n id: { type: \"integer\" },\n lvtc: { type: \"string\" },\n lvtu: { type: \"string\" },\n lvtr: { type: \"string\" },\n name: { type: \"string\" },\n username: { type: \"string\" },\n videoPreference: { type: \"string\" },\n permissions: {\n type: \"object\",\n required: [\"d3cc\", \"users\"],\n additionalProperties: true,\n properties: {\n archives: { type: \"boolean\" },\n cameras: { type: \"boolean\" },\n streamDeactivated: { type: \"boolean\" },\n d3cc: { type: \"boolean\" },\n selfService: { type: \"boolean\" },\n liveUnits: { type: \"boolean\" },\n clients: { type: \"boolean\" },\n locations: { type: \"boolean\" },\n users: { type: \"boolean\" },\n quickConfig: { type: \"boolean\" },\n reportViewAll: { type: \"boolean\" },\n },\n },\n },\n },\n },\n};\n\nconst fetchUserInfoValidator = new Ajv().compile(fetchUserInfoSchema);\n\nexport const fetchUserInfo = createAsyncThunk(\"fetchUserInfo\", async () => {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n\n const response = await client.get(\"/api/vms/user_info\", {\n withCredentials: true,\n });\n\n if (fetchUserInfoValidator(response.data)) {\n return response.data.data as UserInfo;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(fetchUserInfoValidator.errors),\n };\n\n throw error;\n }\n});\n\nexport interface UserIdentity {\n clientId: number;\n userId: number;\n userToken: string;\n}\n\nexport const fetchUserIdentity = async (url: string): Promise => {\n const resp = await axios.get(url, {\n withCredentials: true,\n });\n\n return resp.data.data;\n};\n","import globals from \"@lvt/globals\";\nimport { createApi, fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport qs from \"qs\";\n\nimport { SearchResult, ResultTypes, SortField, SearchIndex } from \"@/utilities/types/search\";\n\n\nexport interface VmsSearchConfig {\n filter?: {\n client_id?: number[];\n region_id?: number[];\n mounting_structure?: string[];\n indices: SearchIndex[];\n };\n sort?: Record[],\n offset: number;\n limit: number;\n query: string;\n}\n\ninterface Search {\n meta: SearchMeta;\n results: SearchResult[];\n}\n\ninterface SearchMeta {\n count: number,\n max_score?: number,\n took: number,\n}\n\n\ntype SearchResults = Search;\n\nexport interface ApiResponse {\n status: number;\n status_message: string;\n data: T;\n}\n\ninterface SearchRightQuery {\n indices: SearchIndex[]\n}\n\nexport type SearchRightType = \"stream\" | \"request_video\";\n\n\ninterface SearchRightAll {\n type: \"all\"\n}\ninterface SearchRightSepecific {\n type: \"specific\",\n clients: number[],\n entities: number[]\n}\n\nexport interface SearchRights {\n is_multi_client: boolean,\n has_regions: boolean,\n stream: SearchRightAll | SearchRightSepecific,\n request_video: SearchRightAll | SearchRightSepecific,\n}\n\n\nexport const vmsSearchApi = createApi({\n reducerPath: \"vms-es\",\n baseQuery: fetchBaseQuery({\n baseUrl: globals.userdashboard.proxyUrl,\n credentials: \"include\",\n }),\n endpoints: (builder) => ({\n vmsSearch:builder.query, VmsSearchConfig>({\n query: (searchConfig) => {\n const params = {\n q: searchConfig.query,\n limit: searchConfig.limit,\n offset: searchConfig.offset,\n filter : {\n indices: searchConfig.filter?.indices ?? [],\n client_id: searchConfig.filter?.client_id,\n region_id: searchConfig.filter?.region_id,\n },\n sort: searchConfig.sort,\n };\n const query_string = qs.stringify(params, {\n arrayFormat: \"indices\",\n encode: false,\n });\n\n return `/api/vms/search?${query_string}`;\n },\n }),\n getVmsSearchRights: builder.query, SearchRightQuery> ({\n query: (searchRightsQuery) => {\n const params = {\n indices: searchRightsQuery.indices,\n };\n const query_string = qs.stringify(params, {\n arrayFormat: \"brackets\",\n encode: false,\n });\n\n return `/api/vms/search/rights?${query_string}`;\n },\n }),\n }),\n});\n\nexport const { useLazyVmsSearchQuery, useVmsSearchQuery, useGetVmsSearchRightsQuery, usePrefetch } = vmsSearchApi;\n","import globals from \"@lvt/globals\";\nimport { createApi, BaseQueryFn } from \"@reduxjs/toolkit/query/react\";\nimport Ajv from \"ajv\";\nimport axios, { AxiosRequestConfig } from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { LvtResponse2 } from \"./common\";\n\n\nexport interface VmsApiExtraOptions {\n validator?: Ajv.ValidateFunction;\n}\n\nconst axiosClient = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n withCredentials: true,\n }),\n);\n\ntype VmsApiError = ValidationError | ResponseError;\n\ninterface ValidationError {\n type: \"VALIDATION_ERROR\";\n data?: string;\n error: string;\n}\n\ninterface ResponseError {\n type: \"RESPONSE_ERROR\";\n error: any;\n status: number;\n}\n\ninterface VmsApiArg {\n url: string;\n method: AxiosRequestConfig[\"method\"];\n body?: AxiosRequestConfig[\"data\"];\n}\n\n\ntype VmsApiMeta = {\n};\n\ntype VmsApiResponse = LvtResponse2;\n\n/*\n Base query.\n\n Performs validation if you pass in a validator in the extraOptions.\n\n Currently handles LvtResponse2 structure.\n*/\nexport const vmsBaseQuery = (baseUrl: string): BaseQueryFn => async (\n { url, method, body },\n api,\n extraOptions,\n) => {\n try {\n const result = await axiosClient({\n url: baseUrl + url,\n method,\n data: body,\n });\n\n const validator = extraOptions?.validator;\n\n if (validator != null) {\n if (!validator(result.data)) {\n const validationError: VmsApiError = {\n type: \"VALIDATION_ERROR\",\n error: JSON.stringify(validator.errors),\n data: JSON.stringify(result.data),\n };\n\n console.warn(\"validation failed\", validationError);\n\n return { error: validationError };\n }\n }\n\n return { data: result.data.data };\n } catch (error) {\n if (axios.isAxiosError(error)) {\n if (error.response && error.response.data.error) {\n const { data: responseData, status } = error.response;\n const responseError: ResponseError = {\n type: \"RESPONSE_ERROR\",\n status: status,\n error: responseData.error,\n };\n\n return { error: responseError };\n }\n }\n\n throw error;\n }\n};\n\n/*\n RTKQuery api.\n\n You can use the injectApi function to inject endpoints into the api.\n\n See /api/liveUnits/deafultCamera.ts for an example.\n*/\nexport const vmsBaseApi = createApi({\n reducerPath: \"vms-base\",\n baseQuery: vmsBaseQuery(globals.userdashboard.proxyUrl),\n endpoints: () => ({}),\n});\n","import globals from \"@lvt/globals\";\nimport { createApi } from \"@reduxjs/toolkit/query/react\";\n\nimport { vmsBaseQuery } from \"@/api/vmsBase\";\nimport { LiveUnitMosaicData } from \"@/utilities/types/mosaicData\";\n\n\ninterface PresetUpdate {\n liveUnitId: number;\n presetId: number;\n name: string;\n}\n\ninterface PresetAdd {\n liveUnitId: number;\n cameraId: number;\n name: string;\n}\n\nexport const liveUnitMosaicApi = createApi({\n reducerPath: \"liveUnitMosaic\",\n baseQuery: vmsBaseQuery(globals.userdashboard.proxyUrl),\n endpoints: (builder) => ({\n liveUnitMosaicData: builder.query({\n query: (liveUnitId) => ({\n url: `/api/vms/mosaic/live_unit/${liveUnitId}`,\n method: \"GET\",\n }),\n }),\n addPreset: builder.mutation({\n query: ({ cameraId, name }) => ({\n url: \"/api/vms/presets\",\n method: \"POST\",\n body: {\n cameraId,\n name,\n },\n }),\n onCacheEntryAdded: (presetAdd, { dispatch, cacheDataLoaded }) => {\n cacheDataLoaded\n .then(({ data: id }) => {\n dispatch(\n liveUnitMosaicApi.util.updateQueryData(\"liveUnitMosaicData\", presetAdd.liveUnitId, (draft) => {\n draft.cameras.forEach((camera) => {\n if (camera.cameraId === presetAdd.cameraId) {\n camera.presets.push({\n id: id,\n name: presetAdd.name,\n isHome: false,\n });\n }\n });\n }),\n );\n });\n },\n }),\n updatePreset: builder.mutation({\n query: ({ presetId, name }) => ({\n url: `/api/vms/presets/${presetId}`,\n method: \"PUT\",\n body: {\n name,\n },\n }),\n onCacheEntryAdded: (presetUpdate, { dispatch }) => {\n dispatch(\n liveUnitMosaicApi.util.updateQueryData(\"liveUnitMosaicData\", presetUpdate.liveUnitId, (draft) => {\n draft.cameras.forEach((camera) => {\n camera.presets.forEach((preset) => {\n if (preset.id === presetUpdate.presetId) {\n preset.name = presetUpdate.name;\n }\n });\n });\n }),\n );\n },\n }),\n }),\n});\n\nexport const { useLiveUnitMosaicDataQuery, useAddPresetMutation, useUpdatePresetMutation } = liveUnitMosaicApi;\n","export interface Search {\n searchQuery: string,\n selectedClient: SelectedClient | null,\n selectedRegion: SelectedRegion | null,\n searchType: SearchType,\n}\n\nexport const compareSearch = (searchA: Search, searchB: Search): boolean => {\n const compareQuery = searchA.searchQuery === searchB.searchQuery;\n const compareClient = searchA.selectedClient?.id === searchB.selectedClient?.id;\n const compareRegion = searchA.selectedRegion?.id === searchB.selectedRegion?.id;\n const compareSearchType = searchA.searchType === searchB.searchType;\n\n return compareQuery && compareClient && compareRegion && compareSearchType;\n};\n\nexport interface SortField {\n order: string\n}\n\nexport interface SelectedClient {\n name: string,\n id: number\n}\n\nexport interface SelectedRegion {\n name: string,\n id: number\n}\n\n\nexport interface SearchResult {\n score: number,\n source: T,\n highlight: Record,\n}\n\nexport interface LiveUnitSearchData {\n type: SearchSourceType.LiveUnit,\n id: number\n name: string,\n serial: string,\n client_id: number,\n client_name: string,\n date_activated?: string;\n date_deactivated?: string;\n latitude?: number,\n longitude?: number,\n location_name?: string,\n location_city?: string,\n location_street?: string,\n location_state?: string,\n location_country?: string,\n location_zip?: string,\n cameras: number[],\n primary_camera?: number,\n mounting_structure?: string;\n region_name?: string;\n}\n\nexport interface ClientSearchData {\n type: SearchSourceType.Client,\n id: number,\n name: string\n}\n\nexport interface RegionSearchData {\n type: SearchSourceType.Region,\n id: number,\n name: string\n client_name: string\n}\n\nexport interface ArchiveCabinetSearchData {\n type: SearchSourceType.ArchiveCabinet,\n id: number\n name: string,\n client_id: number,\n client_name: number,\n latitude?: number,\n longitude?: number,\n location_name?: string,\n region_name?: string,\n}\n\nexport enum SearchIndex {\n ArchiveCabinets = \"archive_cabinets\",\n LiveUnits = \"live_units\",\n Clients = \"clients\",\n Regions = \"regions\",\n}\n\nexport enum SearchType {\n Default,\n Clients,\n Regions\n}\n\nexport enum SearchSourceType {\n ArchiveCabinet = \"archive_cabinet\",\n Client = \"client\",\n LiveUnit = \"live_unit\",\n Region = \"region\",\n}\n\nexport type ResultTypes = LiveUnitSearchData | ArchiveCabinetSearchData | ClientSearchData | RegionSearchData;\n\nexport const defaultSearch: Search = {\n searchQuery: \"\",\n selectedClient: null,\n selectedRegion: null,\n searchType: SearchType.Default,\n};\n","import globals from \"@lvt/globals\";\nimport { createApi, fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\n\nexport interface SpeakerTalkdownStart {\n token: string;\n lvt_live_unit_id: string;\n}\n\ninterface ApiResponse {\n status: number;\n status_message: string;\n data: T;\n}\n\n\nexport const speakerTalkdownApi = createApi({\n reducerPath: \"speaker-talkdown\",\n baseQuery: fetchBaseQuery({\n baseUrl: globals.userdashboard.proxyUrl,\n credentials: \"include\",\n }),\n endpoints: (builder) => ({\n speakerTalkdownStart:builder.query, number>({\n query: (liveUnitId) => {\n return `/api/speaker_talkdown/start/${liveUnitId}`;\n },\n }),\n speakerTalkdownHeartbeat: builder.query, [number, string]> ({\n query: ([liveUnitId, token]) => {\n return `/api/speaker_talkdown/heartbeat/${liveUnitId}/${token}`;\n },\n }),\n speakerTalkdownEnd: builder.query, [number, string]> ({\n query: ([liveUnitId, token]) => {\n return `/api/speaker_talkdown/end/${liveUnitId}/${token}`;\n },\n }),\n }),\n});\n\nexport const { useLazySpeakerTalkdownStartQuery, useLazySpeakerTalkdownHeartbeatQuery, useLazySpeakerTalkdownEndQuery } = speakerTalkdownApi;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { VmsSearchConfig } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { Search, defaultSearch } from \"@/utilities/types/search\";\n\n\ninterface SearchState {\n search: Search\n mapSearchArg?: VmsSearchConfig,\n}\n\nconst initialState: SearchState = {\n search: defaultSearch,\n mapSearchArg: undefined,\n};\n\nexport const esSearchBarSlice = createSlice({\n name: \"searchBar\",\n initialState,\n reducers: {\n setSearch(state, action: PayloadAction) {\n state.search = action.payload;\n },\n setMapSearchArg(state, action: PayloadAction) {\n state.mapSearchArg = action.payload;\n },\n },\n});\n\nexport const { setSearch, setMapSearchArg } = esSearchBarSlice.actions;\nexport const elasticSearchReducer = esSearchBarSlice.reducer;\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"@/api/common\";\n\n\nconst archiveCabinetProperties = {\n cameraName: { type: \"string\" },\n clientId: { type: \"number\" },\n clientName: { type: \"string\" },\n id: { type: \"number\" },\n latitude: { type: [\"number\", \"null\"] },\n locationName: { type: \"string\" },\n longitude: { type: [\"number\", \"null\"] },\n name: { type: \"string\" },\n regionName: { type: [\"string\", \"null\"] },\n};\n\nconst archiveCabinetsSchema = lvtResponseSchema({\n type: \"array\",\n items: {\n type: \"object\",\n properties: archiveCabinetProperties,\n },\n});\n\nexport const archiveCabinetsValidator = new Ajv().compile(archiveCabinetsSchema);\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\nimport qs from \"qs\";\n\nimport { archiveCabinetsValidator } from \"@/api/map/archiveCabinets/archiveCabinetSchema\";\nimport { ArchiveCabinet, FilterConfig } from \"@/api/map/types\";\n\nimport { validateRequest } from \"../../common\";\n\n\nexport const fetchArchiveCabinets = createAsyncThunk(\n \"fetchArchiveCabinets\",\n async (filterConfig: FilterConfig, { dispatch }) => {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n\n // QS to properly format query string parameters\n client.interceptors.request.use((config) => {\n config.paramsSerializer = (params) => {\n return qs.stringify(params, {\n arrayFormat: \"brackets\",\n encode: false,\n });\n };\n\n return config;\n });\n\n const request = client.get(\"/api/vms/archive_cabinets\", {\n withCredentials: true,\n params: filterConfig,\n });\n\n return await validateRequest>(\n dispatch,\n request,\n archiveCabinetsValidator,\n \"Failed to get archive cabinets\",\n );\n },\n);\n","import { webDataLoading, webDataNotAsked, webDataSuccess, serializedErrorToWebDataError } from \"@lvt/web-data\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nimport { fetchArchiveCabinets } from \"@/api/map/archiveCabinets/archiveCabinets\";\nimport { RootState } from \"@/store\";\nimport { ArchiveCabinetState } from \"@/store/map/archiveCabinets/types\";\n\n\nconst initialState: ArchiveCabinetState = {\n archiveCabinets: webDataNotAsked(),\n};\n\nexport const archiveCabinetsSlice = createSlice({\n name: \"archiveCabinets\",\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(fetchArchiveCabinets.pending, (state) => {\n state.archiveCabinets = webDataLoading();\n })\n .addCase(fetchArchiveCabinets.fulfilled, (state, action) => {\n state.archiveCabinets = webDataSuccess(action.payload);\n })\n .addCase(fetchArchiveCabinets.rejected, (state, action) => {\n state.archiveCabinets = serializedErrorToWebDataError(action.error);\n });\n },\n});\n\nexport const archiveCabinetsReducer = archiveCabinetsSlice.reducer;\nexport const archiveCabinetsSelectors = {\n getArchiveCabinets: (state: RootState) => {\n return state.mapArchiveCabinets.archiveCabinets;\n },\n};\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"@/api/common\";\n\n\nconst liveUnitProperties = {\n clientId: { type: \"number\" },\n clientName: { type: \"string\" },\n dateActivated: { type: [\"string\", \"null\"] },\n dateDeactivated: { type: [\"string\", \"null\"] },\n id: { type: \"integer\" },\n latitude: { type: [\"number\", \"null\"] },\n locationName: { type: \"string\" },\n longitude: { type: [\"number\", \"null\"] },\n mountingStructure: { type: [\"string\", \"null\"] },\n name: { type: \"string\" },\n regionName: { type: [\"string\", \"null\"] },\n serial: { type: [\"string\", \"null\"] },\n};\n\nconst liveUnitsSchema = lvtResponseSchema({\n type: \"array\",\n items: {\n type: \"object\",\n properties: liveUnitProperties,\n },\n});\n\nexport const liveUnitsValidator = new Ajv().compile(liveUnitsSchema);\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\nimport qs from \"qs\";\n\nimport { validateRequest } from \"@/api/common\";\nimport { liveUnitsValidator } from \"@/api/map/liveUnits/liveUnitSchema\";\nimport { FilterConfig, LiveUnit } from \"@/api/map/types\";\n\n\nexport const fetchLiveUnits = createAsyncThunk(\"fetchLiveUnits\", async (filterConfig: FilterConfig, { dispatch }) => {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n\n // QS to properly format query string parameters\n client.interceptors.request.use((config) => {\n config.paramsSerializer = (params) => {\n return qs.stringify(params, {\n arrayFormat: \"brackets\",\n encode: false,\n });\n };\n\n return config;\n });\n\n const request = client.get(\"/api/vms/live_units\", {\n withCredentials: true,\n params: filterConfig,\n });\n\n return await validateRequest>(dispatch, request, liveUnitsValidator, \"Failed to get live units\");\n});\n","import { webDataLoading, webDataNotAsked, webDataSuccess, serializedErrorToWebDataError } from \"@lvt/web-data\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nimport { fetchLiveUnits } from \"@/api/map/liveUnits/liveUnits\";\nimport { RootState } from \"@/store\";\nimport { LiveUnitState } from \"@/store/map/liveUnits/types\";\n\n\nconst initialState: LiveUnitState = {\n liveUnits: webDataNotAsked(),\n};\n\nexport const liveUnitsSlice = createSlice({\n name: \"liveUnits\",\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(fetchLiveUnits.pending, (state) => {\n state.liveUnits = webDataLoading();\n })\n .addCase(fetchLiveUnits.fulfilled, (state, action) => {\n state.liveUnits = webDataSuccess(action.payload);\n })\n .addCase(fetchLiveUnits.rejected, (state, action) => {\n state.liveUnits = serializedErrorToWebDataError(action.error);\n });\n },\n});\n\nexport const liveUnitsReducer = liveUnitsSlice.reducer;\nexport const liveUnitsSelectors = {\n getLiveUnits: (state: RootState) => {\n return state.mapLiveUnits.liveUnits;\n },\n};\n","export const hourInSeconds = 60 * 60;\n","import { WebData, webDataNotAsked, unwrap, map } from \"@lvt/web-data\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { DateTime } from \"luxon\";\n\nimport { hourInSeconds } from \"@/utilities/time\";\nimport * as Types from \"@/utilities/types/archive\";\n\n\nexport interface archivesState {\n camerasOrCabinetsMeta: WebData;\n canRequestVideo: boolean;\n\n dateTimeHeaderHeight: number;\n //functional state\n gridAndAccordionWidth: number;\n images: Types.BucketImages;\n liveUnitId: null | number;\n // seconds\n requestDuration: number;\n // duration default value in seconds\n requestStartTime: string;\n // timestamp\n timeSpan: number;\n timelineStart: string;\n timelineWidth: number;\n //meta\n unitMeta: WebData;\n // timestamp\n videoSelectionMode: boolean;\n}\n\nconst initialState: archivesState = {\n camerasOrCabinetsMeta: webDataNotAsked(),\n dateTimeHeaderHeight: 0,\n gridAndAccordionWidth: 0,\n images: {},\n canRequestVideo: true,\n liveUnitId: null,\n\n requestDuration: 4 * 60,\n\n //4 min in seconds\n requestStartTime: DateTime.now().plus({ minutes: 30 }).toISO(),\n\n timeSpan: 3600,\n unitMeta: webDataNotAsked(),\n timelineStart: DateTime.now().minus({ hours: 1 }).toISO(),\n timelineWidth: 0,\n videoSelectionMode: false,\n};\n\nconst videoRequestMinimumValue = 60; //In Seconds\nconst videoRequestMaximumValue = 1800; //In Seconds\n\nconst archivesSlice = createSlice({\n name: \"archives\",\n initialState,\n reducers: {\n setCamerasOrCabinetsMeta(state, action: PayloadAction>) {\n state.camerasOrCabinetsMeta = action.payload;\n },\n setDateTimeHeaderHeight(state, action: PayloadAction) {\n state.dateTimeHeaderHeight = action.payload;\n },\n setBucketImage(\n state,\n action: PayloadAction<{ presetId: number; startTime: number; images: WebData }>,\n ) {\n const bucket = action.payload.startTime;\n\n if (bucket % hourInSeconds === 0) {\n const presetId = action.payload.presetId;\n const webDataImages = action.payload.images;\n\n if (!state.images[bucket]) {\n state.images[bucket] = {};\n }\n\n state.images[bucket][presetId] = webDataImages;\n } else {\n console.error(\"AHHHHHHH\", action);\n //TODO: yell?\n }\n },\n\n // Used to set multiple presets in a bucket all at once, etc\n setBucketImages(state, action: PayloadAction<{ presetsToImages: Types.PresetsToImages; startTime: number }>) {\n const bucket = action.payload.startTime;\n\n if (bucket % hourInSeconds === 0) {\n Object.entries(action.payload.presetsToImages).map(([presetIdStr, webDataImages]) => {\n const base = 10;\n const presetId = parseInt(presetIdStr, base);\n\n if (!state.images[bucket]) {\n state.images[bucket] = {};\n }\n\n state.images[bucket][presetId] = webDataImages;\n });\n } else {\n console.error(\"AHHHHHHH\", action);\n //TODO: yell?\n }\n },\n\n setGridAndAccordionWidth(state, action: PayloadAction) {\n state.gridAndAccordionWidth = action.payload;\n },\n\n setCanRequestVideo(state, action: PayloadAction) {\n state.canRequestVideo = action.payload;\n },\n\n setLiveUnitId(state, action: PayloadAction) {\n state.liveUnitId = action.payload;\n },\n\n setRequestDuration(state, action: PayloadAction) {\n if (action.payload <= videoRequestMinimumValue) {\n state.requestDuration = videoRequestMinimumValue;\n } else if (action.payload >= videoRequestMaximumValue) {\n state.requestDuration = videoRequestMaximumValue;\n } else {\n const requestDateTimePlusDuration = DateTime.fromISO(state.requestStartTime).plus({\n seconds: action.payload,\n });\n const timelineStartPlusHour = DateTime.fromISO(state.timelineStart).plus({ hours: 1 });\n\n if (requestDateTimePlusDuration < timelineStartPlusHour) {\n state.requestDuration = action.payload;\n }\n }\n },\n\n setRequestStartTime(state, action: PayloadAction) {\n const payloadDateTime = DateTime.fromISO(action.payload);\n const defaultStart = DateTime.now().minus({ days: 90 }).toISO(); // the default video recording start\n\n const recordingStartIso = unwrap(map(state.unitMeta, (unitMeta) => unitMeta.recordingStart));\n const recordingStart = DateTime.fromISO(recordingStartIso ? recordingStartIso : defaultStart).toSeconds();\n\n if (payloadDateTime.isValid) {\n if (\n payloadDateTime.toSeconds() + state.requestDuration <= DateTime.now().toSeconds() &&\n payloadDateTime.toSeconds() >= recordingStart\n )\n state.requestStartTime = payloadDateTime.toISO();\n } else {\n state.requestStartTime = action.payload;\n }\n },\n\n setTimeSpan(state, action: PayloadAction) {\n state.timeSpan = action.payload;\n },\n\n setTimelineStart(state, action: PayloadAction) {\n const payloadDateTime = DateTime.fromISO(action.payload); //+-30 minutes\n const recordingStartIso = unwrap(map(state.unitMeta, (unitMeta) => unitMeta.recordingStart));\n\n if (state.videoSelectionMode && recordingStartIso) {\n const diff = DateTime.fromISO(state.requestStartTime).diff(DateTime.fromISO(state.timelineStart));\n const newRequestStart = DateTime.min(\n //min of the below min comparison and max end time for video request factoring the duration of the request\n DateTime.min(\n // min of below and the max timelineStart possible\n DateTime.max(DateTime.fromISO(recordingStartIso), payloadDateTime), //maximum of recordingStart and datetime we want to set(results in it being capped in the past)\n DateTime.now().minus({ hours: 1 }),\n ).plus(diff), //converts the timelinestart concept to requestStartTime concept\n DateTime.now().minus(state.requestDuration),\n );\n\n state.requestStartTime = newRequestStart.toISO();\n }\n\n if (payloadDateTime.isValid) {\n //Taking the min here because payloaddatetime could be a future value so we'd want to cap the timeline start to now - 1hr\n let newDateTime = DateTime.min(payloadDateTime, DateTime.now().minus({ hours: 1 }));\n\n if (state.videoSelectionMode && recordingStartIso) {\n newDateTime = DateTime.max(DateTime.fromISO(recordingStartIso), newDateTime);\n }\n\n state.timelineStart = newDateTime.toISO();\n } else {\n state.timelineStart = action.payload;\n }\n },\n\n setTimelineWidth(state, action: PayloadAction) {\n state.timelineWidth = action.payload;\n },\n\n setUnitMeta(state, action: PayloadAction>) {\n state.unitMeta = action.payload;\n },\n setVideoSelectionMode(state, action: PayloadAction) {\n state.videoSelectionMode = action.payload;\n },\n },\n});\n\nexport const {\n setCamerasOrCabinetsMeta,\n setLiveUnitId,\n setGridAndAccordionWidth,\n setDateTimeHeaderHeight,\n setRequestDuration,\n setRequestStartTime,\n setTimelineStart,\n setTimelineWidth,\n setTimeSpan,\n setUnitMeta,\n setVideoSelectionMode,\n setBucketImage,\n setBucketImages,\n setCanRequestVideo,\n} = archivesSlice.actions;\nexport const archivesReducer = archivesSlice.reducer;\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { CameraNavigation, Preset } from \"@/store/userLists/types\";\n\n\nexport const getPatrolState = async (camera_id: number): Promise => {\n try {\n const request = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n withCredentials: true,\n }),\n );\n\n const response = await request.get(`/api/cameras/suspend_patrol_state/${camera_id}`);\n\n return response.data.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const fetchCameraData = createAsyncThunk(\n \"fetchCameraData\",\n async (cameraId: number): Promise => {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n withCredentials: true,\n }),\n );\n const resp = await client.get(`/api/vms/cameras/nav/${cameraId}`);\n\n return resp.data.data;\n },\n);\n\nexport const fetchCameraPresets = async (cameraId: number): Promise => {\n const apiUrl = globals.userdashboard.proxyUrl;\n const presetReq = apiUrl + \"/api/cameras/presets/\" + cameraId.toString();\n const resp = await axios.get(presetReq, {\n withCredentials: true,\n });\n\n return resp.data.data;\n};\n\nexport const fetchDownloadableImage = async (url: string): Promise => {\n const resp = await axios.get(url, { withCredentials: false, responseType: \"blob\" });\n\n return resp.data;\n};\n\nexport const requestQuickVideo = async (cameraIds: number[]) => {\n const url = `${globals.userdashboard.proxyUrl}/api/vms/history/quick_video`;\n const promises = cameraIds.map((id) => (\n axios.post(url, {\n camera_id: id,\n title: \"Quick Video\",\n }, {\n withCredentials: true,\n })\n ));\n\n await Promise.all(promises);\n\n return \"ok\";\n};\n","import { serializedErrorToWebDataError, WebData, webDataLoading, webDataNotAsked, webDataSuccess } from \"@lvt/web-data\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { fetchCameraData } from \"@/api/cameras\";\n\nimport { CameraNavigation } from \"../userLists/types\";\n\n\nexport interface camerasState {\n streamingId: null | number;\n cameraList: WebData;\n}\n\ntype setStreamingCameraPayload = number;\n\nconst initialState: camerasState = {\n streamingId: null,\n cameraList: webDataNotAsked(),\n};\n\nconst camerasSlice = createSlice({\n name: \"cameras\",\n initialState,\n reducers: {\n setStreamingCamera(state, action: PayloadAction) {\n state.streamingId = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchCameraData.pending, (state) => {\n state.cameraList = webDataLoading();\n })\n .addCase(fetchCameraData.fulfilled, (state, action) => {\n state.cameraList = webDataSuccess(action.payload);\n })\n .addCase(fetchCameraData.rejected, (state, action) => {\n state.cameraList = serializedErrorToWebDataError(action.error);\n });\n },\n});\n\nexport const { setStreamingCamera } = camerasSlice.actions;\nexport const camerasReducer = camerasSlice.reducer;\n","const permissionsSchema = {\n type: \"object\",\n additionalProperties: true,\n required: [\"controlPtzf\", \"controlPresets\", \"speakerTalkdown\", \"quickSounds\", \"suspendPatrol\"],\n properties: {\n controlPtzf: { type: \"boolean\" },\n controlPresets: { type: \"boolean\" },\n speakerTalkdown: { type: \"boolean\" },\n quickSounds: { type: \"boolean\" },\n suspendPatrol: { type: \"boolean\" },\n },\n};\n\nconst capabilitiesPropertiesSchema = {\n autofocus: { type: \"boolean\" },\n clickToCenter: { type: \"boolean\" },\n heater: { type: \"boolean\" },\n home: { type: \"boolean\" },\n lightInternal: { type: \"boolean\" },\n lightInfared: { type: \"boolean\" },\n pan: { type: \"boolean\" },\n panStop: { type: \"boolean\" },\n position: { type: \"boolean\" },\n relayActions: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: true,\n required: [\"relayName\", \"uiLabel\", \"stateDefault\", \"reportStates\"],\n properties: {\n relayName: { type: \"string\" },\n uiLabel: { type: [\"string\", \"null\"] },\n stateDefault: { type: [\"boolean\", \"null\"] },\n reportStates: { type: \"boolean\" },\n delay: { type: [\"number\", \"null\"] },\n },\n },\n },\n speakerSounds: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: true,\n required: [\"id\", \"label\"],\n properties: {\n id: { type: \"integer\" },\n label: { type: \"string\" },\n },\n },\n },\n speakerTalkdown: { type: \"boolean\" },\n snapshot: { type: \"boolean\" },\n zoom: { type: \"boolean\" },\n // TODO: Add webrtc property. Waiting to include to avoid integration issues.\n // webrtc: { type: \"boolean\" }\n};\n\nexport const capabilitiesSchema = {\n type: \"object\",\n additionalProperties: true,\n required: Object.keys(capabilitiesPropertiesSchema),\n properties: capabilitiesPropertiesSchema,\n};\n\nexport const cameraHealthPropertiesSchema = {\n isFlapping: { type: \"boolean\" },\n isGradient: { type: \"boolean\" },\n statusText: { type: \"string\" },\n startColor: { type: \"string\" },\n color: { type: \"string\" },\n overlay: { type: [\"string\", \"null\"] },\n};\n\nexport const cameraHealthSchema = {\n type: \"object\",\n additionalProperties: true,\n required: Object.keys(cameraHealthPropertiesSchema),\n properties: cameraHealthPropertiesSchema,\n};\n\nconst fetchStreamMetadataPropertiesSchema = {\n cameraId: { type: \"integer\" },\n cameraName: { type: [\"string\", \"null\"] },\n cameraActive: { type: \"boolean\" },\n cameraPatrolSuspended: { type: \"boolean\" },\n cameraHealth: cameraHealthSchema,\n capabilities: capabilitiesSchema,\n liveUnitId: { type: \"integer\" },\n liveUnitName: { type: \"string\" },\n sipPhoneNumber: { type: [\"string\", \"null\"] },\n sipPin: { type: [\"string\", \"null\"] },\n clientPasscode: { type: [\"number\", \"null\"] },\n locationId: { type: \"integer\" },\n locationName: { type: \"string\" },\n clientId: { type: \"integer\" },\n clientName: { type: \"string\" },\n clientLogoUrl: { type: [\"string\", \"null\"] },\n otherCameraIds: { type: \"array\", items: { type: \"integer\" } },\n timeZone: { type: \"string\" },\n permissions: permissionsSchema,\n presets: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"name\"],\n additionalProperties: true,\n properties: {\n id: { type: \"integer\" },\n name: { type: \"string\" },\n isHome: { type: \"boolean\" },\n },\n },\n },\n thumbnailPreset: { type: [\"number\", \"null\"] },\n};\n\nexport const fetchStreamMetadataSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n properties: {\n status: { const: 200 },\n statusMessage: { type: \"string\" },\n data: {\n type: \"object\",\n additionalProperties: true,\n required: Object.keys(fetchStreamMetadataPropertiesSchema),\n properties: fetchStreamMetadataPropertiesSchema,\n },\n },\n additionalProperties: true,\n};\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk, SerializedError } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\n\nimport { fetchStreamMetadataSchema } from \"./schema\";\nimport { StreamMeta } from \"./types\";\n\n\nexport const fetchStreamMetadataValidator = new Ajv().compile(fetchStreamMetadataSchema);\n\nexport const fetchStreamMetadata = createAsyncThunk(\"fetchStreamMetadata\", async (cameraId: number, { dispatch }) => {\n try {\n const client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n\n const response = await client.get(`/api/vms/stream_camera/${cameraId}/meta`, {\n withCredentials: true,\n });\n\n if (fetchStreamMetadataValidator(response.data)) {\n return response.data.data as StreamMeta;\n } else {\n console.log(fetchStreamMetadataValidator.errors);\n\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(fetchStreamMetadataValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(error.message);\n\n if (error.response && error.response.status == 403) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"You do not have permission to stream this camera.\",\n }),\n );\n } else {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to get stream metadata\",\n }),\n );\n }\n }\n\n throw error;\n }\n});\n","export interface Preset {\n id: number;\n name: string;\n isHome: boolean;\n}\n\nexport interface StreamMetaPermissions {\n controlPtzf: boolean;\n controlPresets: boolean;\n quickSounds: boolean;\n speakerTalkdown: boolean;\n suspendPatrol: boolean;\n}\nexport const defaultPermissions = (): StreamMetaPermissions => ({\n controlPtzf: true,\n controlPresets: true,\n quickSounds: true,\n speakerTalkdown: true,\n suspendPatrol: true,\n});\n\nexport interface StreamMetaCapabilities {\n autofocus: boolean;\n clickToCenter: boolean;\n heater: boolean;\n home: boolean;\n lightInternal: boolean;\n lightInfared: boolean;\n pan: boolean;\n panStop: boolean;\n position: boolean;\n presets: boolean;\n relayActions: RelayAction[];\n speakerSounds: SpeakerSound[];\n speakerTalkdown: boolean;\n snapshot: boolean;\n zoom: boolean;\n webrtc: boolean;\n}\nexport const defaultCameraCapabilities = (): StreamMetaCapabilities => ({\n autofocus: true,\n clickToCenter: true,\n heater: true,\n home: true,\n lightInternal: true,\n lightInfared: true,\n pan: true,\n panStop: true,\n position: true,\n presets: true,\n relayActions: [],\n speakerSounds: [],\n speakerTalkdown: true,\n snapshot: true,\n zoom: true,\n webrtc: true,\n});\n\nexport interface SpeakerSound { id: number; label: string; }\n\nexport interface RelayAction {\n /**\n * Camera id associated with the relay\n */\n cameraId?: number;\n /**\n * Relay type (i.e. flood)\n */\n relayName: string;\n /**\n * User-facing name for the relay action (i.e. Flood Light)\n */\n uiLabel?: string;\n /**\n * Default position of the relay (on/off)\n */\n stateDefault?: boolean;\n /**\n * TODO\n */\n reportStates: boolean;\n /**\n * Delay in milliseconds before setting the relay to it's default state\n */\n delay: number | null;\n}\n\nexport const getLights = (relays: RelayAction[]) => {\n return relays.filter((relay) => (\n relay.relayName.toLowerCase().indexOf(\"light\") !== -1 ||\n relay.relayName.toLowerCase().indexOf(\"strobe\") !== -1\n ));\n};\n\nexport const getHeater = (relays: RelayAction[]) => {\n return relays.filter((relay) => relay.relayName.toLowerCase().indexOf(\"heater\") !== -1)[0];\n};\n\nexport interface StreamMeta {\n cameraId: number;\n cameraName: null | string;\n cameraActive: boolean;\n cameraPatrolSuspended: boolean;\n cameraHealth: CameraHealth;\n capabilities: StreamMetaCapabilities;\n liveUnitId: number;\n liveUnitName: string;\n sipPhoneNumber: null | string;\n sipPin: null | string;\n clientPasscode: null | number;\n locationId: number;\n locationName: string;\n clientId: number;\n clientName: string;\n clientLogoUrl: null | string;\n otherCameraIds: Array;\n timeZone: string;\n permissions: StreamMetaPermissions;\n presets: Array;\n}\n\nexport const defaultStreamMeta = (camId?: number): StreamMeta => ({\n cameraId: camId || 1,\n cameraName: null,\n cameraActive: false,\n cameraPatrolSuspended: false,\n cameraHealth: defaultCameraHealth(),\n capabilities: defaultCameraCapabilities(),\n liveUnitId: 0,\n liveUnitName: \"\",\n sipPhoneNumber: null,\n sipPin: null,\n clientPasscode: null,\n locationId: 0,\n locationName: \"\",\n clientId: 0,\n clientName: \"\",\n clientLogoUrl: null,\n otherCameraIds: [],\n timeZone: \"\",\n permissions: defaultPermissions(),\n presets: [],\n});\n\n// TODO: Use UnitHealth instead\nexport interface CameraHealth {\n isFlapping: boolean;\n isGradient: boolean;\n statusText: string;\n startColor: string;\n color: string;\n overlay: string | null;\n}\n\nexport const defaultCameraHealth = (): CameraHealth => ({\n isFlapping: false,\n isGradient: false,\n statusText: \"\",\n startColor: \"\",\n color: \"\",\n overlay: null,\n});\n","import { serializedErrorToWebDataError, WebData, webDataLoading, webDataNotAsked, webDataSuccess } from \"@lvt/web-data\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { Client, fetchClients } from \"@/api/clients\";\nimport { fetchStreamMetadata } from \"@/api/streamMetadata\";\nimport { RootState } from \"@/store\";\n\n\nexport interface ClientsState {\n clients: WebData>;\n selectedClient: Client | null;\n selectedClientId: number | null;\n}\n\nconst initialState: ClientsState = {\n clients: webDataNotAsked(),\n selectedClient: null,\n selectedClientId: null,\n};\n\nexport const clientsSlice = createSlice({\n name: \"clients\",\n initialState,\n reducers: {\n selectClient: (state, action: PayloadAction) => {\n state.selectedClientId = action.payload.id;\n },\n setSelectedClient(state, action: PayloadAction) {\n state.selectedClient = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchClients.pending, (state) => {\n state.clients = webDataLoading();\n })\n .addCase(fetchClients.fulfilled, (state, action) => {\n state.clients = webDataSuccess(action.payload);\n })\n .addCase(fetchClients.rejected, (state, action) => {\n state.clients = serializedErrorToWebDataError(action.error);\n })\n .addCase(fetchStreamMetadata.fulfilled, (state, action) => {\n state.selectedClientId = action.payload.clientId;\n });\n },\n});\n\nexport const { selectClient, setSelectedClient } = clientsSlice.actions;\nexport const clientsReducer = clientsSlice.reducer;\nexport const clientsSelectors = {\n getClients: (state: RootState) => {\n return state.clients.clients;\n },\n getSelectedClientId: (state: RootState) => {\n return state.clients.selectedClientId;\n },\n};\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { lvtResponseSchema, validateRequest } from \"../common\";\n\n\nexport interface ArchiveCabinet {\n cameraName: string;\n clientName: string;\n id: number;\n liveUnitName: string;\n locationName: string;\n regionName: null | string;\n}\n\nconst archiveCabinetProperties = {\n cameraName: { type: \"string\" },\n clientName: { type: \"string\" },\n id: { type: \"integer\" },\n liveUnitName: { type: \"string\" },\n locationName: { type: \"string\" },\n regionName: { type: [\"string\", \"null\"] },\n};\n\nconst archiveCabinetsSearchSchema = lvtResponseSchema({\n type: \"array\",\n items: {\n type: \"object\",\n required: Object.keys(archiveCabinetProperties),\n properties: archiveCabinetProperties,\n },\n});\n\nconst archiveCabinetsSearchValidator = new Ajv().compile(archiveCabinetsSearchSchema);\n\nconst client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n);\n\nexport const fetchArchiveCabinets = createAsyncThunk(\"fetchArchiveCabinets\", async (_: void, { dispatch }) => {\n const request = client.get(\"/api/vms/legacy/archive_cabinets/search\", {\n withCredentials: true,\n });\n\n const response = await validateRequest>(\n dispatch,\n request,\n archiveCabinetsSearchValidator,\n \"Failed to get archive cabinets\",\n );\n\n return response;\n});\n","import { WebData, webDataErrorSimple, webDataLoading, webDataNotAsked, webDataSuccess } from \"@lvt/web-data\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { ArchiveCabinet, fetchArchiveCabinets } from \"@/api/archiveCabinets/archiveCabinets\";\n\n\ninterface LiveUnitNavState {\n hidden: boolean;\n height: number;\n archiveCabinets: WebData>;\n}\n\nconst initialState: LiveUnitNavState = {\n hidden: false,\n height: 0,\n archiveCabinets: webDataNotAsked(),\n};\n\nconst liveUnitNavSlice = createSlice({\n name: \"liveUnitNav\",\n initialState,\n reducers: {\n setHidden(state, action: PayloadAction) {\n state.hidden = action.payload;\n },\n setHeight(state, action: PayloadAction) {\n state.height = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchArchiveCabinets.pending, (state) => {\n state.archiveCabinets = webDataLoading();\n })\n .addCase(fetchArchiveCabinets.fulfilled, (state, action) => {\n state.archiveCabinets = webDataSuccess(action.payload);\n })\n .addCase(fetchArchiveCabinets.rejected, (state, action) => {\n state.archiveCabinets = webDataErrorSimple({ message: JSON.stringify(action.payload) });\n });\n },\n});\n\nexport const { setHidden, setHeight } = liveUnitNavSlice.actions;\nexport const liveUnitNavReducer = liveUnitNavSlice.reducer;\n","import Ajv from \"ajv\";\n\n\nconst liveUnitsSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n properties: {\n status: { const: 200 },\n statusMessage: { type: \"string\" },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"serial\", \"locationName\", \"regionName\", \"clientName\", \"favoritesListsNames\"],\n properties: {\n clientName: { type: \"string\" },\n favoritesListsNames: {\n type: \"array\",\n items: { type: \"string\" },\n },\n id: { type: \"integer\" },\n locationName: { type: \"string\" },\n name: { type: \"string\" },\n regionName: { type: [\"string\", \"null\"] },\n serial: { type: [\"string\", \"null\"] },\n },\n additionalProperties: true,\n },\n },\n },\n additionalProperties: false,\n};\n\nexport const liveUnitsSearchValidator = new Ajv().compile(liveUnitsSchema);\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { liveUnitsSearchValidator } from \"@/api/liveUnits/liveUnitSchema\";\nimport { LiveUnit } from \"@/store/liveUnits/types\";\n\nimport { validateRequest } from \"../common\";\n\n\nconst client = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n);\n\nconst fetchLiveUnitsThunk = (thunkName: string, url: string) =>\n createAsyncThunk(thunkName, async (_, { dispatch }) => {\n const request = client.get(url, {\n withCredentials: true,\n });\n\n const response = await validateRequest>(\n dispatch,\n request,\n liveUnitsSearchValidator,\n \"Failed to retrieve live units\",\n );\n\n response.map((liveUnit) => {\n liveUnit.name = liveUnit.name.trim();\n liveUnit.serial = liveUnit.serial?.trim() ?? null;\n });\n\n return response;\n });\n\nexport const fetchLiveUnitsStream = fetchLiveUnitsThunk(\n \"fetchLiveunits/legacy/stream\",\n \"/api/vms/legacy/live_units/search/stream\",\n);\nexport const fetchLiveUnitsArchives = fetchLiveUnitsThunk(\n \"fetchLiveUnits/legacy/archives\",\n \"/api/vms/legacy/live_units/search/archives\",\n);\n","import { webDataLoading, webDataNotAsked, webDataSuccess, serializedErrorToWebDataError } from \"@lvt/web-data\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nimport { fetchLiveUnitsArchives, fetchLiveUnitsStream } from \"@/api/liveUnits/liveUnits\";\nimport { RootState } from \"@/store\";\n\nimport { LiveUnitState } from \"./types\";\n\n\nconst initialState: LiveUnitState = {\n liveUnitsStream: webDataNotAsked(),\n liveUnitsArchives: webDataNotAsked(),\n};\n\nexport const liveUnitsSlice = createSlice({\n name: \"liveUnits\",\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(fetchLiveUnitsStream.pending, (state) => {\n state.liveUnitsStream = webDataLoading();\n })\n .addCase(fetchLiveUnitsStream.fulfilled, (state, action) => {\n state.liveUnitsStream = webDataSuccess(action.payload);\n })\n .addCase(fetchLiveUnitsStream.rejected, (state, action) => {\n state.liveUnitsStream = serializedErrorToWebDataError(action.error);\n })\n .addCase(fetchLiveUnitsArchives.pending, (state) => {\n state.liveUnitsArchives = webDataLoading();\n })\n .addCase(fetchLiveUnitsArchives.fulfilled, (state, action) => {\n state.liveUnitsArchives = webDataSuccess(action.payload);\n })\n .addCase(fetchLiveUnitsArchives.rejected, (state, action) => {\n state.liveUnitsArchives = serializedErrorToWebDataError(action.error);\n });\n },\n});\n\nexport const liveUnitsReducer = liveUnitsSlice.reducer;\nexport const liveUnitsSelectors = {\n getLiveUnitsStream: (state: RootState) => {\n return state.liveUnits.liveUnitsStream;\n },\n getLiveUnitsArchives: (state: RootState) => {\n return state.liveUnits.liveUnitsArchives;\n },\n};\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { RootState } from \"@/store\";\n\n\ninterface SelectedUnit {\n id: number;\n isArchiveCabinet: boolean;\n isDeactivated: boolean;\n}\ninterface MapState {\n allFilter: boolean;\n archiveCabinetFilter: boolean;\n deactivatedFilter: boolean;\n liveUnitFilter: boolean;\n selectedUnit: null | SelectedUnit;\n}\n\nconst initialState: MapState = {\n allFilter: true,\n archiveCabinetFilter: true,\n deactivatedFilter: true,\n liveUnitFilter: true,\n selectedUnit: null,\n};\n\nexport const mapSlice = createSlice({\n name: \"map\",\n initialState,\n reducers: {\n setAllFilter(state, action: PayloadAction) {\n state.allFilter = action.payload;\n },\n setArchiveCabinetFilter(state, action: PayloadAction) {\n state.archiveCabinetFilter = action.payload;\n },\n setDeactivatedFilter(state, action: PayloadAction) {\n state.deactivatedFilter = action.payload;\n },\n setLiveUnitFilter(state, action: PayloadAction) {\n state.liveUnitFilter = action.payload;\n },\n setSelectedUnit(state, action: PayloadAction) {\n state.selectedUnit = action.payload;\n },\n },\n});\n\nexport const { setAllFilter, setArchiveCabinetFilter, setDeactivatedFilter, setLiveUnitFilter, setSelectedUnit } =\n mapSlice.actions;\n\nexport const mapReducer = mapSlice.reducer;\nexport const mapSelectors = {\n getSelectedUnit: (state: RootState) => {\n return state.map.selectedUnit;\n },\n getSelectedUnitId: (state: RootState) => {\n return state.map.selectedUnit?.id;\n },\n getIsArchiveCabinet: (state: RootState) => {\n return state.map.selectedUnit?.isArchiveCabinet;\n },\n getIsDeactivated: (state: RootState) => {\n return state.map.selectedUnit?.isDeactivated;\n },\n};\n","import {\n WebDataSteps,\n serializedErrorToWebDataError,\n webDataLoading,\n webDataNotAsked,\n webDataSuccess,\n} from \"@lvt/web-data\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nimport { liveUnitMosaicApi } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport { fetchStreamMetadata } from \"@/api/streamMetadata\";\n\nimport { StreamDataState } from \"./types\";\n\n\nconst initialState: StreamDataState & { requestId: string } = {\n streamMeta: webDataNotAsked(),\n requestId: \"\",\n};\n\nexport const streamDataSlice = createSlice({\n name: \"stream\",\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(fetchStreamMetadata.pending, (state, action) => {\n state.streamMeta = webDataLoading();\n state.requestId = action.meta.requestId;\n })\n .addCase(fetchStreamMetadata.fulfilled, (state, action) => {\n if (state.requestId === action.meta.requestId) {\n console.log(\"streamData/slice camera id: \", action.payload.cameraId);\n state.streamMeta = webDataSuccess(action.payload);\n }\n })\n .addCase(fetchStreamMetadata.rejected, (state, action) => {\n state.streamMeta = serializedErrorToWebDataError(action.error);\n })\n .addMatcher(liveUnitMosaicApi.endpoints.addPreset.matchFulfilled, (state, action) => {\n if (state.streamMeta.type == WebDataSteps.Success) {\n const streamMeta = state.streamMeta.payload;\n const { name, cameraId } = action.meta.arg.originalArgs;\n\n if (cameraId === streamMeta.cameraId) {\n const id = action.payload;\n\n streamMeta.presets.push({ id, name, isHome: false });\n }\n }\n })\n .addMatcher(liveUnitMosaicApi.endpoints.updatePreset.matchFulfilled, (state, action) => {\n if (state.streamMeta.type == WebDataSteps.Success) {\n const streamMeta = state.streamMeta.payload;\n const { name, presetId } = action.meta.arg.originalArgs;\n\n const preset = streamMeta.presets.find(p => p.id === presetId);\n\n if (preset) {\n preset.name = name;\n }\n }\n })\n ;\n },\n});\n\nexport const streamDataReducer = streamDataSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { Client } from \"@/api/clients\";\nimport { UserPermissions, fetchUserInfo, UserIdentity } from \"@/api/user\";\n\n\nexport interface UserState {\n clientId: number | null;\n id: number | null;\n lvtc: string | null;\n lvtu: string | null;\n lvtr: string | null;\n username: string | null;\n name: string | null;\n permissions: UserPermissions | null;\n userClient: Client | null;\n token: string | null;\n timeZone: string | null;\n videoPreference: string | null;\n sessionStart: string | null;\n}\n\nconst initialState: UserState = {\n clientId: null,\n id: null,\n lvtc: null,\n lvtu: null,\n lvtr: null,\n username: null,\n name: null,\n permissions: null,\n userClient: null,\n token: null,\n timeZone: null,\n videoPreference: null,\n sessionStart: null,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState,\n reducers: {\n setUserIdentity: (state, action: PayloadAction) => {\n const { userId: id, userToken: token, clientId } = action.payload;\n\n state.id = id;\n state.token = token;\n state.clientId = clientId;\n },\n setUserClient(state, action: PayloadAction) {\n state.userClient = action.payload;\n },\n setUserSession(state) {\n const now = new Date();\n\n state.sessionStart = now.toISOString();\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchUserInfo.fulfilled, (state, action) => {\n const { id, lvtc, lvtu, lvtr, permissions, name, videoPreference, timeZone, username } = action.payload;\n\n state.id = id;\n state.lvtc = lvtc;\n state.lvtu = lvtu;\n state.lvtr = lvtr;\n state.name = name;\n state.permissions = permissions;\n state.videoPreference = videoPreference;\n state.timeZone = timeZone;\n state.username = username;\n });\n },\n});\n\nexport const { setUserIdentity, setUserClient, setUserSession } = userSlice.actions;\nexport const userReducer = userSlice.reducer;\n","import globals from \"@lvt/globals\";\nimport { createAsyncThunk, SerializedError } from \"@reduxjs/toolkit\";\nimport Ajv from \"ajv\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { DispatchType } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { UserLists, UserListInput, CamList } from \"@/store/userLists/types\";\n\n\nconst fetchUserListsDataSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n properties: {\n status: { type: \"integer\" },\n statusMessage: { type: \"string\" },\n data: {\n type: \"object\",\n required: [\"favorites\"],\n properties: {\n favorites: {\n type: [\"object\", \"null\"],\n required: [\"id\", \"name\", \"cameras\"],\n properties: {\n id: { type: \"integer\" },\n name: { type: \"string\" },\n cameras: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"camId\", \"camName\", \"clientId\", \"lastImageUrl\"],\n additionalProperties: false,\n properties: {\n camId: { type: \"integer\" },\n camName: { type: \"string\" },\n clientId: { type: \"number\" },\n lastImageUrl: { type: [\"string\", \"null\"] },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: true,\n },\n },\n additionalProperties: false,\n};\n\nconst updateUserListsSchema = {\n type: \"object\",\n required: [\"status\", \"statusMessage\", \"data\"],\n properties: {\n status: { type: \"integer\" },\n statusMessage: { type: \"string\" },\n data: {\n type: [\"object\", \"null\"],\n required: [\"id\", \"name\", \"cameras\"],\n properties: {\n id: { type: \"integer\" },\n name: { type: \"string\" },\n cameras: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"camId\", \"camName\", \"clientId\", \"lastImageUrl\"],\n additionalProperties: false,\n properties: {\n camId: { type: \"integer\" },\n camName: { type: \"string\" },\n clientId: { type: \"number\" },\n lastImageUrl: { type: [\"string\", \"null\"] },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n};\n\nconst fetchUserListsValidator = new Ajv().compile(fetchUserListsDataSchema);\n\nexport const fetchUserListsData = createAsyncThunk(\"fetchUserListsData\", async (userId: number, { dispatch }) => {\n try {\n const request = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n const response = await request.get(`/api/cam_lists/${userId}`, {\n withCredentials: true,\n });\n\n if (fetchUserListsValidator(response.data)) {\n if (response.data.status == 200) {\n return response.data.data as UserLists;\n } else {\n const error: SerializedError = {\n name: \"statusCode\",\n message: \"Error\" + response.data.status + \": \" + response.data.statusMessage,\n };\n\n throw error;\n }\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(fetchUserListsValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(error.message);\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to retrieve user data\",\n }),\n );\n }\n\n throw error;\n }\n});\n\nconst updateUserListsValidator = new Ajv().compile(updateUserListsSchema);\n\nexport const addUserLists = createAsyncThunk(\"addUserLists\", async (data: UserListInput, { dispatch }) => {\n try {\n const request = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n const response = await request.post(\"/api/cam_lists\", data, {\n withCredentials: true,\n });\n\n if (updateUserListsValidator(response.data)) {\n if (response.data.status === 200) {\n return response.data.data as CamList;\n } else {\n const error: SerializedError = {\n name: \"statusCode\",\n message: \"Error\" + response.data.status + \": \" + response.data.statusMessage,\n };\n\n throw error;\n }\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(updateUserListsValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(error.message);\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to add favorite list\",\n }),\n );\n }\n\n throw error;\n }\n});\n\nexport const putUserFavData = createAsyncThunk(\n \"putUserFavData\",\n async ({ favoriteListId, data }: { favoriteListId: number; data: UserListInput }, { dispatch }) => {\n try {\n const request = applyCaseMiddleware(\n axios.create({\n baseURL: globals.userdashboard.proxyUrl,\n }),\n );\n const response = await request.put(`/api/cam_lists/${favoriteListId}`, data, {\n withCredentials: true,\n });\n\n if (updateUserListsValidator(response.data)) {\n if (response.data.status === 200) {\n return response.data.data as CamList;\n } else {\n const error: SerializedError = {\n name: \"statusCode\",\n message: \"Error\" + response.data.status + \": \" + response.data.statusMessage,\n };\n\n throw error;\n }\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(updateUserListsValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(error.message);\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to favorite camera\",\n }),\n );\n }\n\n throw error;\n }\n },\n);\n\nexport const updateFavorites = (\n isFavoriteVal: boolean,\n cameraId: number,\n userId: number,\n userLists: UserLists | null,\n dispatch: DispatchType,\n) => {\n let newCameras: number[] = [];\n let deleteCameras: number[] = [];\n\n if (isFavoriteVal) {\n newCameras = [cameraId];\n } else {\n deleteCameras = [cameraId];\n }\n\n const postObj: UserListInput = {\n userId: userId,\n name: \"Favorites\",\n isFavorites: true,\n newCameras,\n deleteCameras,\n };\n\n if (userLists && userLists.favorites && userLists.favorites.id) {\n dispatch(putUserFavData({ favoriteListId: userLists.favorites.id, data: postObj }));\n } else {\n dispatch(addUserLists(postObj));\n }\n};\n","import {\n isSuccess,\n serializedErrorToWebDataError,\n webDataLoading,\n webDataNotAsked,\n webDataSuccess,\n} from \"@lvt/web-data\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nimport { fetchUserListsData, addUserLists, putUserFavData } from \"@/api/users\";\n\nimport { UserListsState } from \"./types\";\n\n\nconst initialState: UserListsState = {\n userListsData: webDataNotAsked(),\n};\n\nexport const userListsSlice = createSlice({\n name: \"userLists\",\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(fetchUserListsData.pending, (state) => {\n state.userListsData = webDataLoading();\n })\n .addCase(fetchUserListsData.fulfilled, (state, action) => {\n state.userListsData = webDataSuccess(action.payload);\n })\n .addCase(fetchUserListsData.rejected, (state, action) => {\n state.userListsData = serializedErrorToWebDataError(action.error);\n })\n .addCase(addUserLists.fulfilled, (state, action) => {\n if (isSuccess(state.userListsData)) {\n state.userListsData.payload.favorites = action.payload;\n }\n })\n .addCase(putUserFavData.fulfilled, (state, action) => {\n if (isSuccess(state.userListsData)) {\n state.userListsData.payload.favorites = action.payload;\n }\n });\n },\n});\n\nexport const userListsReducer = userListsSlice.reducer;\n","import globals from \"@lvt/globals\";\nimport { configureStore } from \"@reduxjs/toolkit\";\nimport * as Sentry from \"@sentry/react\";\nimport { TypedUseSelectorHook, useDispatch as useDispatchBase, useSelector as useSelectorBase } from \"react-redux\";\nimport { combineReducers, StoreEnhancer } from \"redux\";\n\nimport { vmsSearchApi } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { liveUnitMosaicApi } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport { requestedVideosApi } from \"@/api/requestedVideos\";\nimport { speakerTalkdownApi } from \"@/api/speakerTalkdown/speakerTalkdownApi\";\nimport { vmsBaseApi } from \"@/api/vmsBase\";\nimport { elasticSearchReducer } from \"@/store/elasticSearch/slice\";\nimport { archiveCabinetsReducer as mapArchiveCabinetsReducer } from \"@/store/map/archiveCabinets/slice\";\nimport { liveUnitsReducer as mapLiveUnitsReducer } from \"@/store/map/liveUnits/slice\";\n\nimport { alertsReducer } from \"./alerts/slice\";\nimport { archivesReducer } from \"./archives/slice\";\nimport { camerasReducer } from \"./cameras/slice\";\nimport { clientsReducer } from \"./clients/slice\";\nimport { liveUnitNavReducer } from \"./liveUnitNav/slice\";\nimport { liveUnitsReducer } from \"./liveUnits/slice\";\nimport { mapReducer } from \"./map/slice\";\nimport { streamDataReducer } from \"./streamData/slice\";\nimport { userReducer } from \"./user/slice\";\nimport { userListsReducer } from \"./userLists/slice\";\n\n\nconst reducer = combineReducers({\n alerts: alertsReducer,\n archives: archivesReducer,\n cameras: camerasReducer,\n clients: clientsReducer,\n elasticSearch: elasticSearchReducer,\n liveUnitNav: liveUnitNavReducer,\n liveUnits: liveUnitsReducer,\n map: mapReducer,\n mapArchiveCabinets: mapArchiveCabinetsReducer,\n mapLiveUnits: mapLiveUnitsReducer,\n stream: streamDataReducer,\n user: userReducer,\n userLists: userListsReducer,\n [vmsSearchApi.reducerPath]: vmsSearchApi.reducer,\n [speakerTalkdownApi.reducerPath]: speakerTalkdownApi.reducer,\n [vmsBaseApi.reducerPath]: vmsBaseApi.reducer,\n [liveUnitMosaicApi.reducerPath]: liveUnitMosaicApi.reducer,\n [requestedVideosApi.reducerPath]: requestedVideosApi.reducer,\n});\n\nconst enhancers: StoreEnhancer[] = [];\n\nif (globals.sentry.dsn) {\n enhancers.push(Sentry.createReduxEnhancer());\n}\n\nexport const createStore = (initialState: any = undefined) =>\n configureStore({\n reducer: reducer,\n enhancers: enhancers,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n immutableCheck: { ignoredPaths: [\"api\"] },\n serializableCheck: { ignoredPaths: [\"api\"] },\n })\n .concat(vmsSearchApi.middleware)\n .concat(speakerTalkdownApi.middleware)\n .concat(vmsBaseApi.middleware)\n .concat(liveUnitMosaicApi.middleware)\n .concat(requestedVideosApi.middleware),\n preloadedState: initialState,\n });\n\nexport type Store = ReturnType;\nexport type RootState = ReturnType;\n\nexport const useDispatch = () => useDispatchBase();\nexport type DispatchType = ReturnType;\nexport const useSelector: TypedUseSelectorHook = useSelectorBase;\n","// This provider is made in-house instead of using the featurehub-react-sdk becasuse the\n// latter depends on react 18.3.0 and upgrading would be a huge chore\nimport { EdgeFeatureHubConfig, ClientContext } from \"featurehub-javascript-client-sdk\";\nimport React, { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { useSelector } from \"@/store\";\n\n// Define the type for your context state\ninterface FeatureHubContextType {\n context: ClientContext | null;\n}\n\n// Create the context with a default value\nconst FeatureHubContext = createContext(undefined);\n\ninterface FeatureHubProviderProps {\n edgeUrl: string;\n apiKey: string;\n children: React.ReactNode;\n}\n\n// FeatureHub Provider component\nexport const FeatureHubProvider: React.FC = ({ edgeUrl, apiKey, children }) => {\n const { username } = useSelector((state) => state.user);\n const [isReady, setIsReady] = useState(false);\n const [context, setContext] = useState(null);\n\n useEffect(() => {\n if (username) {\n // Initialize the FeatureHub configuration\n const config = new EdgeFeatureHubConfig(edgeUrl, apiKey);\n\n config.addReadynessListener((_, firstTimeReady) => {\n setIsReady(firstTimeReady);\n });\n\n const ctx = config.newContext();\n\n ctx.userKey(username.toLowerCase());\n\n ctx.build();\n\n setContext(ctx);\n\n return () => {\n ctx.clear();\n };\n }\n }, [edgeUrl, apiKey, username]);\n\n return (\n \n {children}\n \n );\n};\n\n// Custom hook to use the FeatureHub context\nexport const useFeatureHub = (): FeatureHubContextType => {\n const context = useContext(FeatureHubContext);\n\n if (context === undefined) {\n throw new Error(\"useFeatureHub must be used within a FeatureHubProvider\");\n }\n\n return context;\n};\n\nexport const Flags = {\n alerts: \"next_alerts\",\n alertsAllowlist: \"next_alerts_allowlist\",\n reports: \"next_reports\",\n};\n","import { Grid } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport clsx from \"clsx\";\nimport { FC, ReactNode } from \"react\";\n\n\ninterface EmptyLayoutProps {\n children?: ReactNode | ReactNode[];\n}\n\nconst usePageStyles = makeStyles(() =>\n createStyles({\n app: { flexWrap: \"nowrap\" },\n page: {\n flexGrow: 1,\n overflow: \"hidden\",\n },\n }),\n);\n\nconst EmptyLayout: FC = ({ children }) => {\n const pageClasses = usePageStyles();\n\n return (\n \n \n
\n {children}\n
\n
\n
\n );\n};\n\nexport default EmptyLayout;\n","import { makeStyles, createStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles(() =>\n createStyles({\n dragVertical: {\n width: 24,\n height: 24,\n },\n lvtLogoBlack: {\n \"& path\": {\n fillRule: \"evenodd\",\n },\n },\n shieldIcon: {\n enableBackground: \"new 0 0 24 24\",\n marginLeft: -1,\n },\n luadminIcon: {\n enableBackground: \"new 0 0 24 24\",\n marginLeft: 1,\n },\n imageNotFound: {\n margin: \"auto\",\n },\n }),\n);\n","import useStyles from \"./Svg.styles\";\n\n\nconst DragVertical: React.FC = () => {\n const classes = useStyles();\n\n return (\n \n \n \n );\n};\n\nconst LvtLogoBlack: React.FC = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst LvtLogoFullBlack: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst SignOut: React.FC = () => {\n return (\n \n \n \n );\n};\n\nconst ManageAccountOutline: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst LiveUnitIcon: React.FC = () => {\n return (\n \n \n \n );\n};\n\nconst Shield: React.FC = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n );\n};\n\nconst LUAdmin: React.FC = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n );\n};\n\nconst Sounds: React.FC = () => {\n return (\n \n \n \n );\n};\n\nconst AlertTimelineConnector: React.FC = () => {\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nconst ImageNotFound: React.FC = () => {\n const styles = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Presets: React.FC = () => {\n return (\n \n \n \n );\n};\n\nconst ClickAndDrag: React.FC = () => {\n return (\n \n \n \n );\n};\n\nexport {\n AlertTimelineConnector,\n DragVertical,\n ImageNotFound,\n LiveUnitIcon,\n LUAdmin,\n LvtLogoBlack,\n LvtLogoFullBlack,\n ManageAccountOutline,\n Presets,\n Shield,\n SignOut,\n Sounds,\n ClickAndDrag,\n};\n","import { ReactNode, createContext, useContext, useEffect, useState } from \"react\";\nimport z from \"zod\";\n\nimport { useSelector } from \"@/store\";\n\n\ntype ProductEntitlements = {\n adminAccess: boolean;\n ccAccess: boolean;\n vmAccess: boolean;\n};\n\ninterface ProductEntitlementsContextProps {\n data: ProductEntitlements;\n}\n\nconst ProductEntitlementsContext = createContext(undefined);\n\nconst ProductEntitlementsSchema = z.object({\n adminAccess: z.boolean(),\n ccAccess: z.boolean(),\n vmAccess: z.boolean(),\n});\n\nconst LocalStorageProductEntitlementsSchema = z.object({\n userId: z.string().uuid(),\n entitlements: ProductEntitlementsSchema,\n});\n\ninterface ProductEntitlementsProviderProps {\n children: ReactNode;\n nextAppUrl: string;\n}\n\nexport default function ProductEntitlementsProvider({ children, nextAppUrl }: ProductEntitlementsProviderProps) {\n const { lvtu } = useSelector((state) => state.user);\n // we assume that the user has no product entitlements to begin with\n const [data, setData] = useState>({\n adminAccess: false,\n ccAccess: false,\n vmAccess: false,\n });\n const [isFetchStarted, setIsFetchStarted] = useState(false);\n\n useEffect(() => {\n if (!lvtu || isFetchStarted) {\n return;\n }\n\n // This function uses the product entitlements value stored in localStorage if it is\n // preset and matches the current user, then ensures an up-to-date value is used by\n // making a request for the entitlements and updates the localStorage value.\n //\n // If the localStorage value is absent or does not correspond to the current user\n // AND the request fails (likely due to the NextJS app's cookie not being present or\n // no longer being valid), then the user is redirected to the NextJS app to log in\n // where they will then get the NextJS app's cookie.\n //\n // Falling back to the localStorage value is a comporomise that allows the user to\n // keep using the site in case the NextJS app's cookie is no longer valid. The\n // possibility that the request fails and the localStorage value is out of date is\n // very low.\n //\n // Why use the value in localStorage first instead of just waiting for the response?\n // This reduces nav icon jitter in the UI. We can more quickly retrieve values from\n // localstorage than retrieve them from an http response and the value in\n // localStorage is very likely to be the value that is retrieved from the NextJS\n // app.\n (async () => {\n setIsFetchStarted(true);\n\n // First we set the data from localStorage if it is good, and remove it if it is bad\n try {\n const item = localStorage.getItem(\"product-entitlements\");\n\n if (!item) {\n throw new Error(\"product entitlements are not stored in localStorage\");\n }\n\n const anyObject = JSON.parse(item);\n\n const value = LocalStorageProductEntitlementsSchema.parse(anyObject);\n\n // ensure value is for the current user\n if (value.userId !== lvtu) {\n throw new Error(\"product entitlements in localStorage do not match the current user\");\n } else {\n setData(value.entitlements);\n }\n } catch (e) {\n console.log(`Could not process product entitlements from localStorage: ${e}`);\n\n // If we get here we assume the value is bad and remove it from localStorage.\n localStorage.removeItem(\"product-entitlements\");\n }\n\n // We are now sure that the value in localStorage is for the current user and is good, else it is not set\n\n // Finally, we fetch the up-to-date value from the NextJS app\n try {\n const response = await fetch(`${nextAppUrl}/api/user/product-entitlements`, {\n credentials: \"include\",\n });\n\n if (!response.ok) {\n throw new Error(`response for product entitlements is not ok: ${response}`);\n }\n\n const unsafeValue = await response.json();\n\n const entitlements = ProductEntitlementsSchema.parse(unsafeValue);\n\n localStorage.setItem(\"product-entitlements\", JSON.stringify({ userId: lvtu, entitlements }));\n\n setData(entitlements);\n } catch (e) {\n console.log(`unable to request product entitlements: ${e}`);\n\n if (!localStorage.getItem(\"product-entitlements\")) {\n // There was a problem requesting product entitlements from the\n // NextJS app possibly due to the NextJS app's session cookie having\n // expired, and also we have no record of what the product\n // entitlements ever were for this user, so here we temporarily\n // redirect back the the NextJS app so we can get the cookie again\n console.error(`Error product entitlements request failed: ${e}`);\n window.location.href = `${nextAppUrl}/external-landing?redirect_to=${encodeURIComponent(\n window.location.href,\n )}`;\n }\n }\n // If we got to here, we're good. We at least have a localStorage record\n // of what this user's product entitlements were. The likelihood of\n // the request failing and the record being inaccurate is very low.\n })();\n }, [lvtu]);\n\n return {children};\n}\n\nexport function useProductEntitlementsContext() {\n const context = useContext(ProductEntitlementsContext);\n\n if (!context) {\n throw new Error(\"useProductEntitlementsContext is not available\");\n }\n\n return context;\n}\n","export const supportEmail = \"support@lvt.com\";\nexport const supportKnowledgeBase = \"support.liveviewtech.com\";\nexport const supportVMSBetaGuide = \"https://support.liveviewtech.com/article/265-vms-user-guide-beta\";\nexport const supportPhone = \"888-588-9408\";\nexport const supportHours = \"M-F 6am-8pm MT\";\n","import { makeStyles, createStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) =>\n createStyles({\n divider: {\n marginBottom: \"1.25em\",\n },\n\n // Help Tooltip\n helpActive: {\n borderRadius: \"50%\",\n boxSizing: \"content-box\",\n outline: `0.25em solid ${theme.palette.secondary.main}`,\n },\n helpClose: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n position: \"absolute\",\n right: 8,\n top: 2,\n },\n helpTooltip: {\n backgroundColor: \"white\",\n borderRadius: \"1em\",\n boxShadow: theme.shadows[3],\n color: theme.palette.text.primary,\n padding: \"1em 1.5em\",\n \"& p\": {\n marginTop: \"0.25em\",\n },\n width: 220,\n },\n\n // Help Menu\n menu: {\n padding: \"1em\",\n width: \"22em\",\n },\n menuSection: {\n paddingBottom: \"1em\",\n lineHeight: 2,\n },\n menuHeader: {\n fontSize: \"1.2rem\",\n fontWeight: 700,\n },\n sectionHeader: {\n fontSize: \"0.875rem\",\n fontWeight: 700,\n },\n }),\n);\n","import { NavMenu } from \"@lvt/vertical-navbar\";\nimport { Box, Divider, Link } from \"@material-ui/core\";\nimport { HelpOutline } from \"@material-ui/icons\";\n\nimport { supportEmail, supportHours, supportPhone, supportVMSBetaGuide } from \"@/utilities/support\";\n\nimport useStyles from \"./HelpCenter.styles\";\n\n\nconst HelpCenter = () => {\n const classes = useStyles();\n\n return (\n }\n label=\"Help Center\"\n menuClassName={classes.menu}\n >\n
\n
Get Help
\n
\n
\n Knowledge Base\n \n Support Center\n \n
\n \n
\n
Contact Support
\n \n \n
Email:
\n
Phone:
\n
Hours:
\n
\n \n
\n \n {supportEmail}\n \n
\n
{supportPhone}
\n
{supportHours}
\n
\n
\n
\n \n );\n};\n\nexport default HelpCenter;\n","import { NavMenu } from \"@lvt/vertical-navbar\";\nimport { ListItemIcon, Link, ListItemText, MenuItem } from \"@material-ui/core\";\nimport { AccountCircleOutlined, ExitToApp } from \"@material-ui/icons\";\nimport { FC } from \"react\";\n\nimport { useSelector } from \"@/store\";\n\n\ninterface MyAccountProps {\n portalUrl: string;\n}\n\nconst MyAccount: FC = ({ portalUrl }) => {\n const { id, name } = useSelector((state) => state.user);\n\n return (\n <>\n {id && name &&\n } label=\"My Account\">\n \n \n \n \n \n {name}\n \n \n \n \n \n \n \n Sign Out\n \n \n \n }\n \n );\n};\n\nexport default MyAccount;\n","import { NavContainer, NavLink, NavHeader, NavFooter } from \"@lvt/vertical-navbar\";\nimport { SettingsOutlined, BarChart, NewReleasesOutlined } from \"@material-ui/icons\";\nimport { OpenInNew, VideoCameraBackOutlined } from \"@mui/icons-material\";\nimport EmergencyRecordingIcon from \"@mui/icons-material/EmergencyRecording\";\nimport { FC } from \"react\";\n\nimport { Shield, LvtLogoBlack } from \"@/common/components/SVG/Svg\";\nimport { useProductEntitlementsContext } from \"@/common/contexts/productEntitlementsContext\";\nimport { useSelector } from \"@/store\";\nimport LvtUrls from \"@/utilities/types/lvtUrls\";\n\nimport HelpCenter from \"./HelpCenter/HelpCenter\";\nimport MyAccount from \"./MyAccount/MyAccount\";\nimport { useShouldShowReports } from \"./useShouldShowReports\";\n\n\ninterface VerticalNavBarProps {\n urls: LvtUrls;\n}\n\nconst VerticalNavBar: FC = ({ urls }) => {\n const { permissions, lvtr } = useSelector((state) => state.user);\n const {\n data: { adminAccess, ccAccess, vmAccess },\n } = useProductEntitlementsContext();\n\n const shouldShowReports = useShouldShowReports();\n\n return (\n } logoUrl={urls.vms}>\n \n {(permissions?.cameras || permissions?.archives) && (\n }\n label=\"Live Units\"\n path={urls.vms}\n selected={window.location.href.startsWith(urls.vms) && !window.location.href.includes(\"alerts\")}\n target=\"_self\"\n />\n )}\n {vmAccess && (\n } label=\"VMS\" path={`${urls.nextApp}/vms`} target=\"_self\" />\n )}\n {(permissions?.d3cc || ccAccess) && (\n }\n label={\"Command Center\"}\n path={ccAccess ? `${urls.nextApp}/alerts` : urls.d3}\n target=\"_self\"\n />\n )}\n {shouldShowReports && (\n } label=\"Reports\" path={`${urls.nextApp}/reports`} target=\"_self\" />\n )}\n {(permissions?.liveUnits || permissions?.locations || permissions?.clients || permissions?.users) && (\n \n )}\n {lvtr === \"lvt_system_administrator\" || lvtr === \"partner_with_unit_config\" ? (\n }\n label=\"Live Unit Admin\"\n path={`${urls.selfService}`}\n target=\"_self\"\n />\n ) : null}\n {(ccAccess || vmAccess) && (\n } label=\"Legacy Settings\" path={`${urls.portal}/users`} target=\"_self\" />\n )}\n {(adminAccess || lvtr === \"partner_with_unit_config\") && (\n }\n label=\"Admin\"\n path={ccAccess || vmAccess ? `${urls.nextApp}/admin` : `${urls.portal}/users`}\n target=\"_self\"\n />\n )}\n \n \n \n \n \n );\n};\n\nexport default VerticalNavBar;\n","import { useFeatureHub, Flags } from \"@/common/components/Featurehub\";\nimport { useSelector } from \"@/store\";\n\n\nexport function useShouldShowReports() {\n const { lvtr } = useSelector((state) => state.user);\n const { context } = useFeatureHub();\n\n return !!(\n context?.isEnabled(Flags.reports) &&\n lvtr &&\n [\n \"lvt_system_administrator\",\n \"account_administrator\",\n \"account_administrator_with_sub_clients\",\n \"partner_with_unit_config\",\n ].includes(lvtr)\n );\n}\n","import { Box, Grid } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport clsx from \"clsx\";\nimport { FC, ReactNode } from \"react\";\n\nimport LvtUrls from \"@/utilities/types/lvtUrls\";\n\nimport VerticalNavBar from \"../components/VerticalNavBar/VerticalNavBar\";\n\n\ninterface SideNavLayoutProps {\n children?: ReactNode | ReactNode[];\n urls: LvtUrls;\n}\n\nconst usePageStyles = makeStyles(() =>\n createStyles({\n app: { flexWrap: \"nowrap\" },\n page: {\n flexGrow: 1,\n overflowX: \"hidden\",\n },\n }),\n);\n\nconst SideNavLayout: FC = ({ children, urls }) => {\n const pageClasses = usePageStyles();\n\n return (\n \n \n \n \n \n \n \n
\n {children}\n
\n
\n
\n );\n};\n\nexport default SideNavLayout;\n","import React from \"react\";\n\nimport { dummyArchiveMetadataService } from \"@/api/services/implementations\";\nimport { ArchiveMetadataService } from \"@/api/services/interfaces\";\n\n\nexport const ArchiveMetadataContext = React.createContext(dummyArchiveMetadataService);\nexport const ArchiveMetadataProvider = ArchiveMetadataContext.Provider;\nexport const ArchiveMetadataConsumer = ArchiveMetadataContext.Consumer;\n\ninterface Props {\n service: ArchiveMetadataService;\n}\n\nexport const ArchiveMetadataContextWrapper: React.FC = ({ service, children }) => {\n return {children};\n};\n","import React from \"react\";\n\nimport { dummyPresetImagesService } from \"@/api/services/implementations\";\nimport { PresetImagesService } from \"@/api/services/interfaces\";\n\n\nexport const PresetImagesContext = React.createContext(dummyPresetImagesService);\nexport const PresetImagesProvider = PresetImagesContext.Provider;\nexport const PresetImagesConsumer = PresetImagesContext.Consumer;\n\ninterface Props {\n service: PresetImagesService;\n}\n\nexport const PresetImagesContextWrapper: React.FC = ({ service, children }) => {\n return {children};\n};\n","import React from \"react\";\n\nimport { dummyVideoRetrievalService } from \"@/api/services/implementations\";\nimport { VideoRetrievalService } from \"@/api/services/interfaces\";\n\n\nexport const VideoRetrievalContext = React.createContext(dummyVideoRetrievalService);\nexport const VideoRetrievalProvider = VideoRetrievalContext.Provider;\nexport const VideoRetrievalConsumer = VideoRetrievalContext.Consumer;\n\ninterface Props {\n service: VideoRetrievalService;\n}\n\nexport const VideoRetrievalContextWrapper: React.FC = ({ service, children }) => {\n return {children};\n};\n","export const translation = {\n components: {\n app: {\n title: \"Live Unit Admin\",\n },\n liveUnitMosaicPage: {\n loading: \"$t(common.loading)\",\n errors: {\n getLiveUnitStreamData: \"Failed to get Live Unit Camera Stream\",\n getAlert: \"Failed to get Alert information\",\n realtimeEvents:\n \"Your system is trying to reconnect. Check your internet connection. If the problem persists please refresh the page.\",\n resolveFailed: \"Failed to resolve alert: {{message}}\",\n toggleFailed: \"Failed to toggle light: {{message}}\",\n },\n liveUnitViewers: {\n accessMessage: {\n cameraControl: \"You have camera access\",\n viewOnly: \"You are view only\",\n },\n accessTag: {\n viewOnly: \"View Only\",\n cameraControl: \"Camera Control\",\n },\n title: \"Viewers in Alert\",\n viewers: \"Viewers\",\n },\n footer: {\n live: \"LIVE\",\n goToAlerts: \"Go To Alert\",\n buttons: {\n lights: \"Lights\",\n },\n },\n },\n alerts: {\n alertsPage: {\n title: \"Alerts\",\n noAlerts: {\n header: \"Relax\",\n message: \"Your alerts are all resolved.\",\n },\n errors: {\n realtimeEvents:\n \"Your system is trying to reconnect. Check your internet connection. If the problem persists please refresh the page.\",\n },\n },\n alertItem: {\n alertSubject: {\n person: \"$t(common.alerts.alertSubject.person)\",\n vehicle: \"$t(common.alerts.alertSubject.vehicle)\",\n object: \"$t(common.alerts.alertSubject.object)\",\n },\n alertType: {\n lowvoltagedisconnect: \"$t(common.alerts.alertType.lowvoltagedisconnect)\",\n powerloss: \"$t(common.alerts.alertType.powerloss)\",\n mastmovement: \"$t(common.alerts.alertType.mastmovement)\",\n baseentry: \"$t(common.alerts.alertType.baseentry)\",\n headentry: \"$t(common.alerts.alertType.headentry)\",\n intrusion: \"$t(common.alerts.alertType.intrusion)\",\n loitering: \"$t(common.alerts.alertType.loitering)\",\n gunshot: \"$t(common.alerts.alertType.gunshot)\",\n fire: \"$t(common.alerts.alertType.fire)\",\n Test: \"$t(common.alerts.alertType.Test)\",\n other: \"$t(common.alerts.alertType.other)\",\n },\n alertTypeDefault: \"$t(common.alerts.alertTypeDefault)\",\n resolve: \"Resolve\",\n },\n resolveDialog: {\n title: \"Resolve Alert\",\n errors: {\n noteRequired: \"A note is required if 'Other' is selected\",\n tagRequired: \"A tag is required\",\n resolveFailed: \"Failed to resolve alert: {{message}}\",\n },\n toast: {\n resolveSuccess: \"Resolve alert {{alertId}} request sent\",\n },\n tags: {\n accident: \"Accident\",\n animal: \"Animal\",\n deterredCrime: \"Deterred Crime\",\n employeeVendor: \"Employee/Vendor\",\n loitering: \"Loitering\",\n suspiciousActivity: \"Suspicious Activity\",\n tampering: \"Tampering\",\n theft: \"Theft\",\n technicalIssue: \"Technical Issue\",\n violence: \"Violence\",\n other: \"Other\",\n },\n alertSubject: {\n person: \"$t(common.alerts.alertSubject.person)\",\n vehicle: \"$t(common.alerts.alertSubject.vehicle)\",\n object: \"$t(common.alerts.alertSubject.object)\",\n },\n alertType: {\n lowvoltagedisconnect: \"$t(common.alerts.alertType.lowvoltagedisconnect)\",\n powerloss: \"$t(common.alerts.alertType.powerloss)\",\n mastmovement: \"$t(common.alerts.alertType.mastmovement)\",\n baseentry: \"$t(common.alerts.alertType.baseentry)\",\n headentry: \"$t(common.alerts.alertType.headentry)\",\n intrusion: \"$t(common.alerts.alertType.intrusion)\",\n loitering: \"$t(common.alerts.alertType.loitering)\",\n gunshot: \"$t(common.alerts.alertType.gunshot)\",\n fire: \"$t(common.alerts.alertType.fire)\",\n Test: \"$t(common.alerts.alertType.Test)\",\n other: \"$t(common.alerts.alertType.other)\",\n },\n alertTypeDefault: \"$t(common.alerts.alertTypeDefault)\",\n note: \"Note\",\n resolveAlert: \"Resolve Alert\",\n },\n alertFooter: {\n alertType: {\n lowvoltagedisconnect: \"$t(common.alerts.alertType.lowvoltagedisconnect)\",\n powerloss: \"$t(common.alerts.alertType.powerloss)\",\n mastmovement: \"$t(common.alerts.alertType.mastmovement)\",\n baseentry: \"$t(common.alerts.alertType.baseentry)\",\n headentry: \"$t(common.alerts.alertType.headentry)\",\n intrusion: \"$t(common.alerts.alertType.intrusion)\",\n loitering: \"$t(common.alerts.alertType.loitering)\",\n gunshot: \"$t(common.alerts.alertType.gunshot)\",\n fire: \"$t(common.alerts.alertType.fire)\",\n Test: \"$t(common.alerts.alertType.Test)\",\n other: \"$t(common.alerts.alertType.other)\",\n },\n alertTypeDefault: \"$t(common.alerts.alertTypeDefault)\",\n },\n alertTimelineFooter: {\n resolve: \"Resolve\",\n resolved: \"Resolved\",\n goLive: \"Go Live\",\n },\n alertMediaTile: {\n cameraRole: {\n Right: \"Right\",\n Left: \"Left\",\n Primary: \"Primary\",\n Radar: \"Radar\",\n None: \"None\",\n },\n },\n cameraStreamTile: {\n actionButtons: {\n snapshot: \"Snapshot saved to Downloads\",\n presets: {\n newPreset: \"New\",\n settings: \"Settings\",\n title: \"Presets\",\n },\n },\n errors: {\n checkIn: \"Check in Failed\",\n addPreset: \"Failed to add preset\",\n updatePreset: \"Failed to update preset\",\n snapshot: \"Failed to take snapshot\",\n },\n },\n },\n loading: {\n loading: \"$t(common.loading)\",\n },\n requestedVideos: {\n previouslyRequestedVideos: \"Previously Requested Videos\",\n thermal: \"Thermal\",\n camera: \"Camera\",\n panoDewarped: \"Pano (Dewarped)\",\n recorded: \"Recorded\",\n requested: \"Requested\",\n requestedBy: \"Requested By\",\n timezone: \"TZ\",\n utcAppendment: \"UTC\",\n linkPopper: \"Link Copied — It will expire in 30 days\",\n errors: {\n shareLink: \"Failed to generate link: video_id {{videoId}}\",\n download: \"Failed to download video\",\n },\n },\n streamContent: {\n lightsButton: {\n lights: \"Lights\",\n },\n },\n },\n common: {\n loading: \"Loading...\",\n failure: {\n head: \"Something went wrong...\",\n body: \"Please try refreshing your page. If the problem persists please email support@lvt.com or call 888-588-9408\",\n },\n alerts: {\n alertSubject: {\n person: \"Person\",\n vehicle: \"Vehicle\",\n object: \"Object\",\n },\n alertType: {\n lowvoltagedisconnect: \"Low Voltage Disconnect\",\n powerloss: \"Powerloss\",\n mastmovement: \"Mast Movement\",\n baseentry: \"Base Entry\",\n headentry: \"Head Entry\",\n intrusion: \"Intrusion\",\n loitering: \"Loitering\",\n gunshot: \"Gunshot\",\n fire: \"Fire\",\n Test: \"Test\",\n other: \"Other\",\n },\n alertTypeDefault: \"Alert\",\n },\n },\n};\n","import i18n, { InitOptions } from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { enUS } from \"@/locales\";\n\n\nexport const resources = {\n en: { ...enUS },\n};\n\n// reuturns a Promise that needs to be awaited\n\nexport const i18nInit = (config?: InitOptions) =>\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: \"en\",\n debug: true,\n react: {\n useSuspense: false,\n },\n resources,\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n ...config,\n });\n","import { createContext, ReactNode, FC, useState, useEffect } from \"react\";\n\nimport { FeatureFlagService } from \"@/api/services/interfaces/FeatureFlag\";\n\n\n/**\n * TODO: We need to consider having an enumeration for the feature flag strings\n * for the front end and back end when we start adding more flags\n */\nexport interface FeatureFlagContextWrapperProps {\n /**\n * The service providing the feature flags\n */\n service: FeatureFlagService;\n\n /**\n * The child elements passed to the component\n */\n children: ReactNode | ReactNode[];\n}\n\nexport interface FeatureFlags {\n /**\n * Checks if a singular string is in the feature flags\n */\n hasFeatureFlag: (flag: string) => boolean;\n\n /**\n * Checks if a list of strings are all in the feature flags\n */\n hasFeatureFlags: (flags: string[]) => boolean;\n\n /**\n * Returns true once flags have been fetched, so behavior can be different\n * while loading.\n */\n hasFetchedFlags: () => boolean;\n}\n\n/**\n * Default implementation of the FeatureFlags\n * Marks all features as \"off\"\n */\nconst defaultFeatureFlags: FeatureFlags = {\n hasFetchedFlags: () => false,\n hasFeatureFlag: () => false,\n hasFeatureFlags: () => false,\n};\n\n/**\n * Context for interacting with feature flags\n */\nexport const FeatureFlagContext = createContext(defaultFeatureFlags);\n\n/**\n * React component to provide the feature flag context to child components\n */\nexport const FeatureFlagContextWrapper: FC = ({ service, children }) => {\n const [flags, setFlags] = useState();\n\n useEffect(() => {\n const getFlags = async () => {\n const response = await service.getFeatureFlags();\n\n setFlags(response);\n };\n\n getFlags();\n }, [service]);\n\n const hasFetchedFlags = () => flags !== undefined;\n\n const hasFeatureFlag = (required_flag: string) => flags?.includes(required_flag) ?? false;\n\n const hasFeatureFlags = (required_flags: string[]) => required_flags.every((f) => flags?.includes(f));\n\n const featureFlags: FeatureFlags = {\n hasFetchedFlags,\n hasFeatureFlag,\n hasFeatureFlags,\n };\n\n return (\n {children}\n );\n};\n","import { ReactNode, FC, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { FeatureFlagContext } from \"@/common/contexts/FeatureFlagContext\";\n\n\nexport interface OnFeatureFlagProps {\n /**\n * The value(s) to check for in feature flags. This can be a single string or an array of strings.\n * Note: If both flag and flags are provided, flags takes priority\n */\n flag: string | string[];\n\n /**\n * The url to redirect to if the flag is not present\n * If it is not provided, it will not redirect\n */\n redirect?: string;\n\n /**\n * Node to render if the flag is not present\n * Limited to a single node to discourage having too much code in the tag itself\n */\n renderOnDisabled?: ReactNode;\n\n /**\n * The child elements passed to this component\n */\n children: ReactNode | ReactNode[];\n}\n\nexport const OnFeatureFlag: FC = ({ flag, children, redirect, renderOnDisabled }) => {\n const featureFlags = useContext(FeatureFlagContext);\n const history = useHistory();\n const loaded = featureFlags.hasFetchedFlags();\n\n const shouldRender = typeof flag === \"string\" ? featureFlags.hasFeatureFlag(flag) : featureFlags.hasFeatureFlags(flag);\n\n // The feature flags are refetched when a user is redirected to a page outside of react-router\n // if we don't wait until feature flags are loaded, the user will always be redirected.\n if (!shouldRender && loaded && redirect) history.push(redirect);\n\n return (\n <>\n {shouldRender && children}\n {!shouldRender && renderOnDisabled}\n \n );\n};\n","/**\n * LVT FullStory integration lib.\n *\n * The FullStory library is implemented in combination with React's Contexts.\n *\n * Note: You can import this in two different ways, depending on your needs:\n * - If you just need the class/event names and not any functions of the api:\n * import * as FullStory from \"@/utilities/hooks/fullstory\"\n *\n * - If you need FullStory api functions:\n * import { useFullStory } from \"@/utilities/hooks/fullstory\";\n * // In Component\n * const FullStory = useFullStory();\n *\n * It's recommended to use the above two as they produce the same API when used\n * (i.g. Fullstory.names) allowing consistency across components that do and do not\n * use api functionality, while also allowing non-api users to skip using the hook.\n *\n * */\nimport * as FullStory from \"@fullstory/browser\";\nimport { UserVars } from \"@fullstory/browser\";\nimport React, { useContext } from \"react\";\n\n/**\n * Constants relative to full story names. These are constants that are used as class names on elements, or custom\n * events sent via FullStory.event(). These will show up in FullStory for use in metrics.\n */\nexport const names = {\n classes: {\n searchResults: {\n viewStream: \"data_button_search_viewstream\",\n viewHistory: \"data_button_search_viewHistory\",\n viewUnit: \"data_button_search_viewUnit\",\n },\n searchField: {\n common: \"data_field_search\",\n map: \"data_location_map\",\n stream: \"data_location_cameras\",\n history: \"data_location_history\",\n },\n backButton: {\n common: \"data_button_backtomap\",\n stream: \"data_location_cameras\",\n history: \"data_location_history\",\n },\n searchDrawer: {\n anyCamera: \"data_button_map_viewstream data_secondary_camerathumbnail\",\n defaultCamera: \"data_button_map_viewstream data_secondary_camerathumbnail data_tertiary_defaultcamera\",\n streamButton: \"data_button_map_viewstream data_secondary_map_drawer\",\n historyButton: \"data_button_map_viewhistory data_secondary_map_drawer\",\n },\n streaming: {\n relayPrefix: \"data_button_cameras_\",\n suspendPatrol: \"data_button_cameras_suspendpatrol\",\n otherCamera: \"data_button_cameras_cameraview data_secondary_camerathumbnail\",\n snapshot: \"data_button_cameras_snapshot\",\n presetMenu: \"data_menu_cameras_presets\",\n preset: \"data_select_cameras_preset\",\n lightMenu: \"data_menu_cameras_lights\",\n light: \"data_button_cameras_light\",\n strobeLight: \"data_secondary_strobelight\",\n floodLight: \"data_secondary_floodlight\",\n cameraLight: \"data_secondary_cameralight\",\n soundMenu: \"data_menu_cameras_sounds\",\n quickSound: \"data_button_cameras_quicksound\",\n },\n history: {\n timelineDate: \"data_field_history_timelinedate\",\n viewAllSaved: \"data_button_history_viewallsavedvideos\",\n thumbnail: \"data_button_history_largerview\",\n selectVideo: \"data_button_history_selectVideo\",\n requestVideo: \"data_button_history_requestVideo\",\n },\n map: {\n filterMenu: \"data_menu_map_filters\",\n filterToggle: \"data_toggle_map_filtertoggle\",\n },\n navigation: {\n cameras: \"data_button_unit_cameras\",\n history: \"data_button_unit_history\",\n },\n },\n events: {\n mapMarkerClicked: \"map_marker_clicked\",\n mapTypeChanged: \"map_type_changed\",\n favoriteAdd: \"data_toggle_cameras_favorite_add\",\n favoriteRemove: \"data_toggle_cameras_favorite_remove\",\n historyDateChanged: \"history_timelinedate_changed\",\n streamPageLoaded: \"stream_page_loaded\",\n historyPageLoaded: \"history_page_loaded\",\n },\n};\n\n/**\n* The interface of the Context used in our hook\n**/\nexport interface ContextInterface {\n isEnabled: boolean;\n isInDevMode: boolean;\n isInitialized: boolean;\n isLoggingEnabled: boolean;\n orgId?: string;\n}\n\n/**\n * The config passed to setup, which is basically all the information in the ContextInterface\n * minus the isInitialized field that is determined via setup()\n */\nexport type ContextConfig = Omit;\n\n/**\n * Setup FullStory for usage, calling FullStory.init() in the process and\n * returning a ContextInterface so components can know the current state\n * of FullStory\n */\nexport const setup = (config: ContextConfig): ContextInterface => {\n let isInitialized = false;\n\n // orgId is required by FullStory to initialize.\n if (config.isEnabled && config.orgId) {\n const fullStoryConfig = { orgId: config.orgId, devMode: config.isInDevMode };\n\n try {\n FullStory.init(fullStoryConfig);\n isInitialized = true;\n } catch (e) {\n console.error(\"FullStory][setup] init(\", fullStoryConfig, \") resulted in \", e);\n }\n }\n\n const results = { isInitialized, ...config };\n\n if (config.isLoggingEnabled) {\n console.log(\"[FullStory][setup]\", results);\n }\n\n return results;\n};\n\n/**\n * The FullStory React Context. The object passed to this will be the state the context is in, *IF*\n * there is no Provider tag wrapping the component the context is used in.\n */\nexport const Context = React.createContext({ isEnabled: false, isInDevMode: false, isInitialized: false, isLoggingEnabled: false });\n\n/**\n * FullStory Hook. (Must follow react hook rules)\n * This hook is the primary way to use FullStory. This hook wraps the FullStory module methods and uses the fullstory\n * Context to do any checks as to whether to make the api calls or not, as well as produce any logging.\n *\n * Note: If you need a function that's on the FullStory api, but not wrapped here, you can add them as needed.\n */\nexport const useFullStory = () => {\n const context = useContext(Context);\n\n const getModeDescription = () => context.isInDevMode ? \"dev\" : \"live\";\n\n const logPrefix = \"[FullStory][\" + getModeDescription() + \"]\";\n\n // Wrapper for FullStory.event(). Whether or not FullStory is properly enabled/initialized or not will be\n // handled\n const event = (eventName: string, eventProperties: { [key: string]: any }): void => {\n if (context.isEnabled && context.isInitialized) {\n try {\n FullStory.event(eventName, eventProperties);\n\n if (context.isLoggingEnabled) {\n console.log(logPrefix, \"event(\", eventName, \",\", eventProperties, \")\");\n }\n } catch (e) {\n console.error(logPrefix, \"event(\", eventName, \",\", eventProperties, \") resulted in \", e);\n }\n }\n };\n\n // Wrapper for FullStory.identify(). Whether or not FullStory is properly enabled/initialized or not will be\n // handled.\n const identify = (uid: string, customVars?: UserVars): void => {\n if (context.isEnabled && context.isInitialized) {\n try {\n FullStory.identify(uid, customVars);\n\n if (context.isLoggingEnabled) {\n console.log(logPrefix, \"identify(\", uid, \",\", customVars, \")\");\n }\n } catch (e) {\n console.error(logPrefix, \"identify(\", uid, \",\", customVars, \") resulted in \", e);\n }\n }\n };\n\n // Wrapper for FullStory.getCurrentSessionURL(). Whether or not FullStory is properly enabled/initialized or not will be\n // handled.\n const getCurrentSessionURL = (now?: boolean): string | null => {\n if (context.isEnabled && context.isInitialized) {\n try {\n const url = FullStory.getCurrentSessionURL(now);\n\n if (context.isLoggingEnabled) {\n console.log(logPrefix, \"getCurrentSessionURL(\", now, \")\");\n }\n\n return url;\n } catch (e) {\n console.error(logPrefix, \"getCurrentSessionURL(\", now, \") resulted in \", e);\n }\n }\n\n return null;\n };\n\n return { event, identify, getCurrentSessionURL, names };\n};\n","import { Typography, IconButton, Button, Link } from \"@material-ui/core\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Close } from \"@material-ui/icons\";\n\n\nimport { InformationalVideo } from \"./types\";\n\n\ninterface InformationalVideoModalProps {\n video: InformationalVideo;\n open: boolean;\n onClose: () => void;\n}\n\nconst useStyles = makeStyles(() => ({\n modal: {\n borderRadius: 16,\n },\n modalBody: {\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"column\",\n padding: 45,\n },\n headerText: {\n fontWeight: 700,\n },\n contentMargin: {\n margin: \"7px 0\",\n },\n closeButton: {\n position: \"absolute\",\n right: 10,\n top: 10,\n zIndex: 90,\n backgroundColor: \"#00000040\",\n color: \"white\",\n \"&:hover\": {\n backgroundColor: \"#00000060\",\n },\n },\n}));\n\nconst InformationalVideoModal: React.FC = ({ video, open, onClose }) => {\n\n const classes = useStyles();\n\n return (\n \n\n \n \n \n\n\n \n );\n};\n\nexport default InformationalVideoModal;\n","import globals from \"@lvt/globals\";\nimport axios from \"axios\";\nimport { useState, useEffect } from \"react\";\n\nimport InformationalVideoModal from \"./InformationalVideoModal\";\nimport { InformationalVideo, Page } from \"./types\";\n\n\ninterface InformationalVideoModalWrapperProps {\n page: Page;\n}\n\n\nconst InformationalVideoModalWrapper: React.FC = ({ page }) => {\n const [video, setVideo] = useState(null);\n const [isOpen, setIsOpen] = useState(true);\n\n const onClose = () => {\n setIsOpen(false);\n // Modal does not exist if there is no video\n recordUserView(video!.id);\n };\n\n const recordUserView = (id: number) => {\n axios.post(`${globals.userdashboard.proxyUrl}/api/informational_videos/${id}`)\n .then(res => {\n if (res.status !== 200) {\n console.error(\"Record user view request failure\", res);\n }\n });\n };\n\n useEffect(() => {\n axios.get(`${globals.userdashboard.proxyUrl}/api/informational_videos?page=${page}`)\n .then(res => {\n if (res.status === 200) {\n const response:InformationalVideo[] = res.data.data;\n\n setVideo(response[0]);\n }\n });\n }, []);\n\n return (<>{video && });\n};\n\nexport default InformationalVideoModalWrapper;\n","export interface InformationalVideo {\n id: number;\n page: string;\n video_url: string;\n thumbnail_url?: string;\n header_text?: string;\n body_text?: string;\n documentation_url?: string;\n}\n\nexport enum Page {\n VmsMap = \"VmsMap\",\n VmsStream = \"VmsStream\",\n VmsHistory = \"VmsHistory\",\n}\n","import { makeStyles, withStyles } from \"@material-ui/core\";\nimport MuiAccordion from \"@material-ui/core/Accordion\";\nimport zIndex from \"@material-ui/core/styles/zIndex\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n base: {\n height: 48,\n \"&.Mui-expanded\": {\n minHeight: 48,\n },\n },\n divider: {\n borderTop: `1px solid ${theme.palette.grey[300]}`,\n margin: \"5px 0\",\n },\n filters: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n filterCheckbox: {\n margin: \"-5px 0px\",\n },\n filterIcon: {\n width: \"1.8rem\",\n height: \"1.8rem\",\n },\n filterLabel: {\n color: theme.palette.grey[700],\n display: \"flex\",\n alignItems: \"center\",\n margin: \"4px 0px\",\n \"& p\": {\n marginLeft: \"6px\",\n },\n },\n}));\n\nexport const Accordion = withStyles({\n root: {\n borderRadius: 2,\n bottom: 0,\n boxShadow: \"rgba(0, 0, 0, 0.3) 0px 1px 4px -1px\",\n display: \"flex\",\n flexDirection: \"column-reverse\",\n left: \"4.5rem\",\n margin: \"26px 10px\",\n position: \"fixed\",\n zIndex: zIndex.appBar,\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n bottom: 0,\n left: \"4.5rem\",\n margin: \"26px 10px\",\n zIndex: zIndex.appBar,\n },\n },\n expanded: {},\n})(MuiAccordion);\n","import { AccordionDetails, AccordionSummary, Checkbox, Divider, FormControlLabel, Typography } from \"@material-ui/core\";\nimport { ExpandLess } from \"@material-ui/icons\";\nimport clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\n\nimport MarkerArchiveCabinet from \"@/assets/img/map/MarkerArchiveCabinet.svg\";\nimport MarkerDeactivated from \"@/assets/img/map/MarkerDeactivated.svg\";\nimport MarkerLiveUnit from \"@/assets/img/map/MarkerLiveUnit.svg\";\nimport { Accordion, useStyles } from \"@/common/components/MapLandingPage/Filters/FiltersStyles\";\nimport { useDispatch, RootState, useSelector } from \"@/store/index\";\nimport { setAllFilter, setArchiveCabinetFilter, setDeactivatedFilter, setLiveUnitFilter } from \"@/store/map/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\nexport default function Filters() {\n\n const all: boolean = useSelector((state: RootState) => state.map.allFilter);\n const archiveCabinet: boolean = useSelector((state: RootState) => state.map.archiveCabinetFilter);\n const deactivated: boolean = useSelector((state: RootState) => state.map.deactivatedFilter);\n const liveUnit: boolean = useSelector((state: RootState) => state.map.liveUnitFilter);\n const [isExpanded, setIsExpanded] = useState(false);\n\n const classes = useStyles();\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (deactivated && liveUnit && archiveCabinet) {\n dispatch(setAllFilter(true));\n } else {\n dispatch(setAllFilter(false));\n }\n }, [deactivated, liveUnit, archiveCabinet]);\n\n const handleVisibility = () => setIsExpanded((state) => !state);\n\n return (\n handleVisibility()}>\n }>\n Filters\n \n \n {\n dispatch(setArchiveCabinetFilter(e.target.checked));\n dispatch(setDeactivatedFilter(e.target.checked));\n dispatch(setLiveUnitFilter(e.target.checked));\n }}\n checked={all}\n className={clsx(classes.filterCheckbox, FullStory.names.classes.map.filterToggle)}\n color=\"default\"\n />\n }\n label={All}\n />\n \n {\n dispatch(setArchiveCabinetFilter(e.target.checked));\n }}\n checked={archiveCabinet}\n className={clsx(classes.filterCheckbox, FullStory.names.classes.map.filterToggle)}\n color=\"default\"\n />\n }\n label={\n
\n \n Archive Cabinet\n
\n }\n />\n {\n dispatch(setDeactivatedFilter(e.target.checked));\n }}\n checked={deactivated}\n className={clsx(classes.filterCheckbox, FullStory.names.classes.map.filterToggle)}\n color=\"default\"\n />\n }\n label={\n
\n \n Deactivated\n
\n }\n />\n {\n dispatch(setLiveUnitFilter(e.target.checked));\n }}\n checked={liveUnit}\n className={clsx(classes.filterCheckbox, FullStory.names.classes.map.filterToggle)}\n color=\"default\"\n />\n }\n label={\n
\n \n Live Unit\n
\n }\n />\n
\n
\n );\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const drawerWidth = 375;\nexport const useStyles = makeStyles({\n drawer: {\n width: drawerWidth,\n },\n [`@media (max-width: ${2 * drawerWidth}px)`]: {\n drawer: {\n width: \"60vw\",\n },\n },\n drawerComponents: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"0 1.5em 0 1.5em\",\n rowGap: \"1.5em\",\n },\n});\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nimport { drawerWidth } from \"../RightUnitDrawer/RightUnitDrawerStyles\";\n\n\nexport const useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n overflowY: \"hidden\",\n width: \"100%\",\n position: \"relative\",\n },\n mapShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n marginRight: drawerWidth,\n },\n mapNoShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginRight: 0,\n },\n }),\n);\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema2 } from \"../common\";\nimport { vmsBaseApi } from \"../vmsBase\";\n\n\nexport const liveUnitDefaultCameraSchema = lvtResponseSchema2({ type: \"integer\" });\n\nconst liveUnitDefaultCameraValidator = new Ajv().compile(liveUnitDefaultCameraSchema);\n\nconst extendedApi = vmsBaseApi.injectEndpoints({\n endpoints: (builder) => ({\n getLiveUnitDefaultStreamCameraId: builder.query({\n query: (liveUnitId) => ({\n url: `/api/vms/live_units/${liveUnitId}/default_streaming_camera`,\n method: \"get\",\n }),\n extraOptions: {\n validator: liveUnitDefaultCameraValidator,\n },\n }),\n }),\n overrideExisting: false,\n});\n\nexport const {\n useGetLiveUnitDefaultStreamCameraIdQuery,\n useLazyGetLiveUnitDefaultStreamCameraIdQuery,\n endpoints: endpointsLiveUnitDefaultCamera,\n} = extendedApi;\n","import Ajv from \"ajv\";\n\nimport { lvtResponseSchema } from \"../common\";\n\n\nconst unitHealthPropertiesSchema = {\n color: { type: \"string\" },\n isFlapping: { type: \"boolean\" },\n isGradient: { type: \"boolean\" },\n overlay: { type: [\"string\", \"null\"] },\n startColor: { type: \"string\" },\n statusText: { type: \"string\" },\n};\n\nconst cameraInformationPropertiesSchema = {\n id: { type: \"number\" },\n name: { type: [\"string\", \"null\"] },\n thumbnailPreset: { type: [\"number\", \"null\"] },\n};\n\nconst liveUnitMetadataProperties = {\n accessArchives: { type: \"boolean\" },\n accessStream: { type: \"boolean\" },\n cameraList: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: true,\n required: Object.keys(cameraInformationPropertiesSchema),\n properties: cameraInformationPropertiesSchema,\n },\n },\n clientId: { type: \"number\" },\n clientName: { type: [\"string\", \"null\"] },\n liveUnitId: { type: \"number\" },\n liveUnitName: { type: \"string\" },\n liveUnitSerial: { type: [\"string\", \"null\"] },\n locationCity: { type: [\"string\", \"null\"] },\n locationId: { type: \"number\" },\n locationName: { type: \"string\" },\n locationState: { type: [\"string\", \"null\"] },\n locationStreet: { type: [\"string\", \"null\"] },\n locationZip: { type: [\"string\", \"null\"] },\n unitHealth: {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(unitHealthPropertiesSchema),\n properties: unitHealthPropertiesSchema,\n },\n};\n\nconst liveUnitMetadataSchema = {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(liveUnitMetadataProperties),\n properties: liveUnitMetadataProperties,\n};\n\nconst liveUnitInfoProperties = {\n showClientNameStreamPage: { type: \"boolean\" },\n showClientNameHistoryPage: { type: \"boolean\" },\n liveUnitSerialNum: { type: [\"string\", \"null\"] },\n clientId: { type: \"number\" },\n clientName: { type: [\"string\", \"null\"] },\n liveUnitId: { type: \"number\" },\n liveUnitName: { type: \"string\" },\n locationId: { type: \"number\" },\n locationName: { type: \"string\" },\n};\n\nconst liveUnitInfoSchema = {\n type: \"object\",\n additionalProperties: false,\n required: Object.keys(liveUnitInfoProperties),\n properties: liveUnitInfoProperties,\n};\n\nexport const liveUnitMetadataValidator = new Ajv().compile(liveUnitMetadataSchema);\n\nconst lvtResponseLiveUnitMetadataSchema = lvtResponseSchema(liveUnitMetadataSchema);\n\nexport const lvtResponseLiveUnitMetadataValidator = new Ajv().compile(lvtResponseLiveUnitMetadataSchema);\n\n\nexport const liveUnitInfoValidator = new Ajv().compile(liveUnitInfoSchema);\n\nconst lvtResponseLiveUnitInfoSchema = lvtResponseSchema(liveUnitInfoSchema);\n\nexport const lvtResponseLiveUnitInfoValidator = new Ajv().compile(lvtResponseLiveUnitInfoSchema);\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport applyCaseMiddleware from \"axios-case-converter\";\n\nimport { routes } from \"@/api/services/routes\";\nimport { lvtResponseLiveUnitInfoValidator, lvtResponseLiveUnitMetadataValidator } from \"@/api/validation/liveUnitMeta\";\nimport { logError } from \"@/utilities/api\";\nimport { LiveUnitMetaLanding, LiveUnitInfo } from \"@/utilities/types/liveunit\";\n\nimport { LiveUnitMetadataService } from \"../interfaces/LiveUnitMetadata\";\n\n\naxios.defaults.withCredentials = true;\n\nconst client = applyCaseMiddleware(axios.create());\n\nexport const liveUnitMetadataService: LiveUnitMetadataService = {\n async fetchLiveUnitMetadataLanding(liveUnitId: number): Promise {\n const route = routes.getLiveUnitMetaDataLanding(liveUnitId);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponseLiveUnitMetadataValidator(response.data)) {\n return response.data.data as LiveUnitMetaLanding;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseLiveUnitMetadataValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n async fetchLiveUnitInfo(liveUnitId: number): Promise {\n const route = routes.getLiveUnitInfo(liveUnitId);\n\n try {\n const response = await client.get(route);\n\n if (lvtResponseLiveUnitInfoValidator(response.data)) {\n return response.data.data as LiveUnitInfo;\n } else {\n const error: SerializedError = {\n name: \"validation\",\n message: JSON.stringify(lvtResponseLiveUnitInfoValidator.errors),\n };\n\n throw error;\n }\n } catch (error) {\n logError(route, error as Error);\n throw error;\n }\n },\n};\n","import { WebData } from \"@lvt/web-data\";\nimport { DateTime } from \"luxon\";\n\n\nexport interface ArchiveCabinetInfo {\n id: number;\n clientId: number;\n clientName: string | null;\n locationName: string | null;\n liveUnitName: string | null;\n city: string | null;\n state: string | null;\n accessArchives: boolean;\n showClientName: boolean;\n}\n\nexport const isArchiveCabinetInfo = (value: ArchiveCabinetInfo | Error): value is ArchiveCabinetInfo => {\n return value.hasOwnProperty(\"id\");\n};\n\nexport interface ArchiveImagesNavMeta {\n liveUnitId: number;\n clientId: number;\n name: string;\n recordingStart: string | null; //needs to be UTC?\n archiveImagesStart: string | null; //needs to be UTC?\n timezone: string;\n cameraIds: Array;\n}\n\nexport const NullArchiveImagesNavMeta: ArchiveImagesNavMeta = {\n liveUnitId: 0,\n clientId: 0,\n name: \"Null Metadata\",\n recordingStart: null,\n archiveImagesStart: null,\n timezone: DateTime.now().toUTC().zoneName,\n cameraIds: [],\n};\n\nexport const isArchiveImagesNavMeta = (value: ArchiveImagesNavMeta | Error): value is ArchiveImagesNavMeta => {\n return value.hasOwnProperty(\"liveUnitId\");\n};\n\nexport const isCameraOrCabinetMetadata = (\n value: CameraOrCabinetMetadata[] | Error,\n): value is CameraOrCabinetMetadata[] => {\n return Array.isArray(value) && value.every((data) => data.hasOwnProperty(\"record\"));\n};\n\n// camera_metadata()\n// returns Array\nexport interface CameraOrCabinetMetadata {\n record: Camera | Cabinet;\n archivedVideos: Array;\n presets: Array;\n}\n\nexport interface CameraOrCabinetMetadataResponse {\n record: {\n camera?: Camera;\n cabinet?: Cabinet;\n };\n archivedVideos: Array;\n presets: Array;\n}\n\nexport interface ArchivedVideo {\n id: number;\n cameraId: number | null;\n archiveCabinetId: number | null;\n title: string | null;\n url: string | null;\n bytes: number | null;\n timestampRecorded: string | null;\n timestampRequested: string | null;\n requestedDurationMinutes: number | null;\n}\n\nexport interface Camera {\n id: number;\n name: string;\n notRecordingReason: string | null;\n canRequestVideo: boolean;\n clientId: number | null;\n}\n\nexport const isCamera = (value: Camera | Cabinet): value is Camera => {\n return value.hasOwnProperty(\"canRequestVideo\");\n};\n\nexport interface Cabinet {\n id: number;\n name: string;\n notRecordingReason: string | null;\n clientId: number | null;\n}\n\nexport interface Preset {\n id: number;\n cameraId: number | null;\n archiveCabinetId: number | null;\n name: string | null;\n default: boolean;\n}\n\n// export enum NotRecordingReason {\n// ArchiveCabinet = \"Archive Cabinet\",\n// CameraNeverActivated = \"Camera Never Activated\",\n// StopRecording = \"Stop Recording\",\n// RecordVideoTypeNotRecording = \"Record Video Type: Not Recording\",\n// RecordVideoTypeInternalSD = \"Record Video Type: InternalSD\",\n// }\n\n// get_images()\nexport interface ArchiveImage {\n datetimeRecorded: string; //needs to be UTC?\n imageUrl: string;\n thumbUrl: string | null;\n presetId: number;\n}\n\n// Record>\nexport type BucketImages = Record;\n// Record\nexport type PresetsToImages = Record>;\n// Record\nexport type PresetImages = Record>;\n\n// submit_feedback()\n// returns a string\n\n// get_archive_cabinets()\n// export interface ArchiveCabinet {\n// id: number,\n// clientId: number,\n// groupId: number,\n// groupName: string,\n// unitName: string,\n// cameraName: string,\n// gpsLat: number | null,\n// gpsLng: number | null,\n// }\n\n// request_video()\n// returns an i64\n\nexport interface ThumbnailResponse {\n requestedTime: string; //needs to be UTC?\n thumbnail: ArchiveImage | null;\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n title: {\n fontWeight: \"bold\",\n fontSize: 24,\n color: theme.palette.grey[900],\n },\n health: {\n display: \"flex\",\n alignSelf: \"center\",\n margin: \"6px 8px 0px 0px\",\n },\n titleRow: {\n display: \"flex\",\n alignItems: \"start\",\n },\n row: {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: 16,\n },\n icon: {\n marginRight: 8,\n color: theme.palette.grey[700],\n },\n tooltip: {\n fontSize: \"1.5em\",\n },\n liveUnitIcon: {\n width: \"24px\",\n height: \"24px\",\n marginRight: \"8px\",\n objectFit: \"cover\",\n opacity: 0.6,\n },\n infoText: {\n color: theme.palette.grey[700],\n },\n}));\n","import { Typography } from \"@material-ui/core\";\nimport { Business } from \"@mui/icons-material\";\n\nimport { useGetVmsSearchRightsQuery } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { ArchiveCabinetInfo } from \"@/utilities/types/archive\";\nimport { SearchIndex } from \"@/utilities/types/search\";\n\nimport { useStyles } from \"./UnitInfoBoxStyles\";\n\n\nexport const ArchiveCabinetInfoBox: React.FC = ({\n clientName,\n liveUnitName,\n locationName,\n}) => {\n const classes = useStyles();\n const { data: searchRightsData } = useGetVmsSearchRightsQuery({\n indices: [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets, SearchIndex.Clients],\n });\n\n return (\n <>\n {locationName}\n {liveUnitName &&\n
\n {liveUnitName}\n
\n }\n {searchRightsData && searchRightsData.data.is_multi_client && clientName &&\n
\n \n {clientName}\n
\n }\n \n );\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nimport { drawerWidth } from \"./RightUnitDrawerStyles\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n cameras: {\n marginTop: \"0.75em\",\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n columnGap: \"0.7em\",\n rowGap: \"0.7em\",\n },\n [`@media (max-width: ${drawerWidth})`]: {\n cameras: {\n gridTemplateColumns: \"1fr\",\n },\n },\n head: {\n fontWeight: \"bold\",\n fontSize: 20,\n color: theme.palette.grey[900],\n },\n}));\n","import { makeStyles, Theme } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n cameraDiv: {\n backgroundColor: theme.palette.primary.light,\n bottom: 0,\n display: \"flex\",\n opacity: 0.8,\n padding: \"0.2em\",\n position: \"absolute\",\n width: \"100%\",\n },\n cameraName: {\n paddingLeft: \"0.5em\",\n display: \"flex\",\n fontWeight: \"bold\",\n color: theme.palette.primary.contrastText,\n fontSize: \"small\",\n },\n media: {\n maxHeight: 90,\n },\n root: {\n position: \"relative\",\n borderRadius: 0,\n },\n}));\n","import { Card, CardMedia } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport { useState, useEffect } from \"react\";\nimport { Link as LinkRouter } from \"react-router-dom\";\n\nimport { presetImagesService } from \"@/api/services/implementations/presetImages\";\nimport ImageNotAvailable from \"@/assets/img/ImageNotAvailable.svg\";\nimport { useStyles } from \"@/common/components/MapLandingPage/RightUnitDrawer/CameraPreviewStyles\";\n\n\ninterface CameraPreviewProps {\n cameraId: number;\n cameraName: string | null;\n className: string;\n presetId: number | null;\n}\n\nconst CameraPreview: React.FC = ({ cameraId, cameraName, className, presetId }) => {\n const classes = useStyles();\n\n const [presignedUrl, setPresignedUrl] = useState(\"\");\n\n if (presetId) {\n useEffect(() => {\n presetImagesService\n .fetchPresetImagePresignedUrl(presetId!)\n .then((response) => {\n setPresignedUrl(response.toString());\n })\n .catch((err) => console.log(\"PRESIGNED URL ERROR: \", err));\n }, [cameraId]);\n } else {\n console.log(\"PRESET ID\", presetId);\n }\n\n return (\n \n \n {\n //Because even if presets are available they dont give the img\n e.target.src = ImageNotAvailable;\n }}\n />\n
\n \n {cameraName}\n \n
\n
\n
\n );\n};\n\nexport default CameraPreview;\n","import { Typography } from \"@material-ui/core\";\nimport Alert from \"@material-ui/lab/Alert\";\nimport { uuid4 as uuid } from \"@sentry/utils\";\nimport clsx from \"clsx\";\n\nimport { useStyles } from \"@/common/components/MapLandingPage/RightUnitDrawer/CameraNavigationStyles\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { CameraInformation } from \"@/utilities/types/liveunit\";\n\nimport CameraPreview from \"./CameraPreview\";\n\n\nexport interface CameraNavigationProps {\n cameraList: CameraInformation[] | null;\n defaultCameraId: number | null;\n}\n\nconst CameraNavigation: React.FC = ({ cameraList, defaultCameraId }) => {\n const classes = useStyles();\n\n return (\n <>\n {cameraList ? (\n
\n \n Cameras\n \n
\n {cameraList.length > 0 ? (\n <>\n {cameraList.map((camera) => (\n \n ))}\n \n ) : (\n No cameras to preview for this live unit.\n )}\n
\n
\n ) : (\n Unable to fetch cameras for this live unit\n )}\n \n );\n};\n\nexport default CameraNavigation;\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles((theme) =>\n createStyles({\n buttonGroup: {\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"0.5em\",\n // justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n },\n button: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n borderColor: theme.palette.common.black,\n fontWeight: \"bold\",\n \"&:hover\": {\n backgroundColor: theme.palette.secondary.main,\n boxShadow: \"none\",\n borderColor: theme.palette.secondary.main,\n color: theme.palette.common.white,\n },\n },\n }),\n);\n","import { Button } from \"@material-ui/core\";\nimport { HistoryOutlined, VideocamOutlined } from \"@material-ui/icons\";\nimport Alert from \"@material-ui/lab/Alert\";\nimport clsx from \"clsx\";\nimport { Link as LinkRouter } from \"react-router-dom\";\n\nimport { useStyles } from \"@/common/components/MapLandingPage/RightUnitDrawer/DrawerNavigationButtonsStyles\";\nimport { useSelector } from \"@/store\";\nimport { mapSelectors } from \"@/store/map/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\ninterface DrawerNavigationButtonProps {\n accessHistory: boolean;\n accessStream: boolean | null;\n hasCameras: boolean | null;\n defaultCameraId: number | null;\n}\n\nconst DrawerNavigationButtons: React.FC = ({\n defaultCameraId,\n hasCameras,\n accessStream,\n accessHistory,\n}) => {\n const selectedUnitId = useSelector(mapSelectors.getSelectedUnitId);\n const isArchiveCabinet = useSelector(mapSelectors.getIsArchiveCabinet);\n const isDeactivated = useSelector(mapSelectors.getIsDeactivated);\n\n const classes = useStyles();\n\n const streamUrl = `/camera/${defaultCameraId}/stream`;\n\n const archiveUrl =\n isArchiveCabinet\n ? `/archive-cabinet/${selectedUnitId}/history`\n : `/live-unit/${selectedUnitId}/history`;\n\n let warning: string | null = null;\n\n if (hasCameras === false) {\n warning = \"This live unit does not have any cameras.\";\n } else if (accessStream === false && !accessHistory) {\n warning = \"You don't have access to the Streaming or the History page.\";\n } else if (accessStream === false) {\n warning = \"You don't have access to the Streaming page.\";\n } else if (!accessHistory) {\n warning = \"You don't have access to the History page.\";\n }\n\n return (\n
\n {!isArchiveCabinet && !isDeactivated && defaultCameraId && (\n \n }\n fullWidth={true}\n >\n Stream\n \n \n )}\n\n \n }\n fullWidth={true}\n >\n History\n \n \n {/* \n }\n fullWidth={true}\n >\n Events\n \n */}\n {warning && {warning}}\n
\n );\n};\n\nexport default DrawerNavigationButtons;\n","import { theme } from \"@lvt/material\";\nimport { createStyles, makeStyles } from \"@material-ui/core\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport PauseIcon from \"@material-ui/icons/Pause\";\nimport VideocamIcon from \"@material-ui/icons/Videocam\";\n\nimport { CameraHealth } from \"@/api/streamMetadata\";\nimport { UnitHealth } from \"@/utilities/types/liveunit\";\n\n\ninterface HealthDotProps {\n health?: CameraHealth | UnitHealth; //Health is only optional so that a Skeleton component can infer the size of this dot before the data loads.\n classes?: string;\n size?: number | string;\n}\n\nconst useStyles = makeStyles(() => {\n return createStyles({\n tooltip: {\n fontSize: \"14px\",\n },\n });\n});\n\nconst HealthDot: React.FC = ({\n health = { isFlapping: false, isGradient: false, statusText: \"\", startColor: \"#fff\", color: \"#fff\", overlay: null },\n classes,\n size = \"1.5em\",\n}) => {\n const muiClasses = useStyles();\n let icon;\n\n if (health.overlay === \"/img/pause.svg\") {\n icon = ;\n } else {\n let color = health.color;\n\n if (color === \"#f9ff07\") color = \"#F4CD27\";\n\n if (color === \"#82C341\") color = theme.palette.secondary.main;\n\n icon = ;\n }\n\n return (\n
\n \n {icon}\n \n
\n );\n};\n\nexport default HealthDot;\n","import { SvgIcon, Typography } from \"@material-ui/core\";\nimport { LocationOnOutlined, Business } from \"@mui/icons-material\";\n\nimport { useGetVmsSearchRightsQuery } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { LiveUnitIcon } from \"@/common/components/SVG/Svg\";\nimport HealthDot from \"@/common/components/streaming/HealthDot/HealthDot\";\nimport { LiveUnitMetaLanding } from \"@/utilities/types/liveunit\";\nimport { SearchIndex } from \"@/utilities/types/search\";\n\nimport { useStyles } from \"./UnitInfoBoxStyles\";\n\n\nexport const LiveUnitInfoBox: React.FC = ({\n liveUnitName,\n liveUnitSerial,\n clientName,\n locationName,\n locationCity,\n locationState,\n locationStreet,\n locationZip,\n unitHealth,\n}) => {\n const classes = useStyles();\n const { data: searchRightsData } = useGetVmsSearchRightsQuery({\n indices: [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets, SearchIndex.Clients],\n });\n\n return (\n <>\n
\n {unitHealth &&\n
\n \n
\n }\n \n {locationName}\n \n
\n {(locationStreet || locationCity || locationState) &&\n
\n \n
\n {locationStreet}\n \n {locationCity && `${locationCity}, `}{locationState && `${locationState} `}{locationZip}\n \n
\n
\n }\n {liveUnitName &&\n
\n \n \n \n \n {liveUnitName}{liveUnitSerial && !liveUnitName.includes(liveUnitSerial) && `, ${liveUnitSerial}`}\n \n
\n }\n {searchRightsData && searchRightsData.data.is_multi_client && clientName &&\n
\n \n {clientName}\n
\n }\n \n );\n};\n","import { Drawer, IconButton } from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { useEffect, useState } from \"react\";\n\nimport { useLazyGetLiveUnitDefaultStreamCameraIdQuery } from \"@/api/liveUnits/defaultCamera\";\nimport { archiveCabinetInfoService } from \"@/api/services/implementations\";\nimport { liveUnitMetadataService } from \"@/api/services/implementations/liveUnitMetadata\";\nimport { useStyles } from \"@/common/components/MapLandingPage/RightUnitDrawer/RightUnitDrawerStyles\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { mapSelectors, setSelectedUnit } from \"@/store/map/slice\";\nimport { ArchiveCabinetInfo, isArchiveCabinetInfo } from \"@/utilities/types/archive\";\nimport { CameraInformation, LiveUnitMetaLanding } from \"@/utilities/types/liveunit\";\n\nimport { ArchiveCabinetInfoBox } from \"./ArchiveCabinetInfoBox\";\nimport CameraNavigation from \"./CameraNavigation\";\nimport DrawerNavigationButtons from \"./DrawerNavigationButtons\";\nimport { LiveUnitInfoBox } from \"./LiveUnitInfoBox\";\n\n\ninterface RightUnitDrawerProps {\n handleClose: () => void;\n isDrawerOpen: boolean;\n}\n\nconst RightUnitDrawer: React.FC = ({ isDrawerOpen, handleClose }) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [getStreamCameraForLiveUnit, { data: defaultStreamCameraId }] = useLazyGetLiveUnitDefaultStreamCameraIdQuery();\n const selectedUnitId = useSelector(mapSelectors.getSelectedUnitId);\n const isArchiveCabinet = useSelector(mapSelectors.getIsArchiveCabinet);\n const isDeactivated = useSelector(mapSelectors.getIsDeactivated);\n const [liveUnitInfo, setLiveUnitInfo] = useState(null);\n const [cameraList, setCameraList] = useState(null);\n const [archiveCabinetInfo, setArchiveCabinetInfo] = useState(null);\n\n const hasCameras = cameraList && cameraList.length > 0 ? true : false;\n const defaultCameraId = defaultStreamCameraId ?? null;\n\n useEffect(() => {\n if (selectedUnitId && !isArchiveCabinet && !isDeactivated) {\n getStreamCameraForLiveUnit(selectedUnitId);\n }\n }, [selectedUnitId]);\n\n useEffect(() => {\n setLiveUnitInfo(null);\n setArchiveCabinetInfo(null);\n setCameraList(null);\n\n if (selectedUnitId) {\n if (isArchiveCabinet) {\n archiveCabinetInfoService\n .fetchArchiveCabinetInfo(selectedUnitId)\n .then((response) => {\n if (isArchiveCabinetInfo(response)) {\n setArchiveCabinetInfo(response);\n }\n })\n .catch(() => {\n setSelectedUnit(null);\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to get Archive Cabinet information.\",\n }),\n );\n });\n } else {\n liveUnitMetadataService\n .fetchLiveUnitMetadataLanding(selectedUnitId)\n .then((res) => {\n setLiveUnitInfo(res);\n setCameraList(res.cameraList);\n })\n .catch(() => {\n setSelectedUnit(null);\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to get Live Unit information.\",\n }),\n );\n });\n }\n }\n }, [selectedUnitId, isArchiveCabinet]);\n\n return (\n
\n \n
\n
\n \n \n \n
\n
\n {liveUnitInfo &&\n (isDeactivated ? (\n <>\n \n \n \n ) : (\n <>\n \n \n \n \n ))}\n {archiveCabinetInfo && (\n <>\n \n \n \n )}\n
\n
\n
\n
\n );\n};\n\nexport default RightUnitDrawer;\n","export interface LiveUnitMetaLanding {\n accessArchives: boolean;\n accessStream: boolean;\n cameraList: CameraInformation[];\n clientId: number;\n clientName: string | null;\n liveUnitId: number;\n liveUnitName: string;\n liveUnitSerial: string | null;\n locationCity: string | null;\n locationId: number;\n locationName: string;\n locationState: string | null;\n locationStreet: string | null;\n locationZip: string | null;\n unitHealth: UnitHealth | null;\n}\n\nexport interface LiveUnitInfo {\n clientId: number;\n clientName: string | null;\n liveUnitId: number;\n liveUnitName: string;\n locationId: number;\n locationName: string;\n showClientNameStreamPage: boolean;\n showClientNameHistoryPage: boolean;\n liveUnitSerialNum: string | null;\n}\n\nexport interface CameraInformation {\n id: number;\n name: string | null;\n thumbnailPreset: number | null;\n}\n\nexport interface UnitHealth {\n color: string;\n isFlapping: boolean;\n isGradient: boolean;\n overlay: string | null;\n startColor: string;\n statusText: string;\n}\n\nexport enum UnitType {\n ArchiveCabinet = \"Archive Cabinet\",\n Deactivated = \"Deactivated\",\n LiveUnit = \"Live Unit\",\n}\n","import { DateTime } from \"luxon\";\n\nimport { ArchiveCabinet, LiveUnit } from \"@/api/map/types\";\n\n/* NOTE: Known mounting structures values from Horus::mounting_structures_mftrs\n * as of 08/2021 */\n// 1, None\n// 3, 25 Ft Wood Pole\n// 4, 30 Ft Wood Pole\n// 6, 35 Ft Cement Pole\n// 5, 35 Ft Wood Pole\n// 17, 40 ft Cast Iron\n// 8, Building\n// 14, Car\n// 15, GoPro\n// 16, Luminaire (DOT break-away)\n// 2, Metal Pole\n// 12, Mini 12V ???\n// 13, Mini AC ???\n// 7, Radio Tower\n// 11, SatTrailer\n// 10, Trailer V1\n// 19, Trailer V1+\n// 18, Trailer V2\n// 9, Truck\n\nexport const isUnitActive = (activated?: string, deactivated?: string): boolean => {\n if (activated) {\n const activatedTime = DateTime.fromISO(activated).toSeconds();\n const now = DateTime.now().toSeconds();\n\n if (deactivated) {\n const deactivatedTime = DateTime.fromISO(deactivated).toSeconds();\n\n return activatedTime <= now && (activatedTime > deactivatedTime || deactivatedTime > now);\n }\n\n return activatedTime <= now;\n }\n\n return false;\n};\n\nexport const isLiveUnit = (unit: LiveUnit | ArchiveCabinet): unit is LiveUnit => {\n return unit.hasOwnProperty(\"serial\");\n};\n","import globals from \"@lvt/globals\";\nimport { PointFeature } from \"supercluster\";\n\nimport { MapFeatureData } from \"@/common/components/MapLandingPage/Map/types\";\nimport { isUnitActive } from \"@/utilities/liveUnitHelper\";\nimport { UnitType } from \"@/utilities/types/liveunit\";\nimport { LatLong, OptionalLatLng } from \"@/utilities/types/map\";\nimport { ArchiveCabinetSearchData, ResultTypes, SearchSourceType } from \"@/utilities/types/search\";\n\n\nexport const isValidLongitude = (longitude: number) => -180 <= longitude && longitude <= 180;\n\nexport const isValidLatitude = (latitude: number) => -90 <= latitude && latitude <= 90;\n\nexport const hasValidLatLong = (data: OptionalLatLng): data is LatLong => {\n return (\n typeof data.latitude === \"number\" &&\n typeof data.longitude === \"number\" &&\n isValidLatitude(data.latitude) &&\n isValidLongitude(data.longitude)\n );\n};\n\nexport function searchToMapFeatureData(searches: Array): MapFeatureData[] {\n const mapData: MapFeatureData[] = [];\n const groupedArchiveCabinets: Record> = {};\n let invalidLiveUnits = 0;\n let invalidCabinets = 0;\n let groupedCabinets = 0;\n\n searches.forEach((unit: ResultTypes) => {\n if (unit.type === SearchSourceType.ArchiveCabinet) {\n if (hasValidLatLong(unit)) {\n const { latitude, longitude, name } = unit;\n\n const identifier = `${longitude.toString()}|${latitude.toString()}|${name}`;\n\n if (groupedArchiveCabinets[identifier] != null) {\n groupedArchiveCabinets[identifier].push(unit);\n } else {\n groupedArchiveCabinets[identifier] = [unit];\n }\n } else {\n invalidCabinets += 1;\n }\n }\n\n if (unit.type === SearchSourceType.LiveUnit) {\n if (hasValidLatLong(unit)) {\n const { id, name, serial, location_name, latitude, longitude, date_activated, date_deactivated } = unit;\n const type = isUnitActive(date_activated, date_deactivated) ? UnitType.LiveUnit : UnitType.Deactivated;\n\n const unitDisplayName = name.includes(serial) ? name : `${name}, ${serial}`;\n\n const mapDatum: MapFeatureData = {\n geometry: {\n type: \"Point\",\n coordinates: [longitude, latitude],\n },\n properties: {\n cluster: false,\n id: id,\n tooltip: `${location_name}, ${unitDisplayName}`,\n unitType: type,\n },\n type: \"Feature\",\n };\n\n mapData.push(mapDatum);\n } else {\n invalidLiveUnits += 1;\n }\n }\n });\n\n const archiveCabinetsMapData = Object.values>(groupedArchiveCabinets).map(\n (cabinets: Array): MapFeatureData => {\n // In the future we will want a way to access the different archive\n // cabinets at a particular location. For now, just showing a single\n // archive cabinet.\n const archiveCabinet = cabinets[0];\n\n groupedCabinets += cabinets.length - 1;\n\n return {\n geometry: {\n type: \"Point\",\n coordinates: [archiveCabinet.longitude as number, archiveCabinet.latitude as number],\n },\n properties: {\n cluster: false,\n id: archiveCabinet.id,\n tooltip: `${archiveCabinet.location_name}, ${archiveCabinet.name}`,\n unitType: UnitType.ArchiveCabinet,\n },\n type: \"Feature\",\n };\n },\n );\n\n if (globals.sentry.environment === \"local\") {\n console.log(\n `${groupedCabinets} cabinets not shown due to grouping`,\n \"\\n\",\n `${invalidCabinets} cabinets not shown due to invalid coordinates`,\n \"\\n\",\n `${invalidLiveUnits} live units not shown due to invalid coordinates`,\n );\n }\n\n return [...archiveCabinetsMapData, ...mapData];\n}\n\nexport function boundsForPoints

(\n mapsApi: typeof google.maps,\n points: Array>,\n): google.maps.LatLngBounds {\n const bounds = new mapsApi.LatLngBounds();\n\n points.forEach((p) => {\n const [lng, lat] = p.geometry.coordinates;\n\n bounds.extend({ lat, lng });\n });\n\n const diffLng = bounds.getNorthEast().lng() - bounds.getSouthWest().lng();\n\n // Reset bounds that span the whole map to -180/180.\n if (-2 < diffLng && diffLng < 0) {\n const lat = bounds.getSouthWest().lat();\n\n bounds.union({ west: -180, east: 180, north: lat, south: lat });\n }\n\n return bounds;\n}\n\nexport function mapFitBounds(\n map: google.maps.Map,\n bounds: google.maps.LatLngBounds,\n paddingPercentage: number,\n minimumZoom?: number,\n maximumZoom?: number,\n) {\n const { width: mapWidth, height: mapHeight } = map.getDiv().getBoundingClientRect();\n const paddingWidth = mapWidth * paddingPercentage;\n const paddingHeight = mapHeight * paddingPercentage;\n const padding = {\n top: paddingHeight,\n right: paddingWidth,\n bottom: paddingHeight,\n left: paddingWidth,\n };\n\n map.setOptions({ minZoom: minimumZoom });\n map.setOptions({ maxZoom: maximumZoom });\n map.fitBounds(bounds, padding);\n map.setOptions({ minZoom: undefined });\n map.setOptions({ maxZoom: undefined });\n}\n\n// Zoom level for individual LiveUnit view\nexport const LIVE_UNIT_LEVEL_ZOOM = 17;\n\n// This default map config will center on the United States.\nexport const DEFAULT_MAP_CONFIG = {\n center: { lat: 37.0902, lng: -95.7129 },\n zoom: 2,\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n marker: {\n cursor: \"pointer\",\n width: \"1.8rem\",\n height: \"1.8rem\",\n transform: \"translate(-50%, -100%)\",\n \"& img\": {\n width: \"1.8rem\",\n height: \"1.8rem\",\n },\n },\n tooltip: {\n opacity: 0.9,\n \"& .MuiTooltip-tooltip\": {\n fontSize: 10,\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n },\n },\n}));\n","import { Tooltip } from \"@material-ui/core\";\nimport { memo } from \"react\";\n\nimport MarkerArchiveCabinet from \"@/assets/img/map/MarkerArchiveCabinet.svg\";\nimport { useStyles } from \"@/common/components/MapLandingPage/Map/ArchiveCabinetMarker/ArchiveCabinetMarkerStyles\";\n\nimport { MarkerProps } from \"../types\";\n\n\nconst ArchiveCabinetMarker: React.FC = ({ lat, lng, text, unitId, onClick }) => {\n const classes = useStyles();\n\n return (\n \n

onClick({ unitId, lat, lng, text, isCabinet: true })}>\n \"Archive\n
\n \n );\n};\n\nexport default memo(ArchiveCabinetMarker);\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n marker: {\n height: \"2.5rem\",\n width: \"2.5rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"#FFF\",\n border: `6px solid ${theme.palette.secondary.main}`,\n borderRadius: \"100%\",\n color: \"#000\",\n fontWeight: \"bolder\",\n cursor: \"pointer\",\n transform: \"translate(-50%, -50%)\",\n },\n tooltip: {\n opacity: 0.9,\n \"& .MuiTooltip-tooltip\": {\n fontSize: 10,\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n },\n },\n}));\n","import { Tooltip } from \"@material-ui/core\";\nimport { memo } from \"react\";\n\nimport { useStyles } from \"@/common/components/MapLandingPage/Map/ClusterMarker/ClusterMarkerStyles\";\n\n\ninterface Props {\n handleClick: (clusterId: number) => void;\n id: number;\n lat: number;\n lng: number;\n text: string;\n}\n\nconst ClusterMarker: React.FC = ({ id, text, handleClick }) => {\n const classes = useStyles();\n\n return (\n \n
handleClick(id)}>\n {text}\n
\n
\n );\n};\n\nexport default memo(ClusterMarker);\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n marker: {\n cursor: \"pointer\",\n width: \"1.8rem\",\n height: \"1.8rem\",\n transform: \"translate(-50%, -100%)\",\n \"& img\": {\n width: \"1.8rem\",\n height: \"1.8rem\",\n },\n },\n tooltip: {\n opacity: 0.9,\n \"& .MuiTooltip-tooltip\": {\n fontSize: 10,\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n },\n },\n}));\n","import { Tooltip } from \"@material-ui/core\";\nimport { memo } from \"react\";\n\nimport MarkerDeactivated from \"@/assets/img/map/MarkerDeactivated.svg\";\nimport { useStyles } from \"@/common/components/MapLandingPage/Map/DeactivatedUnitMarker/DeactivatedUnitMarkerStyles\";\n\nimport { MarkerProps } from \"../types\";\n\n\nconst DeactivatedUnitMarker: React.FC = ({ lat, lng, text, unitId, onClick }) => {\n const classes = useStyles();\n\n return (\n \n
onClick({ unitId, lat, lng, text, isDeactivated: true })}>\n \"Deactivated\n
\n
\n );\n};\n\nexport default memo(DeactivatedUnitMarker);\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n marker: {\n cursor: \"pointer\",\n width: \"1.8rem\",\n height: \"1.8rem\",\n transform: \"translate(-50%, -100%)\",\n \"& img\": {\n width: \"1.8rem\",\n height: \"1.8rem\",\n },\n },\n tooltip: {\n opacity: 0.9,\n \"& .MuiTooltip-tooltip\": {\n fontSize: 10,\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n },\n },\n}));\n","import { Tooltip } from \"@material-ui/core\";\nimport { memo } from \"react\";\n\nimport MarkerLiveUnit from \"@/assets/img/map/MarkerLiveUnit.svg\";\nimport { useStyles } from \"@/common/components/MapLandingPage/Map/LiveUnitMarker/LiveUnitMarkerStyles\";\n\nimport { MarkerProps } from \"../types\";\n\n\nconst LiveUnitMarker: React.FC = ({ lat, lng, text, unitId, onClick }) => {\n const classes = useStyles();\n\n return (\n \n
onClick({ unitId, lat, lng, text })}>\n \"Live\n
\n
\n );\n};\n\nexport default memo(LiveUnitMarker);\n","import { makeStyles } from \"@material-ui/core/styles\";\nimport zIndex from \"@material-ui/core/styles/zIndex\";\n\n\nexport const mapStyles = makeStyles(theme => ({\n mapCenterButton: {\n color: \"#626262\",\n position: \"absolute\",\n bottom: 120,\n right: 10,\n zIndex: zIndex.appBar,\n backgroundColor: \"#FDFDFD\",\n display: \"block\",\n cursor: \"pointer\",\n width: \"2.5rem\",\n minWidth: \"2.5rem\",\n height: \"2.5rem\",\n font: \"400 0.8333rem Arial\",\n boxShadow: \"rgba(0, 0, 0, 0.3) 0px 1px 4px -1px\",\n borderRadius: 2,\n \"&:hover\": {\n backgroundColor: \"#FDFDFD\",\n color: \"#000\",\n },\n },\n //This is to shift the map center button along with other buttons when the drawer is opened.\n mapWrapper: {\n height: \"100vh\",\n width: \"100%\",\n position: \"relative\",\n backgroundColor: \"#EDEDED\",\n },\n loaderContainer: {\n display: \"flex\",\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n borderRadius: \"2.5rem\",\n padding: \"1rem 2.25rem\",\n backgroundColor: theme.palette.common.white,\n },\n loader: {\n width: \"2.25rem\",\n height: \"2.25rem\",\n marginRight: \"1rem\",\n },\n}));\n\nexport const MapSearchBarStyles = makeStyles({\n root: {\n position: \"absolute\",\n right: 10,\n top: 10,\n backgroundColor: \"transparent\",\n zIndex: zIndex.appBar,\n },\n});\n","export const localStorageGetArray = (key: string): Array => {\n const storedString = localStorage.getItem(key);\n\n return storedString ? JSON.parse(storedString) : [];\n};\n\nexport const localStorageGetMap = (key: string): Map => {\n return new Map(localStorageGetArray(key));\n};\n\nexport const localStorageGetSet = (key: string): Set => {\n return new Set(localStorageGetArray(key));\n};\nexport interface LocalStorageStoreIterable {\n maxEntries?: number;\n}\n\nexport const localStorageStoreIterable = (\n key: string,\n data: Iterable,\n config: LocalStorageStoreIterable | undefined,\n): void => {\n const entries = Array.from(data);\n const constrainedEntries = config?.maxEntries\n ? entries.slice(Math.max(0, entries.length - config.maxEntries))\n : entries;\n\n return localStorage.setItem(key, JSON.stringify(constrainedEntries));\n};\n","export enum PageType {\n Map,\n Stream,\n History,\n}\n","import { Search, compareSearch, defaultSearch } from \"@/utilities/types/search\";\n\nimport { localStorageGetArray, localStorageStoreIterable } from \".\";\n\n\ntype RecentSearches = Array;\n\nconst KEY_RECENT_SEARCHES = \"search\";\nconst MAX_ENTRIES = 10;\n\nexport const getRecentSearches = (): RecentSearches => {\n const searches: RecentSearches = localStorageGetArray(KEY_RECENT_SEARCHES);\n\n return searches.filter((search)=>search.searchType === 0);\n};\n\nexport const storeRecentSearch = (newSearch: Search): void => {\n const recentSearches = getRecentSearches();\n\n if (!compareSearch(newSearch, defaultSearch)) {\n const newSearches = recentSearches.filter((search)=>{\n return !compareSearch(search, newSearch);\n });\n\n newSearches.push(newSearch);\n\n localStorageStoreIterable(KEY_RECENT_SEARCHES, newSearches, { maxEntries: MAX_ENTRIES });\n }\n};\n\nexport const deleteRecentSearch = (newSearch: Search): Array => {\n const recentSearches = getRecentSearches();\n\n const newSearches = recentSearches.filter((search)=>{\n return !compareSearch(search, newSearch);\n });\n\n localStorageStoreIterable(KEY_RECENT_SEARCHES, newSearches, { maxEntries: MAX_ENTRIES });\n\n return newSearches;\n};\n","//Elastic Search will send up text highlighted with to display in the search.\n//However this requires dangerously rendering the html, which is a vulnerability\n//This function is meant to replicate the functionality in a safe way\n//It expects a string with any number of pairs\nexport const handleHighlight = (string: string) => {\n //Turns the string into an array with highlighted sections seperated from the non highlighted sections\n const split = string.split(/|<\\/em>/);\n\n //The format of the resulting array allows us to just alternate nonhighlighted -> highlighted -> nonhighlighted for any number of pairs\n return (\n \n {split.map((string, index)=>{\n if (index % 2 === 0) {\n return <>{string};\n } else {\n return {string};\n }\n })}\n \n );\n};\n","import { List, ListItem, Chip, ListItemIcon, ListItemText, ListItemSecondaryAction, IconButton, Typography } from \"@material-ui/core\";\nimport AccessTimeIcon from \"@material-ui/icons/AccessTime\";\nimport Close from \"@material-ui/icons/Close\";\nimport { useState } from \"react\";\n\nimport { useDispatch } from \"@/store\";\nimport { setSearch } from \"@/store/elasticSearch/slice\";\nimport { handleHighlight } from \"@/utilities/jsx\";\nimport { deleteRecentSearch, getRecentSearches } from \"@/utilities/localStorage/recentSearches\";\nimport { Search } from \"@/utilities/types/search\";\n\n\nconst RecentSearchList: React.FC = () => {\n const [recentSearches, setRecentSearches] = useState(() => {\n return getRecentSearches().reverse();\n });\n\n const dispatch = useDispatch();\n\n const handleDeleteRecentSearch = (search: Search) => {\n const newSearches = deleteRecentSearch(search);\n\n setRecentSearches(newSearches);\n };\n\n const useRecentSearch = (newSearch: Search) => {\n dispatch(setSearch(newSearch));\n };\n\n const renderResultSet = (): JSX.Element[] => {\n const searches = recentSearches.slice(0, 3);\n\n return searches.map((search, index) => (\n {useRecentSearch(search);}}\n\n button\n >\n \n \n \n {search.selectedClient && (\n \n )}\n {search.selectedRegion && (\n \n )}\n {handleHighlight(search.searchQuery)}}\n />\n \n {handleDeleteRecentSearch(search);}}>\n \n \n ));\n };\n\n return (\n {renderResultSet()}\n );\n};\n\nexport default RecentSearchList;\n","import { KeyboardEvent } from \"react\";\n\n\nexport const onKeyDownHandlerCreator = (handleMapUpdate: ()=>void) => {\n return (e: KeyboardEvent) => {\n if (e.key === \"13\") handleMapUpdate();\n };\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport const searchInputStyles = makeStyles((theme) => ({\n root: {\n padding: \"3px 0px\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n },\n input: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n iconButton: {\n padding: 10,\n },\n divider: {\n height: 28,\n margin: 4,\n },\n chip: {\n marginRight: theme.spacing(1),\n },\n}));\n","import { Box, IconButton, InputBase } from \"@material-ui/core\";\nimport Chip from \"@material-ui/core/Chip\";\nimport { Search as SearchIcon } from \"@material-ui/icons\";\nimport clsx from \"clsx\";\nimport { ChangeEvent, Dispatch, RefObject } from \"react\";\n\nimport { Search, SearchType } from \"@/utilities/types/search\";\n\nimport { onKeyDownHandlerCreator } from \"./SearchInput.Util\";\nimport { searchInputStyles } from \"./SearchInputStyles\";\n\n\ninterface Props {\n search: Search;\n onSearchChange: (search: Search, updateMap?: boolean) => void;\n inputClasses?: string;\n setSearchOpen: (b: boolean) => void;\n inputRef: RefObject;\n setInputFocus: Dispatch;\n handleMapUpdate: ()=> void;\n}\n\nconst SearchInput = ({ search, onSearchChange, inputClasses, setSearchOpen, inputRef, setInputFocus , handleMapUpdate }: Props) => {\n const searchValue = search.searchQuery;\n\n const classes = searchInputStyles();\n\n const handleSearchChange = (e: ChangeEvent) => {\n onSearchChange({ ...search, searchQuery: e.currentTarget.value });\n setSearchOpen(true);\n setInputFocus();\n };\n\n const handleClearIndexSearch = () => {\n onSearchChange({ ...search, searchType: SearchType.Default }, true);\n setInputFocus();\n };\n\n const handleClearSelectedClient = () => {\n onSearchChange({ ...search, selectedClient: null }, true);\n setInputFocus();\n };\n const handleClearSelectedRegion = () => {\n onSearchChange({ ...search, selectedRegion: null }, true);\n setInputFocus();\n };\n\n const searchChip = () => {\n\n switch (search.searchType) {\n case SearchType.Clients:\n return ;\n\n\n case SearchType.Regions:\n return ;\n\n default:\n if (search.selectedClient) {\n return ;\n } else if (search.selectedRegion) {\n return ;\n }\n\n return null;\n }\n\n\n };\n\n return (\n \n \n \n \n }\n />\n \n );\n};\n\nexport default SearchInput;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport const resultStyles = makeStyles((theme) => ({\n item: {\n \"& em\": {\n color: theme.palette.secondary.main,\n fontStyle: \"normal\",\n fontWeight: 700,\n },\n \"&:hover\": {\n \"& .MuiListItemSecondaryAction-root\": {\n visibility: \"visible\",\n },\n },\n \"& .MuiListItemSecondaryAction-root\": {\n visibility: \"hidden\",\n },\n },\n title: {\n maxWidth: 460,\n fontWeight: 700,\n },\n subheader: {\n maxWidth: 460,\n textOverflow: \"ellipsis\",\n },\n}));\n","import { ListItem, ListItemIcon, ListItemText, ListItemSecondaryAction, IconButton, Typography } from \"@material-ui/core\";\nimport ArchiveOutlinedIcon from \"@material-ui/icons/ArchiveOutlined\";\nimport History from \"@material-ui/icons/HistoryOutlined\";\nimport clsx from \"clsx\";\nimport { useHistory } from \"react-router\";\n\nimport { useGetVmsSearchRightsQuery } from \"@/api/elasticSearch/vmsSearchApi\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { handleHighlight } from \"@/utilities/jsx\";\nimport { SearchResult, ArchiveCabinetSearchData, SearchIndex } from \"@/utilities/types/search\";\n\nimport { resultStyles } from \"./ResultStyles\";\n\n\ninterface ArchiveCabinetResultProps {\n result: SearchResult,\n onSelect: (id: number) => void;\n}\n\nconst ArchiveCabinetResult = ({ result, onSelect }: ArchiveCabinetResultProps) => {\n const { data: searchRightsData } = useGetVmsSearchRightsQuery({ indices: [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets, SearchIndex.Clients] });\n const unit = result.source;\n\n const classes = resultStyles();\n const history = useHistory();\n\n const name = result.highlight?.[\"name\"] ?? unit.name;\n const clientName = result.highlight?.[\"client_name\"] ?? unit.client_name;\n const locationName = result.highlight?.[\"location_name\"] ?? unit.location_name;\n\n const navigateToHistory = () => {\n history.push(`/archive-cabinet/${unit.id}/history`);\n };\n\n return (\n onSelect(unit.id)}\n alignItems=\"flex-start\"\n dense\n button\n >\n \n \n \n {handleHighlight(locationName)}}\n disableTypography\n secondary={\n
\n \n {searchRightsData?.data.is_multi_client &&\n <>\n {handleHighlight(clientName)}\n | \n \n }\n (Archived) {handleHighlight(name)}\n \n
\n }\n />\n \n \n \n \n \n \n );\n};\n\nexport default ArchiveCabinetResult;\n","import { ListItem, ListItemIcon, ListItemText, ListItemSecondaryAction, IconButton } from \"@material-ui/core\";\nimport Add from \"@material-ui/icons/Add\";\nimport Domain from \"@material-ui/icons/Domain\";\n\nimport { SelectedClient } from \"@/utilities/types/search\";\n\nimport { resultStyles } from \"./ResultStyles\";\n\n\ninterface ClientResultProps {\n name: string,\n index: number,\n id: number\n onSelect: (client_id: SelectedClient) => void;\n}\n\nconst ClientResult = (props : ClientResultProps ) => {\n const { name, id, onSelect } = props;\n\n const classes = resultStyles();\n\n const handleOnClick = () => {\n onSelect( { id, name });\n };\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ClientResult;\n","import { ListItem, ListItemText, ListItemSecondaryAction, IconButton, Typography } from \"@material-ui/core\";\nimport History from \"@material-ui/icons/HistoryOutlined\";\nimport Videocam from \"@material-ui/icons/VideocamOutlined\";\nimport clsx from \"clsx\";\n\nimport { useGetVmsSearchRightsQuery } from \"@/api/elasticSearch/vmsSearchApi\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { handleHighlight } from \"@/utilities/jsx\";\nimport { isUnitActive } from \"@/utilities/liveUnitHelper\";\nimport { SearchResult, LiveUnitSearchData, SearchIndex } from \"@/utilities/types/search\";\n\nimport { resultStyles } from \"./ResultStyles\";\n\n\ninterface LiveUnitProps {\n result: SearchResult;\n historyUnitId: number | null;\n onSelect: ((result: SearchResult) => void) | null;\n onStreamClick: ((result: SearchResult) => void) | null;\n onHistoryClick: (() => void) | null;\n}\n\n\nconst LiveUnitResult = (props: LiveUnitProps) => {\n const { result, historyUnitId, onSelect, onStreamClick, onHistoryClick } = props;\n const { data: searchRightsData } = useGetVmsSearchRightsQuery({ indices: [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets, SearchIndex.Clients] });\n\n const unit = result.source;\n\n const classes = resultStyles();\n const unitName = result.highlight?.[\"name\"] ?? unit.name;\n const clientName = result.highlight?.[\"client_name\"] ?? unit.client_name;\n const locationName = result.highlight?.[\"location_name\"] ?? unit.location_name;\n const serial = result.highlight?.[\"serial\"] ?? unit.serial;\n\n // Check if live unit is deactivated\n const isUnitAcive = isUnitActive(result.source.date_activated, result.source.date_deactivated);\n\n const address = () => {\n if (unit.location_street ||\n unit.location_city ||\n unit.location_state ||\n unit.location_zip) {\n\n const street = result.highlight?.[\"location_street\"] ?? unit.location_street;\n const city = result.highlight?.[\"location_city\"] ?? unit.location_city;\n const state = result.highlight?.[\"location_state\"] ?? unit.location_state;\n const zip = result.highlight?.[\"location_zip\"] ?? unit.location_zip;\n\n return (<>\n {\n unit.location_street?.trim() && (<>\n {handleHighlight(street)}\n , \n )\n }\n {\n unit.location_city?.trim() && (<>\n {handleHighlight(city)}\n , \n )\n }\n {handleHighlight(state)}\n \n {handleHighlight(zip)}\n\n );\n } else {\n return No address saved for this Live Unit;\n }\n };\n\n return (\n onSelect(result)}\n alignItems=\"flex-start\"\n dense\n button\n >\n \n {handleHighlight(locationName)}\n \n }\n disableTypography\n secondary={\n
\n \n {address()}\n \n \n {searchRightsData?.data.is_multi_client &&\n <>\n {handleHighlight(clientName)}\n | \n \n }\n {handleHighlight(unitName)}\n {serial && !unitName.toLowerCase().includes(serial.toLowerCase()) &&\n <>\n , \n {handleHighlight(serial)}\n \n }\n \n
\n }\n />\n \n {isUnitAcive && onStreamClick(result)}\n disabled={onStreamClick == null}\n >\n \n }\n onHistoryClick()}\n disabled={historyUnitId == null}\n >\n \n \n \n \n );\n};\n\nexport default LiveUnitResult;\n","import { ListItem, ListItemIcon, ListItemText, ListItemSecondaryAction, IconButton } from \"@material-ui/core\";\nimport Add from \"@material-ui/icons/Add\";\nimport Public from \"@material-ui/icons/Public\";\n\nimport { SelectedRegion, SearchResult, RegionSearchData } from \"@/utilities/types/search\";\n\nimport { resultStyles } from \"./ResultStyles\";\n\n\ninterface RegionResultProps {\n index: number,\n isMultiClient: boolean\n result: SearchResult,\n onSelect: (client_id: SelectedRegion) => void;\n}\n\nconst RegionResult:React.FC = ({ index, result, isMultiClient, onSelect } ) => { const classes = resultStyles();\n\n const handleOnClick = () => {\n onSelect( { id: result.source.id, name: result.source.name });\n };\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default RegionResult;\n","import { History } from \"history\";\n\nimport { SearchRightType, SearchRights } from \"@/api/elasticSearch/vmsSearchApi\";\n\n\nexport const hasCameraRights = (\n rights: SearchRights,\n type: SearchRightType,\n client_id: number,\n camera_ids: number[],\n): boolean => {\n // Typescript can't properly do type narrowing if we use rights[type] directly in the expression below, so\n // we assign it as a work around.\n const rights_type = rights[type];\n\n return (\n rights_type.type === \"all\" ||\n rights_type.clients.includes(client_id) ||\n camera_ids.some((camera_id) => rights_type.entities.includes(camera_id))\n );\n};\n\ninterface canRequestVideoArgs {\n client_id: number;\n camera_ids: number[];\n searchRightsData: { data: SearchRights } | undefined;\n hasCameraRights: (rights: SearchRights, type: SearchRightType, client_id: number, camera_ids: number[]) => boolean;\n}\n\nexport const canRequestVideo = ({ client_id, camera_ids, searchRightsData, hasCameraRights }: canRequestVideoArgs) => {\n return searchRightsData && hasCameraRights(searchRightsData.data, \"request_video\", client_id, camera_ids);\n};\n\nexport const onClickArchiveCabinet = (\n historyObj: History,\n acUnitId: number | null,\n closeSearchBody: () => void,\n) => {\n if (acUnitId) {\n historyObj.push(`/archive-cabinet/${acUnitId}/history`);\n closeSearchBody();\n }\n};\n\nexport const getStreamCamera = (\n rights: SearchRights,\n client_id: number,\n primary_camera_id: number | null,\n camera_ids: number[],\n): number | null => {\n // Typescript can't properly do type narrowing if we use rights[] directly in the expression below, so\n // we assign it as a work around.\n const rights_type = rights[\"stream\"];\n\n // if there's a primary camera, check to see if we have access to it.\n if (\n primary_camera_id &&\n (rights_type.type === \"all\" ||\n rights_type.clients.includes(client_id) ||\n rights_type.entities.includes(primary_camera_id))\n ) {\n return primary_camera_id;\n }\n\n // If we don't have a primary camera id, but we have access to \"all\" or all for the clients cameras, then we just\n // grab the first camera\n if (rights_type.type === \"all\" || rights_type.clients.includes(client_id)) {\n return camera_ids.at(0) || null;\n }\n\n // If there isn't a primary camera and we don't have access to \"all\" of the clients cameras camera, find the first camera\n // we do have access to.\n return camera_ids.find((camera_id) => rights_type.entities.includes(camera_id)) || null;\n};\n","import { useHistory } from \"react-router\";\n\nimport { ApiResponse, SearchRights } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { PageType } from \"@/utilities/types/common\";\nimport { ArchiveCabinetSearchData, LiveUnitSearchData, RegionSearchData, ResultTypes, SearchResult, SearchSourceType, SelectedClient, SelectedRegion } from \"@/utilities/types/search\";\n\nimport ArchiveCabinetResult from \"./Results/ArchiveCabinetResult\";\nimport ClientResult from \"./Results/ClientResult\";\nimport LiveUnitResult from \"./Results/LiveUnitResult\";\nimport RegionResult from \"./Results/RegionResult\";\nimport { canRequestVideo, getStreamCamera, hasCameraRights, onClickArchiveCabinet } from \"./VmsSearch.Utils\";\n\n\ninterface Props {\n index: number,\n result: SearchResult,\n searchRightsData: ApiResponse | undefined,\n navigateToStream: (result: SearchResult) => void,\n pageType: PageType,\n navigateToStreamAndClose: (result: SearchResult) => void,\n closeSearchBody: () => void,\n onSelectLiveUnit: (searchResult: SearchResult) => void,\n onSelectArchiveCabinet: (cabinetId: number) => void,\n onClientSelected: (client: SelectedClient) => void,\n onRegionSelected: (region: SelectedRegion) => void,\n\n}\n\nexport const VmsSearchResults: React.FC = (\n {\n onRegionSelected,\n onClientSelected,\n onSelectArchiveCabinet,\n onSelectLiveUnit,\n index,\n result,\n searchRightsData,\n closeSearchBody,\n pageType ,\n navigateToStreamAndClose,\n },\n) => {\n let onSelect;\n const history = useHistory();\n\n switch (result.source.type) {\n case SearchSourceType.LiveUnit:\n // Using the getStreamCamera function to determine if the user has permissions to stream\n // a camera. Not using it for determining the stream camera because there are more\n // conditions than are currently included in the elastic search data.\n const hasPermissionToStream = searchRightsData && getStreamCamera(searchRightsData.data, result.source.client_id, result.source.primary_camera || null, result.source.cameras) != null;\n const historyUnitId = canRequestVideo({ client_id: result.source.client_id, camera_ids: result.source.cameras, searchRightsData, hasCameraRights }) ? result.source.id : null;\n const onStreamClick = hasPermissionToStream ? navigateToStreamAndClose : null;\n const onHistoryClick = () => {\n history.push(`/live-unit/${historyUnitId}/history`);\n closeSearchBody();\n };\n\n switch (pageType) {\n case PageType.Stream:\n onSelect = onStreamClick;\n break;\n case PageType.History:\n onSelect = onHistoryClick;\n break;\n\n default:\n onSelect = onSelectLiveUnit;\n break;\n }\n\n return (}\n historyUnitId={historyUnitId}\n onSelect={onSelect}\n onStreamClick={onStreamClick}\n onHistoryClick={onHistoryClick}\n />);\n case SearchSourceType.ArchiveCabinet:\n // Check if the user has perms to see historic media for an AC.\n const acHistoryUnitId = canRequestVideo({ client_id: result.source.client_id, camera_ids:[result.source.id], searchRightsData, hasCameraRights }) ? result.source.id : null;\n\n switch (pageType) {\n // If we search for an AC while being on the streaming or history page, we need to be redirected appropriately.\n case PageType.Stream:\n case PageType.History:\n onSelect = () => {\n onClickArchiveCabinet(history, acHistoryUnitId, closeSearchBody);\n };\n break;\n\n default:\n onSelect = onSelectArchiveCabinet;\n break;\n }\n\n return (}\n onSelect={onSelect}\n />);\n case SearchSourceType.Client:\n return ;\n case SearchSourceType.Region:\n return } isMultiClient={searchRightsData ? searchRightsData.data.is_multi_client : false} onSelect={onRegionSelected} />;\n\n }\n};\n","import { makeStyles } from \"@material-ui/core\";\nimport zIndex from \"@material-ui/core/styles/zIndex\";\n\n\nexport interface StylesProps {\n searchOpen: boolean;\n}\n\nexport const vmsSearchStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: \"transparent\",\n zIndex: zIndex.appBar + 1,\n },\n searchBody: {\n maxHeight: \"90vh\",\n overflow: \"auto\",\n transition: \"max-height 0.2s linear 0.2s\",\n borderTop: ({ searchOpen }: StylesProps) => searchOpen ? `1px solid ${theme.palette.primary.light}` : \"none\",\n },\n searchBodyHide: {\n maxHeight: 0,\n transition: \"max-height 0.2s linear 0s\",\n },\n searchBodyContainer: {\n backgroundColor: theme.palette.common.white,\n borderRadius: 2,\n boxShadow: \"rgba(0, 0, 0, 0.3) 0px 1px 4px -1px\",\n },\n searchSection: {\n margin: 16,\n },\n resultSection: {\n margin: 16,\n },\n searchInputIncrease: {\n backgroundColor: \"transparent\",\n minWidth: \"45em\",\n transition: \"min-width 0.2s linear\",\n },\n searchInputDecrease: {\n backgroundColor: \"transparent\",\n minWidth: \"27em\",\n transition: \"min-width 0.2s linear 0.2s\",\n [\"@media (max-width: 1440px)\"]: {\n minWidth: \"10.5em\",\n width: \"10.5em\",\n },\n [\"@media only tablet\"]: {\n minWidth: \"5.5em\",\n width: \"5.5em\",\n },\n },\n filterByButton: {\n marginRight: 5,\n },\n}));\n","import { Box, Button, ClickAwayListener, LinearProgress, List, Typography } from \"@material-ui/core\";\nimport { ClassNameMap } from \"@material-ui/core/styles/withStyles\";\nimport Domain from \"@material-ui/icons/Domain\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { Virtuoso } from \"react-virtuoso\";\n\n\nimport {\n useGetVmsSearchRightsQuery,\n VmsSearchConfig,\n} from \"@/api/elasticSearch/vmsSearchApi\";\nimport { endpointsLiveUnitDefaultCamera } from \"@/api/liveUnits/defaultCamera\";\nimport { useSearch } from \"@/common/hooks/useSearch\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { setMapSearchArg, setSearch } from \"@/store/elasticSearch/slice\";\nimport { setSelectedUnit } from \"@/store/map/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport useFocus from \"@/utilities/hooks/useFocus\";\nimport { isUnitActive } from \"@/utilities/liveUnitHelper\";\nimport { storeRecentSearch } from \"@/utilities/localStorage/recentSearches\";\nimport { PageType } from \"@/utilities/types/common\";\nimport {\n LiveUnitSearchData,\n ResultTypes,\n Search,\n SearchIndex,\n SearchResult,\n SearchType,\n SelectedClient,\n SelectedRegion,\n} from \"@/utilities/types/search\";\n\nimport RecentSearches from \"./RecentSearches/RecentSearches\";\nimport SearchInput from \"./SearchInput/SearchInput\";\nimport { VmsSearchResults } from \"./VmsSearchResults\";\nimport { vmsSearchStyles } from \"./VmsSearchStyles\";\n\n\nconst formSearchQueryArg = ({\n searchQuery,\n searchType,\n selectedClient,\n selectedRegion,\n}: Search,\n limit: number,\n): VmsSearchConfig => {\n let indices: SearchIndex[] = [];\n let orderBy = [];\n\n switch (searchType) {\n case SearchType.Default:\n indices = [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets];\n orderBy = [{ \"location_name.keyword\": { order: \"asc\" } }];\n break;\n\n case SearchType.Clients:\n indices = [SearchIndex.Clients];\n orderBy = [{ \"name.keyword\": { order: \"asc\" } }];\n break;\n\n case SearchType.Regions:\n indices = [SearchIndex.Regions];\n orderBy = [{ \"client_name.keyword\": { order: \"asc\" } }, { \"name.keyword\": { order: \"asc\" } }];\n break;\n\n default:\n indices = [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets];\n orderBy = [{ \"location_name.keyword\": { order: \"asc\" } }];\n break;\n }\n\n const client_id = selectedClient ? [selectedClient.id] : undefined;\n const region_id = selectedRegion ? [selectedRegion.id] : undefined;\n\n const sort: VmsSearchConfig[\"sort\"] = searchQuery\n ? undefined\n : [\n { \"_score\": { order: \"desc\" } },\n ...orderBy,\n ];\n\n const query = searchQuery ? searchQuery : \"*\";\n\n return {\n query,\n offset: 0,\n limit,\n filter: { indices, client_id, region_id },\n sort,\n };\n};\n\nexport interface Props {\n customStyle: ClassNameMap;\n pageType: PageType;\n}\n\nconst SearchBar: React.FC = ({ customStyle, pageType }) => {\n const [searchOpen, setSearchOpen] = useState(false);\n const search: Search = useSelector((state: RootState) => state.elasticSearch.search);\n const { data: searchRightsData } = useGetVmsSearchRightsQuery({ indices: [SearchIndex.LiveUnits, SearchIndex.ArchiveCabinets, SearchIndex.Clients] });\n const [getStreamCameraForLiveUnit] = endpointsLiveUnitDefaultCamera.getLiveUnitDefaultStreamCameraId.useLazyQuerySubscription();\n const [inputRef, setInputFocus] = useFocus();\n\n const [searchApi, loadMore, searchQuery] = useSearch(25);\n const { isSuccess, isFetching, results, total } = searchQuery;\n\n const providedClasses = customStyle;\n const classes = vmsSearchStyles({ searchOpen });\n const dispatch = useDispatch();\n const history = useHistory();\n\n useEffect(() => {\n searchApi(formSearchQueryArg(search, 10000));\n }, [search]);\n\n useEffect(() => {\n if (!searchOpen && search.searchType === SearchType.Default) {\n dispatch(setMapSearchArg(formSearchQueryArg(search, 10000)));\n }\n }, [searchOpen]);\n\n\n const searchForClients = () => {\n dispatch(setSearch({ ...search, searchType: SearchType.Clients, selectedClient: null, selectedRegion: null }));\n setInputFocus();\n };\n\n const searchForRegions = () => {\n dispatch(setSearch({ ...search, searchType: SearchType.Regions, selectedClient: null, selectedRegion: null }));\n setInputFocus();\n };\n\n\n const openSearchBody = () => {\n setSearchOpen(true);\n };\n\n const closeSearchBody = () => {\n setSearchOpen(false);\n };\n\n const onSearchChange = (newSearch: Search, updateMap = false) => {\n dispatch(setSearch(newSearch));\n\n if (updateMap) {\n // This should normally be false because the map is automatically updated when the search bar loses focus\n dispatch(setMapSearchArg(formSearchQueryArg(newSearch, 10000)));\n }\n };\n\n const onClientSelected = (client: SelectedClient) => {\n const newSearch: Search = {\n searchQuery: \"\",\n searchType: SearchType.Default,\n selectedClient: client,\n selectedRegion: null,\n };\n\n dispatch(setSearch(newSearch));\n // Update the map\n dispatch(setMapSearchArg(formSearchQueryArg(newSearch, 10000)));\n setInputFocus();\n };\n const onRegionSelected = (region: SelectedRegion) => {\n const newSearch: Search = {\n searchQuery: \"\",\n searchType: SearchType.Default,\n selectedClient: null,\n selectedRegion: region,\n };\n\n dispatch(setSearch(newSearch));\n // Update the map\n dispatch(setMapSearchArg(formSearchQueryArg(newSearch, 10000)));\n setInputFocus();\n };\n\n const onSelectLiveUnit = useCallback((searchResult: SearchResult) => {\n const { id, date_activated, date_deactivated } = searchResult.source;\n\n storeRecentSearch(search);\n closeSearchBody();\n dispatch(setSelectedUnit({\n id,\n isArchiveCabinet: false,\n isDeactivated: !isUnitActive(date_activated, date_deactivated),\n }));\n }, [search]);\n\n const onSelectArchiveCabinet = useCallback((cabinetId: number) => {\n storeRecentSearch(search);\n closeSearchBody();\n dispatch(setSelectedUnit({\n id: cabinetId,\n isArchiveCabinet: true,\n isDeactivated: false,\n }));\n }, [search]);\n\n const navigateToStream = (result: SearchResult) => {\n getStreamCameraForLiveUnit(result.source.id)\n .unwrap()\n .then((cameraId: number) => history.push(`/camera/${cameraId}/stream`));\n };\n\n const navigateToStreamAndClose = (result: SearchResult) => {\n navigateToStream(result);\n closeSearchBody();\n };\n\n const searchResultRenderer = useCallback((index, result: SearchResult) => {\n return (\n \n );\n\n\n }, [searchRightsData, search, pageType]);\n\n const fsClasses = () => {\n let classes = FullStory.names.classes.searchField.common;\n\n switch (pageType) {\n case PageType.Map: classes += \" \" + FullStory.names.classes.searchField.map;\n break;\n case PageType.Stream: classes += \" \" + FullStory.names.classes.searchField.stream;\n break;\n case PageType.History: classes += \" \" + FullStory.names.classes.searchField.history;\n break;\n }\n\n return classes;\n };\n\n return (\n \n \n
\n {/*
{history.push(\"/\");}}>Back to map
*/}\n \n dispatch(setMapSearchArg(formSearchQueryArg(search, 10000)))}/>\n \n \n {isFetching ? :
}\n \n\n {(searchRightsData && (searchRightsData.data.is_multi_client || searchRightsData.data.has_regions) && !(search.searchType != SearchType.Default || search.selectedClient || search.selectedRegion)) &&\n \n Filter By\n {searchRightsData.data.is_multi_client &&\n \n }\n {searchRightsData.data.has_regions &&\n \n }\n \n }\n {!(search.searchQuery || search.searchType != SearchType.Default || search.selectedClient || search.selectedRegion) &&\n \n Recent Searches\n \n \n }\n \n Results ({isSuccess && {total}})\n \n \n \n \n \n \n
\n \n
\n );\n};\n\nexport default SearchBar;\n","import { Dispatch, RefObject, useRef } from \"react\";\n\n/**\n * Interface defining the properties of a focusable element reference\n */\ninterface Focusable {\n current: { focus: () => void };\n}\n\n/**\n * Helper to determine if the passed reference is focusable\n * @param {any} ref The reference passed to the hook\n */\nconst canFocus = (ref: any): ref is Focusable => Boolean(ref && ref.current && ref.current.focus);\n\n/**\n * A hook with a persisting reference and a function to give focus to the reference\n * @template {Type} Type The type of the element reference\n * @param {Type} inputRef The initial element reference\n * @returns {[Type, Dispatch]}\n * The element reference to be focused and the function to set the focus\n */\nconst useFocus = (inputRef?: Type): [RefObject, Dispatch] => {\n const htmlElRef = useRef(inputRef ?? null);\n const setFocus: Dispatch = () => {\n canFocus(htmlElRef) && htmlElRef.current.focus();\n };\n\n return [htmlElRef, setFocus];\n};\n\nexport default useFocus;\n","import { SerializedError } from \"@reduxjs/toolkit\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/query\";\nimport { useEffect, useState } from \"react\";\n\nimport { useLazyVmsSearchQuery, VmsSearchConfig } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { ResultTypes, SearchResult } from \"@/utilities/types/search\";\n\n\nexport type UseSearchConfig = Omit;\n\ninterface SearchHookResults {\n results: SearchResult[],\n total: number | undefined,\n search_time: number | undefined,\n error: FetchBaseQueryError | SerializedError | undefined,\n isSuccess: boolean,\n isLoading: boolean,\n isFetching: boolean\n}\n\ntype SearchFunction = (config:UseSearchConfig) => void;\ntype MoreFunction = () => void;\ntype SearchHookReturnType = [ SearchFunction, MoreFunction, SearchHookResults ];\n\nexport const useSearch = (perPage: number):SearchHookReturnType => {\n const [ config, setConfig ] = useState(undefined);\n const [ searchQuery, hookState ] = useLazyVmsSearchQuery(undefined);\n const [ searchResults, setSearchResults] = useState[]>([]);\n const [ searchOffset, setSearchOffset] = useState(0);\n const [ totalResultCount, setTotalResultCount ] = useState(undefined);\n const [ searchTime, setSearchTime ] = useState(undefined);\n // const prefetchResults = usePrefetch(\"vmsSearch\");\n\n const loadMore = () => {\n if(config && searchResults.length < (totalResultCount ?? 0)) {\n setSearchOffset(searchOffset + perPage);\n\n const pageSearch = { ...config, offset: searchOffset, limit: perPage };\n\n searchQuery(pageSearch);\n\n // prefetchResults({ ...pageSearch, offset: searchOffset + perPage });\n }\n };\n\n const search = (config:UseSearchConfig) => {\n setConfig(config);\n setSearchResults([]);\n searchQuery({ ...config, offset: 0, limit: perPage });\n // prefetchResults({ ...config, offset: perPage, limit: perPage });\n\n setSearchOffset(perPage);\n };\n\n useEffect( () => {\n if(hookState.data && !hookState.isFetching) {\n setTotalResultCount(hookState.data.data.meta.count);\n setSearchTime(hookState.data.data.meta.took);\n setSearchResults( [...searchResults, ...hookState.data.data.results]);\n }\n }, [hookState.data, hookState.isFetching]);\n\n return [\n search,\n loadMore,\n {\n results: searchResults,\n total: totalResultCount,\n search_time: searchTime,\n error: hookState.error,\n isSuccess: hookState.isSuccess,\n isLoading: hookState.isLoading,\n isFetching: hookState.isFetching,\n },\n ];\n};\n","/// \nimport { Box, Button, Typography } from \"@material-ui/core\";\nimport { FilterCenterFocus } from \"@material-ui/icons\";\nimport GoogleMapReact from \"google-map-react\";\nimport Lottie from \"lottie-react\";\nimport { useEffect, useRef, useState, useCallback, useMemo, memo } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport useSupercluster from \"use-supercluster\";\n\nimport loaderAnimation from \"@/assets/animations/loader.json\";\nimport { ArchiveCabinetMarker } from \"@/common/components/MapLandingPage/Map/ArchiveCabinetMarker\";\nimport { ClusterMarker } from \"@/common/components/MapLandingPage/Map/ClusterMarker\";\nimport { DeactivatedUnitMarker } from \"@/common/components/MapLandingPage/Map/DeactivatedUnitMarker\";\nimport { LiveUnitMarker } from \"@/common/components/MapLandingPage/Map/LiveUnitMarker\";\nimport {\n boundsForPoints,\n hasValidLatLong,\n mapFitBounds,\n searchToMapFeatureData,\n LIVE_UNIT_LEVEL_ZOOM,\n DEFAULT_MAP_CONFIG,\n} from \"@/common/components/MapLandingPage/Map/MapHelper\";\nimport { mapStyles } from \"@/common/components/MapLandingPage/Map/MapStyles\";\nimport { MapSearchBarStyles } from \"@/common/components/MapLandingPage/Map/MapStyles\";\nimport { MapFeatureData, MarkerClickParams } from \"@/common/components/MapLandingPage/Map/types\";\nimport { VmsSearch } from \"@/common/components/VmsSearch\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { mapSelectors, setSelectedUnit } from \"@/store/map/slice\";\nimport { useFullStory } from \"@/utilities/hooks/fullstory\";\nimport { PageType } from \"@/utilities/types/common\";\nimport { UnitType } from \"@/utilities/types/liveunit\";\nimport { MapConfig } from \"@/utilities/types/map\";\nimport { ArchiveCabinetSearchData, LiveUnitSearchData, ResultTypes, SearchSourceType } from \"@/utilities/types/search\";\n\n\nconst comparePropsForRerender = (prevProps: MapProps, nextProps: MapProps) =>\n prevProps.isFetching === nextProps.isFetching && shallowEqual(prevProps.units, nextProps.units) && prevProps.firstSuccess === nextProps.firstSuccess;\n\n/*\nI think the idea is to decouple this component from the store more.\nStarting off with just passing the units in.\n*/\ninterface MapProps {\n units: Array;\n isFetching: boolean;\n firstSuccess: boolean;\n initialMapConfig: MapConfig;\n}\n\nconst Map: React.FC = memo(({ units, isFetching, firstSuccess, initialMapConfig }) => {\n const FullStory = useFullStory();\n const classes = mapStyles();\n const mapRef = useRef();\n const mapsApiRef = useRef();\n const dispatch = useDispatch();\n const isArchiveCabinet = useSelector(mapSelectors.getIsArchiveCabinet);\n const selectedUnit = useSelector(mapSelectors.getSelectedUnit);\n const deactivatedFilter = useSelector((state: RootState) => state.map.deactivatedFilter);\n const archiveCabinetFilter: boolean = useSelector((state: RootState) => state.map.archiveCabinetFilter);\n const liveUnitFilter = useSelector((state: RootState) => state.map.liveUnitFilter);\n const [mapConfig, setMapConfig] = useState(initialMapConfig);\n\n const type = isArchiveCabinet ? SearchSourceType.ArchiveCabinet : SearchSourceType.LiveUnit;\n const locatedUnit = units.find((unit) =>\n selectedUnit\n && unit.id === selectedUnit.id\n && unit.type == type\n && hasValidLatLong(unit),\n ) as ArchiveCabinetSearchData | LiveUnitSearchData;\n\n mapRef.current?.setOptions({\n styles: [\n {\n featureType: \"transit\",\n stylers: [{ \"visibility\": \"off\" }],\n },\n {\n featureType: \"poi\",\n stylers: [{ \"visibility\": \"off\" }],\n },\n ],\n });\n\n const mapFeatureData = useMemo(() => searchToMapFeatureData(units), [units]);\n\n const mapDataForCluster = useMemo(() => {\n const mapDataForCluster: MapFeatureData[] = [];\n\n mapFeatureData.forEach((mapDatum) => {\n switch (mapDatum.properties.unitType) {\n case archiveCabinetFilter && UnitType.ArchiveCabinet:\n mapDataForCluster.push(mapDatum);\n break;\n case deactivatedFilter && UnitType.Deactivated:\n mapDataForCluster.push(mapDatum);\n break;\n case liveUnitFilter && UnitType.LiveUnit:\n mapDataForCluster.push(mapDatum);\n break;\n }\n });\n\n return mapDataForCluster;\n }, [mapFeatureData, archiveCabinetFilter, deactivatedFilter, liveUnitFilter]);\n\n const { clusters, supercluster } = useSupercluster({\n points: mapDataForCluster,\n bounds: mapConfig.bounds,\n zoom: mapConfig.zoom ?? DEFAULT_MAP_CONFIG.zoom,\n options: { radius: 75, maxZoom: 20 },\n });\n\n const handleMapReset = () => {\n if (mapsApiRef.current && mapRef.current && mapDataForCluster.length > 0) {\n const bounds = boundsForPoints(mapsApiRef.current, mapDataForCluster);\n\n mapFitBounds(mapRef.current, bounds, .1, 0, 17);\n } else {\n setMapConfig(mapConfig);\n }\n };\n\n const clusterClick = useCallback(\n (clusterId: number) => {\n if (mapsApiRef.current && mapRef.current && supercluster) {\n const points = supercluster.getLeaves(clusterId, Infinity);\n const bounds = boundsForPoints(mapsApiRef.current, points);\n\n // Ensure a cluster will expand.\n const expansionZoom = supercluster.getClusterExpansionZoom(clusterId);\n\n mapFitBounds(mapRef.current, bounds, 0.1, expansionZoom);\n }\n },\n [supercluster, mapsApiRef, mapRef],\n );\n\n const markerClick = useCallback(({ unitId, isCabinet, isDeactivated }: MarkerClickParams) => {\n FullStory.event(FullStory.names.events.mapMarkerClicked, {\n id_real: unitId,\n });\n\n dispatch(\n setSelectedUnit({\n id: unitId,\n isArchiveCabinet: !!isCabinet,\n isDeactivated: !!isDeactivated,\n }),\n );\n }, []);\n\n const mapApiLoaded = mapRef.current !== undefined;\n\n useEffect(() => {\n if (mapRef.current) {\n mapRef.current.addListener(\"maptypeid_changed\", () => {\n FullStory.event(FullStory.names.events.mapTypeChanged, { type_str: mapRef.current?.getMapTypeId() });\n });\n }\n }, [mapRef.current]);\n\n // Reset map when initial markers load\n useEffect(() => {\n if (!isFetching && mapApiLoaded && !selectedUnit) {\n handleMapReset();\n }\n }, [mapApiLoaded, mapDataForCluster, isFetching]);\n\n useEffect(() => {\n if (!isFetching) {\n if (locatedUnit) {\n // Use map api otherwise it will try to render lots of clusters that aren't visible.\n mapRef.current?.setCenter({\n lat: locatedUnit.latitude as number,\n lng: locatedUnit.longitude as number,\n });\n mapRef.current?.setZoom(LIVE_UNIT_LEVEL_ZOOM);\n } else if (selectedUnit?.id) {\n handleMapReset();\n }\n }\n }, [selectedUnit, isFetching, mapApiLoaded]);\n\n const mapData = mapDataForCluster.length > 500 ? clusters : mapDataForCluster;\n\n const createMapOptions = () => {\n return {\n scaleControl: true,\n mapTypeControl: true,\n fullscreenControl: false,\n mapTypeControlOptions: {\n style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,\n position: google.maps.ControlPosition.LEFT_TOP,\n },\n restriction: {\n // Values 180 and -180 on east and west allow unlimited\n // horizontal scrolling. Values 85 and -85 on north and south\n // allow limited vertical scrolling. Google maps shows no map\n // above 85 and below -85 latitudes.\n latLngBounds: {\n east: 180,\n north: 85,\n south: -85,\n west: -180,\n },\n strictBounds: true,\n },\n };\n };\n\n return (\n < Box id=\"google-map-wrapper\" data-testid=\"google-map-wrapper\" className={classes.mapWrapper} >\n \n {firstSuccess ?\n <>\n \n {\n mapRef.current = map;\n mapsApiRef.current = maps;\n }}\n onChange={({ center, zoom, bounds }) => {\n setMapConfig({\n zoom,\n center,\n bounds: [bounds.nw.lng, bounds.se.lat, bounds.se.lng, bounds.nw.lat],\n });\n }}\n // the experimental flag removes a few renders of the marker container,\n // but it doesn't look like it is supported, and it didn't look like a significant performance increase.\n // experimental={true}\n >\n {mapRef.current === undefined || isFetching\n ? []\n : mapData.map((cluster) => {\n const [longitude, latitude] = cluster.geometry.coordinates;\n const { cluster: isCluster, point_count: pointCount } = cluster.properties;\n\n if (isCluster && \"cluster_id\" in cluster.properties) {\n return (\n \n );\n }\n\n switch (cluster.properties.unitType) {\n case UnitType.ArchiveCabinet:\n return (\n \n );\n\n case UnitType.Deactivated:\n return (\n \n );\n case UnitType.LiveUnit:\n return (\n \n );\n }\n })}\n \n \n :\n \n \n Loading...\n \n }\n \n );\n // remove this\n}, comparePropsForRerender);\n\nMap.displayName = \"Map\";\n\nexport default Map;\n","import { skipToken } from \"@reduxjs/toolkit/query/react\";\nimport { useState, useEffect } from \"react\";\n\nimport { useVmsSearchQuery } from \"@/api/elasticSearch/vmsSearchApi\";\nimport { DEFAULT_MAP_CONFIG } from \"@/common/components/MapLandingPage/Map/MapHelper\";\nimport { useSelector, RootState } from \"@/store\";\nimport { ResultTypes, SearchResult } from \"@/utilities/types/search\";\n\nimport { Map } from \"../Map\";\n\n\nexport const SearchMap = () => {\n const mapSearchArg = useSelector((state: RootState) => state.elasticSearch.mapSearchArg);\n const { searchUnits, isFetching, isSuccess } = useVmsSearchQuery(mapSearchArg ?? skipToken, {\n selectFromResult: ({ data, ...rest }) => ({\n ...rest,\n searchUnits: data?.data.results.map((r: SearchResult) => r.source) ?? [],\n }),\n });\n const [firstSuccess, setFirstSuccess] = useState(false);\n\n\n useEffect(() => {\n if (isSuccess && !firstSuccess) setFirstSuccess(true);\n }, [isSuccess]);\n\n return (\n <>\n \n \n );\n};\n","import { Box, useMediaQuery } from \"@material-ui/core\";\nimport { useEffect, useState } from \"react\";\n\nimport Filters from \"@/common/components/MapLandingPage/Filters/Filters\";\nimport { useStyles } from \"@/common/components/MapLandingPage/MapView/MapViewStyles\";\nimport { RightUnitDrawer } from \"@/common/components/MapLandingPage/RightUnitDrawer\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { mapSelectors, setSelectedUnit } from \"@/store/map/slice\";\n\nimport { drawerWidth } from \"../RightUnitDrawer/RightUnitDrawerStyles\";\nimport { SearchMap } from \"../SearchMap/SearchMap\";\n\n\nconst MapView: React.FC = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n const selectedUnit = useSelector(mapSelectors.getSelectedUnit);\n\n useEffect(() => {\n setIsDrawerOpen(!!selectedUnit);\n }, [selectedUnit]);\n\n const handleClose = () => {\n dispatch(setSelectedUnit(null));\n };\n\n //If the screen is greater than twice the drawer width, shift the map along with its controls\n //Else just overlay the drawer on top of the map on opening.\n const isGreaterThanDrawerWidth = useMediaQuery(`(min-width:${2 * drawerWidth}px)`);\n\n return (\n \n \n \n
\n \n
\n
\n );\n};\n\nexport default MapView;\n","import { Box } from \"@material-ui/core\";\nimport { Alert } from \"@material-ui/lab\";\nimport { useSnackbar } from \"notistack\";\nimport { useEffect } from \"react\";\n\nimport InformationalVideoModalWrapper from \"@/common/components/InformationalVideoModal/InformationalVideoModalWrapper\";\nimport { Page } from \"@/common/components/InformationalVideoModal/types\";\nimport { MapView } from \"@/common/components/MapLandingPage/MapView\";\nimport { RootState, useSelector } from \"@/store\";\n\n\nconst MapLandingPage: React.FC = () => {\n const { alerts } = useSelector((state: RootState) => state.alerts);\n\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n alerts.forEach((alert) => {\n const AlertLanding = (\n \n {alert.message}\n \n );\n\n enqueueSnackbar(AlertLanding, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: alert.message,\n persist: false,\n preventDuplicate: true,\n variant: alert.severity,\n });\n });\n }, [alerts]);\n\n return (\n \n \n \n \n );\n};\nexport default MapLandingPage;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n backgroundColor: \"transparent\",\n maxWidth: 380,\n textAlign: \"center\",\n color: theme.palette.grey[700],\n },\n icon: {\n height: 80,\n width: 80,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(244, 67, 54, 0.12)\",\n borderRadius: \"50%\",\n marginBottom: 12,\n \"& svg\": {\n height: 48,\n width: 48,\n color: \"rgba(244, 67, 54)\",\n },\n },\n}));\n","import { ErrorOutlineOutlined } from \"@mui/icons-material\";\nimport { Typography } from \"@mui/material\";\nimport { FC } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useStyles from \"./Failure.styles\";\n\n\nconst Failure: FC = () => {\n const styles = useStyles();\n const { t } = useTranslation(\"translation\", { keyPrefix: \"common.failure\" });\n\n return (\n
\n
\n \n
\n\n \n {t(\"head\")}\n \n\n \n {t(\"body\")}\n \n
\n );\n};\n\nexport default Failure;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n loaderContainer: {\n display: \"flex\",\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n borderRadius: \"2.5rem\",\n padding: \"1rem 2.25rem\",\n backgroundColor: theme.palette.common.white,\n },\n loader: {\n width: \"2.25rem\",\n height: \"2.25rem\",\n marginRight: \"1rem\",\n },\n}));\n","import { Typography } from \"@material-ui/core\";\nimport Lottie from \"lottie-react\";\nimport { FC } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport loaderAnimation from \"@/assets/animations/loader.json\";\n\nimport useStyles from \"./Loading.styles\";\n\n\nexport const Loading: FC = () => {\n const classes = useStyles();\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.loading\" });\n\n return (\n
\n \n {t(\"loading\")}\n
\n );\n};\n","import { SecurityAlertMedia, SecurityAlertRaised } from \"@lvt/security-alerts-notification-service-client\";\n\n\nexport interface AlertMedia {\n cameraId: number;\n cameraRole: CameraRole;\n sensorId: number;\n mimeType: string;\n mediaTimestamp: string;\n url: string;\n}\n\nexport interface TimestampCameraMedia {\n timestamp: string;\n cameraMediaList: CameraAlertMedia[];\n}\n\nexport interface ImageVideoTuple {\n imageMedia?: AlertMedia; //Can be optional if video media loads before image\n videoMedia?: AlertMedia;\n}\n\nexport interface CameraAlertMedia {\n cameraId: number;\n media: ImageVideoTuple;\n //Error state if no\n}\n\nexport interface Alert {\n alertId: string;\n alertType?: AlertType;\n alertSubject?: AlertSubject;\n cameraId: number;\n cameraRole?: CameraRole;\n alertTimestamp: string;\n confidence?: number;\n clientId: number;\n clientName?: string;\n locationId: number;\n locationName?: string;\n locationTimezone?: string;\n liveUnitId: number;\n liveUnitName?: string;\n coordinates?: [number, number]; // [longitude, latitude]\n state: \"unresolved\" | \"resolved\" | \"resolving\";\n media: AlertMedia[];\n serial?: string;\n}\n\n// API might return a type that isn't here, but these are the expected values.\nexport enum AlertType {\n LowVoltageDisconnect = \"lowvoltagedisconnect\",\n Powerloss = \"powerloss\",\n MastMovement = \"mastmovement\",\n BaseEntry = \"baseentry\",\n HeadEntry = \"headentry\",\n Intrusion = \"intrusion\",\n Loitering = \"loitering\",\n Gunshot = \"gunshot\",\n Fire = \"fire\",\n Test = \"Test\",\n Other = \"other\",\n}\n\n// API might return a type that isn't here, but these are the expected values.\nexport enum AlertSubject {\n Person = \"person\",\n Vehicle = \"vehicle\",\n Object = \"object\",\n}\n\nexport interface ResolvedAlert {\n alertId: string;\n tags?: string[];\n note?: string;\n}\n\nexport enum CameraRole {\n Right = \"Right\",\n Left = \"Left\",\n Primary = \"Primary\",\n Radar = \"Radar\",\n None = \"None\",\n}\n\nexport const raisedNotificationToAlert = (securityAlertRaised: SecurityAlertRaised): Alert => ({\n ...securityAlertRaised,\n alertType: securityAlertRaised.alertType as AlertType,\n alertSubject: securityAlertRaised.alertSubject as AlertSubject,\n cameraRole: securityAlertRaised.cameraRole as CameraRole,\n cameraId: parseInt(securityAlertRaised.cameraId),\n clientId: parseInt(securityAlertRaised.clientId),\n locationId: parseInt(securityAlertRaised.locationId),\n liveUnitId: parseInt(securityAlertRaised.liveUnitId),\n // media will always be empty when coming from the notification since\n // the alert media hasn't been uploaded yet\n media: [],\n});\n\nexport const raisedNotificationToMedia = (media: SecurityAlertMedia): AlertMedia => ({\n ...media,\n cameraId: parseInt(media.cameraId),\n cameraRole: media.cameraRole as CameraRole,\n sensorId: parseInt(media.sensorId),\n});\n\nexport const sortAlerts = (a: Alert, b: Alert) => {\n const aDate = new Date(a.alertTimestamp);\n const bDate = new Date(b.alertTimestamp);\n\n if (aDate === bDate) return 0;\n\n if (aDate > bDate) return -1;\n\n return 1;\n};\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles((theme) => createStyles({\n container: {\n height: \"100%\",\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: theme.palette.grey[\"300\"],\n borderRadius: 4,\n },\n iconSpace: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: theme.palette.common.white,\n borderRadius: \"50%\",\n height: 56,\n width: 56,\n padding: 18,\n },\n icon: {\n color: theme.palette.grey[\"300\"],\n },\n}));\n","import { ImageNotSupported } from \"@mui/icons-material\";\nimport clsx from \"clsx\";\nimport { FC } from \"react\";\n\nimport useStyles from \"./MediaErrorPlaceholder.styles\";\n\n\nexport interface MediaErrorPlaceholderProps {\n className?: string;\n}\n\nconst MediaErrorPlaceholder: FC = ({ className }) => {\n const classes = useStyles();\n\n return (\n
\n
\n \n
\n
\n );\n};\n\nexport default MediaErrorPlaceholder;\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles(() => createStyles({\n clip: {\n height: 154,\n width: 205,\n margin: \"0 2px\",\n borderRadius: 4,\n position: \"relative\",\n },\n thumbnail: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n width: \"100%\",\n borderRadius: 4,\n },\n video: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n width: \"100%\",\n objectFit: \"fill\",\n borderRadius: 4,\n },\n hidden: {\n display: \"none\",\n },\n}));\n","import clsx from \"clsx\";\nimport { FC, useEffect, useRef, useState } from \"react\";\n\nimport { AlertMedia } from \"@/utilities/types/alert\";\nimport MediaErrorPlaceholder from \"@/views/alerts/AlertsPage/AlertItem/AlertClip/MediaErrorPlaceholder/MediaErrorPlaceholder\";\n\nimport useStyles from \"./AlertClip.styles\";\n\n\nexport interface AlertClipProps {\n play: boolean;\n thumbnail?: AlertMedia;\n video?: AlertMedia;\n}\n\nconst AlertClip: FC = ({ play, thumbnail, video }) => {\n const videoRef = useRef(null);\n const [videoError, setVideoError] = useState(false);\n const [thumbnailError, setThumbnailError] = useState(false);\n\n useEffect(() => {\n if (play && videoRef.current) videoRef.current.play();\n else if (videoRef.current) {\n videoRef.current.pause();\n videoRef.current.currentTime = 0;\n }\n }, [play, videoRef.current]);\n\n const classes = useStyles();\n\n return (\n
\n {video && !videoError ?\n setVideoError(true)}\n />\n :\n \n }\n\n {thumbnail && !thumbnailError ?\n setThumbnailError(true)}\n />\n :\n \n }\n
\n );\n};\n\nexport default AlertClip;\n","import { createStyles, makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => createStyles({\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n width: 200,\n },\n icon: {\n height: 48,\n width: 48,\n border: `1px solid ${theme.palette.grey[\"300\"]}`,\n borderRadius: \"50%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n display: \"flex\",\n },\n textContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n margin: \"0 12px\",\n },\n title: {\n textTransform: \"capitalize\",\n fontWeight: \"bold\",\n },\n subTitle: {\n textTransform: \"capitalize\",\n fontWeight: \"normal\",\n },\n}));\n","import { Typography } from \"@material-ui/core\";\nimport { FC, ReactNode } from \"react\";\n\nimport useStyles from \"./AlertIcon.styles\";\n\n\nexport interface AlertIconProps {\n icon: ReactNode;\n title: string;\n subTitle?: string;\n}\n\nconst AlertIcon: FC = ({ icon, title, subTitle }) => {\n const classes = useStyles();\n\n return (\n
\n
\n {icon}\n
\n
\n {title}\n {subTitle && {subTitle}}\n
\n
\n );\n};\n\nexport default AlertIcon;\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles((theme) => createStyles({\n item: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n borderBottom: `1px solid ${theme.palette.grey[\"300\"]}`,\n boxSizing: \"border-box\",\n color: theme.palette.grey[\"700\"],\n \"&:hover\": {\n backgroundColor: theme.palette.grey[\"100\"],\n cursor: \"pointer\",\n },\n textDecoration: \"none\",\n },\n fullHeight: {\n height: 194,\n },\n clips: {\n display: \"flex\",\n flexDirection: \"row\",\n },\n clip: {\n height: 154,\n width: 205,\n margin: \"0 2px\",\n borderRadius: 4,\n position: \"relative\",\n },\n clipThumbnail: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n width: \"100%\",\n borderRadius: 4,\n },\n clipVideo: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n width: \"100%\",\n objectFit: \"fill\",\n borderRadius: 4,\n },\n hidden: {\n display: \"none\",\n },\n description: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"space-between\",\n flexGrow: 1,\n padding: \"0 40px\",\n },\n descriptionHeader: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n leader: {\n height: 0,\n borderBottomStyle: \"dashed\",\n borderBottomWidth: 2,\n borderColor: theme.palette.grey[\"400\"],\n flexGrow: 1,\n minWidth: 100,\n },\n headerText: {\n fontWeight: \"bold\",\n },\n leftHeader: {\n marginRight: \"1em\",\n textAlign: \"start\",\n maxWidth: \"23em\",\n minWidth: 180,\n display: \"flex\",\n alignItems: \"center\",\n height: 50,\n },\n rightHeader: {\n display: \"flex\",\n alignItems: \"center\",\n height: 50,\n marginLeft: \"1em\",\n textAlign: \"end\",\n },\n innerDescription: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginTop: 20,\n },\n itemButtons: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n flexGrow: 1,\n },\n link: {\n textDecoration: \"none\",\n },\n viewer: {\n display: \"flex\",\n alignItems: \"center\",\n flexGrow: 1,\n },\n viewerText: {\n display: \"flex\",\n alignItems: \"center\",\n color: theme.palette.common.white,\n backgroundColor: theme.palette.error.main,\n padding: \"0 8px\",\n borderRadius: 4,\n },\n viewerIcon: {\n marginRight: \"8px\",\n },\n rightDivider: {\n borderRightStyle: \"solid\",\n borderRightWidth: 1,\n borderColor: theme.palette.grey[\"300\"],\n },\n leftSection: {\n display: \"flex\",\n width: 623,\n },\n collapsedTimestamp: {\n flexShrink: 1,\n marginRight: 40,\n },\n resolveButton: {\n fontWeight: \"bold\",\n },\n}));\n","import { useViewNotification } from \"@lvt/view-notification-service-client\";\nimport { Button, Collapse, ListItem, Typography } from \"@material-ui/core\";\nimport { Bolt, CompassCalibration, DirectionsWalk, EmojiPeople, LocalCarWash, LocalFireDepartment, PowerOff, RemoveRedEye, WarningAmber, WatchLater } from \"@mui/icons-material\";\nimport clsx from \"clsx\";\nimport { FC, isValidElement, ReactNode, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { Alert } from \"@/utilities/types/alert\";\nimport AlertClip from \"@/views/alerts/AlertsPage/AlertItem/AlertClip/AlertClip\";\n\nimport AlertIcon from \"./AlertIcon/AlertIcon\";\nimport useStyles from \"./AlertItem.styles\";\n\n\nexport interface AlertItemProps {\n alert: Alert;\n onClickResolve: () => void;\n showClientName: boolean;\n}\n\nconst iconMap: { [alertType: string]: ReactNode | { [subType: string]: ReactNode } } = {\n \"intrusion\": {\n \"person\": ,\n \"vehicle\": ,\n \"object\": ,\n },\n \"powerloss\": ,\n \"low_voltage\": ,\n \"loitering\": ,\n \"fire\": ,\n};\nconst defaultIcon = ;\n\nconst AlertItem: FC = ({ alert, onClickResolve: _onClickResolve, showClientName }) => {\n const { t, i18n } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.alertItem\" });\n const [isHovering, setIsHovering] = useState(false);\n\n const [viewers, connectionState] = useViewNotification(\"alert\", `${alert.liveUnitId}.${alert.alertId}`, { monitor: true });\n const isCollapsed = connectionState === \"connected\" && !!viewers.length;\n\n const leftThumbnail = alert.media.find(m => m.cameraRole === \"Left\" && m.mimeType === \"image/jpeg\");\n const leftVideo = alert.media.find(m => m.cameraRole === \"Left\" && m.mimeType === \"video/mp4\");\n const centerThumbnail = alert.media.find(m => m.cameraRole === \"Primary\" && m.mimeType === \"image/jpeg\");\n const centerVideo = alert.media.find(m => m.cameraRole === \"Primary\" && m.mimeType === \"video/mp4\");\n const rightThumbnail = alert.media.find(m => m.cameraRole === \"Right\" && m.mimeType === \"image/jpeg\");\n const rightVideo = alert.media.find(m => m.cameraRole === \"Right\" && m.mimeType === \"video/mp4\");\n\n const getIcon = (alertType: string | undefined, alertSubType: string | undefined) => {\n if (!alertType) return defaultIcon;\n\n if (iconMap[alertType] && isValidElement(iconMap[alertType])) return iconMap[alertType];\n\n try {\n if (alertSubType) return (iconMap[alertType] as { [key: string]: ReactNode })?.[alertSubType] ?? defaultIcon;\n } catch {\n // Do nothing\n }\n\n return defaultIcon;\n };\n\n const getCollapsedTimestamp = () => {\n const date = new Date(alert.alertTimestamp);\n\n return `${date.toLocaleTimeString(i18n.language, {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZoneName: \"short\",\n })} - ${date.toLocaleDateString(i18n.language, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n })}`;\n };\n\n const onClickResolve = (e: React.MouseEvent) => {\n e.preventDefault();\n _onClickResolve();\n };\n\n const classes = useStyles();\n\n return (\n \n {/* Collapsed item */}\n \n setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n
\n
\n \n \n {viewers[0]?.username}\n \n
\n \n {getCollapsedTimestamp()}\n \n
\n\n
\n
\n {alert.liveUnitId} {alert.locationName}, {alert.liveUnitName}\n {showClientName &&\n <>\n \n {alert.clientName}\n \n }\n
\n
\n \n
\n\n {/* Expanded item */}\n \n setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n
\n \n \n \n
\n\n
\n {/*Description*/}\n
\n {alert.liveUnitId} {alert.locationName}, {alert.liveUnitName}\n {showClientName &&\n <>\n \n {alert.clientName}\n \n }\n
\n\n
\n {/* Alert Type */}\n \n\n {/* Alert Time */}\n }\n title={(new Date(alert.alertTimestamp)).toLocaleDateString(i18n.language, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n })}\n subTitle={(new Date(alert.alertTimestamp)).toLocaleTimeString(i18n.language, {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZoneName: \"short\",\n })}\n />\n\n
\n \n {t(\"resolve\")}\n \n
\n
\n
\n \n
\n \n );\n};\n\nexport default AlertItem;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles(theme => ({\n actions: {\n marginTop: 24,\n fontSize: 16,\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\",\n \"& button\": {\n fontWeight: \"bold\",\n marginLeft: 16,\n },\n },\n body: {\n margin: 40,\n borderRadius: 12,\n },\n checkbox: {\n margin: \"8px 0px\",\n height: 24,\n \"& .MuiIconButton-root\": {\n paddingLeft: 0,\n },\n },\n checkboxColumns: {\n width: \"50%\",\n },\n close: {\n marginRight: -12,\n },\n detailIcon: {\n backgroundColor: theme.palette.grey[100],\n color: theme.palette.grey[700],\n },\n details: {\n display: \"flex\",\n alignItems: \"center\",\n margin: \"12px 0px\",\n },\n detailItem: {\n width: \"33%\",\n },\n dialog: {\n minWidth: 740,\n maxWidth: \"none\",\n width: 800,\n },\n divider: {\n margin: \"8px 0px\",\n },\n form: {\n display: \"flex\",\n alignItems: \"center\",\n margin: \"16px 0px\",\n },\n head: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n height: 32,\n },\n note: {\n width: \"50%\",\n marginLeft: 16,\n overflowY: \"scroll\",\n },\n}));\n","import {\n Avatar,\n Button,\n Checkbox,\n Dialog,\n Divider,\n FormControlLabel,\n Grid,\n IconButton,\n ListItem,\n ListItemAvatar,\n ListItemText,\n TextField,\n Typography,\n} from \"@material-ui/core\";\nimport { AccessTime, Business, Close, DirectionsWalk } from \"@material-ui/icons\";\nimport { Alert as ToastAlert } from \"@material-ui/lab\";\nimport { CircularProgress } from \"@mui/material\";\nimport { DateTime } from \"luxon\";\nimport { useSnackbar } from \"notistack\";\nimport { FC, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router\";\n\nimport { alertService } from \"@/api/services/implementations/alert\";\nimport { useDispatch } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { Alert } from \"@/utilities/types/alert\";\n\nimport useStyles from \"./ResolveDialog.styles\";\n\n\ninterface ResolveDialogProps {\n alertDetails: Alert;\n open: boolean;\n setOpen: (_: boolean) => void;\n}\n\nenum Tag {\n accident = \"accident\",\n animal = \"animal\",\n deterredCrime = \"deterredCrime\",\n employeeVendor = \"employeeVendor\",\n loitering = \"loitering\",\n suspiciousActivity = \"suspiciousActivity\",\n tampering = \"tampering\",\n theft = \"threft\",\n technicalIssue = \"technicalIssue\",\n violence = \"violence\",\n other = \"other\",\n}\n\ntype TagState = Record;\n\nconst ResolveDialog: FC = ({ alertDetails: ad, open, setOpen }) => {\n const { t, i18n } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.resolveDialog\" });\n const initialTagState = Object.keys(Tag).reduce((state, tag) => { return { ...state, [tag]: false }; }, {} as TagState);\n const [tags, setTags] = useState(initialTagState);\n const [noteInput, setNoteInput] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [awaitingResolve, setAwaitingResolve] = useState(false);\n\n let time = DateTime.fromJSDate(new Date(ad.alertTimestamp))\n .setLocale(i18n.language);\n\n if (ad.locationTimezone != null) {\n time = time.setZone(ad.locationTimezone);\n }\n\n const classes = useStyles();\n const dispatch = useDispatch();\n const history = useHistory();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const handleNoteInput = (e: React.ChangeEvent) => {\n setNoteInput(e.target.value);\n };\n\n const handleChangeTag = (e: React.ChangeEvent) => {\n // Assigning the checkbox values gets around a state update bug in testing\n const name = e.target.name;\n const checked = e.target.checked;\n\n setTags((state) => { return { ...state, [name]: checked }; });\n };\n\n const handleClose = () => {\n setNoteInput(\"\");\n setTags(initialTagState);\n setError(\"\");\n setOpen(false);\n };\n\n const validateForm = () => {\n if (Object.values(tags).some(value => value === true)) {\n if (tags[Tag.other] === true && noteInput.trim() === \"\") {\n setError(t(\"errors.noteRequired\"));\n\n return false;\n } else {\n return true;\n }\n } else {\n setError(t(\"errors.tagRequired\"));\n\n return false;\n }\n };\n\n const handleSubmit = () => {\n if (!validateForm()) return;\n\n setAwaitingResolve(true);\n\n alertService.postResolveAlert({\n alertId: ad.alertId,\n note: noteInput.trim(),\n tags: Object.keys(tags).filter(key => tags[key as Tag] === true),\n }).then(() => {\n handleClose();\n onResolveSuccessMessage();\n history.push(\"/alerts\");\n }).catch((e) => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: t(\"errors.resolveFailed\", { message: e.message }),\n }),\n );\n }).finally(() => setAwaitingResolve(false));\n };\n\n const onResolveSuccessMessage = () => {\n closeSnackbar(ad.alertId);\n\n const alert = (\n \n {t(\"toast.resolveSuccess\", { alertId: ad.alertId })}\n \n );\n\n enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n preventDuplicate: true,\n variant: Severity.Success,\n });\n };\n\n const renderCheckboxes = Object.entries(tags).map(([type, checked], i) => {\n return (\n \n }\n name={type}\n label={t(`tags.${type as keyof typeof Tag}`)}\n />\n \n );\n });\n\n return (\n \n
\n
\n {t(\"title\")}\n \n \n \n
\n {ad &&\n
\n {(ad.locationName || ad.liveUnitName || ad.serial) &&\n \n \n \n \n \n \n }\n {(ad.alertTimestamp || ad.locationTimezone) &&\n \n \n \n \n \n \n }\n {(ad.alertType || ad.alertSubject) &&\n \n \n \n \n \n \n }\n
\n }\n
\n \n {renderCheckboxes}\n \n \n
\n\n \n\n
\n {error !== \"\" && {error}}\n {awaitingResolve ?\n \n :\n \n }\n
\n
\n
\n );\n};\n\nexport default ResolveDialog;\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles((theme) => createStyles({\n content: {\n padding: \"30px 60px\",\n height: \"calc(100vh - 90px)\", // full height - header\n overflow: \"scroll\",\n },\n listArea: {\n border: `1px solid ${theme.palette.grey[\"300\"]}`,\n overflow: \"hidden\",\n borderRadius: 4,\n boxSizing: \"border-box\",\n },\n header: {\n width: \"100%\",\n height: 90,\n margin: 0,\n backgroundColor: theme.palette.background.paper,\n borderBottomStyle: \"solid\",\n borderBottomColor: theme.palette.grey[\"300\"],\n borderBottomWidth: 1,\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 60,\n position: \"sticky\",\n top: 0,\n zIndex: 10,\n },\n heading: {\n flexGrow: 1,\n fontWeight: \"bold\",\n },\n empty: {\n width: \"100%\",\n padding: \"50px\",\n textAlign: \"center\",\n },\n emptyContent: {\n height: \"calc(100vh - 90px)\", // full height - header\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n emptyMessage: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n emptyIconContainer: {\n height: 56,\n width: 56,\n marginBottom: 5,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"50%\",\n backgroundColor: theme.palette.common.white,\n },\n emptyIcon: {\n height: \"40px !important\",\n width: \"40px !important\",\n color: theme.palette.grey[\"300\"],\n },\n}));\n","import {\n RealtimeEventData,\n SecurityAlertMedia,\n SecurityAlertRaised,\n SecurityAlertResolveInitiated,\n // SecurityAlertResolved,\n useSecurityAlertsNotifications,\n} from \"@lvt/security-alerts-notification-service-client\";\nimport { List, Typography } from \"@material-ui/core\";\nimport { Alert as ToastAlert } from \"@material-ui/lab\";\nimport { SentimentSatisfiedAlt } from \"@mui/icons-material\";\nimport { useSnackbar } from \"notistack\";\nimport { FC, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AlertService } from \"@/api/services/interfaces/Alert\";\nimport Failure from \"@/common/containers/Failure/Failure\";\nimport { Loading } from \"@/common/containers/Loading\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { Alert, raisedNotificationToAlert, raisedNotificationToMedia, sortAlerts } from \"@/utilities/types/alert\";\nimport AlertItem from \"@/views/alerts/AlertsPage/AlertItem/AlertItem\";\nimport ResolveDialog from \"@/views/alerts/AlertsPage/ResolveDialog/ResolveDialog\";\n\nimport useStyles from \"./AlertsPage.styles\";\n\n\n// Determines how long to wait before showing the alert banner in ms (if the service still hasn't connected)\nexport const DEFAULT_INITIAL_CONNECTION_TIME = 3000;\n\ninterface AlertsPageProps {\n alertService: AlertService;\n\n /**\n * Determines how long to wait before showing the alert banner in ms (if the service still hasn't connected)\n */\n initialConnectionTime?: number;\n}\n\nconst AlertsPage: FC = ({ alertService, initialConnectionTime = DEFAULT_INITIAL_CONNECTION_TIME }: AlertsPageProps) => {\n const dispatch = useDispatch();\n const user = useSelector((state) => state.user);\n // Flag representing if the alerts API has been fetched yet\n const [isInitialized, setIsInitialized] = useState(false);\n // Flag representing if the initial connection time has expired\n const [isInitialConnection, setIsInitialConnection] = useState(true);\n // Flag representing if the alerts fetch failed\n const [failed, setFailed] = useState(false);\n const [alerts, setAlerts] = useState([]);\n const [isResolveOpen, setIsResolveOpen] = useState(false);\n const [resolveAlertDetails, setResolveAlertDetails] = useState();\n\n const [securityAlertsCallbacks, securityAlertsConnectionState] = useSecurityAlertsNotifications();\n const { enqueueSnackbar } = useSnackbar();\n\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.alertsPage\" });\n\n // Get alerts from the API\n useEffect(() => {\n alertService\n .getAlerts()\n .then((res) => {\n setAlerts(res);\n setIsInitialized(true);\n })\n .catch(() => {\n setFailed(true);\n\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to retrieve alerts\",\n }),\n );\n });\n }, []);\n\n // Register realtime event callbacks\n useEffect(() => {\n const registerHandlers = () => {\n securityAlertsCallbacks.onSecurityAlertRaised((alert: RealtimeEventData) => {\n setAlerts((previous) => {\n const existing = previous.find(a => a.alertId === alert.payload.alertId);\n\n if (existing) return previous;\n\n const next = [raisedNotificationToAlert(alert.payload), ...previous];\n\n next.sort(sortAlerts);\n\n return next;\n });\n });\n\n securityAlertsCallbacks.onSecurityAlertMediaAvailable((media: RealtimeEventData) => {\n setAlerts((previous) => {\n const alertIndex = previous.findIndex(a => a.alertId === media.payload.alertId);\n\n if (alertIndex === -1) return previous;\n\n const alert = previous[alertIndex];\n\n alert.media.push(raisedNotificationToMedia(media.payload));\n previous[alertIndex] = alert;\n\n return [...previous];\n });\n });\n\n // For the UI, an alert can be removed from the list when resolution has been initiated.\n securityAlertsCallbacks.onSecurityAlertResolveInitiated((resolveInitiated: RealtimeEventData) => {\n setAlerts((previous) => {\n const existingIndex = previous.findIndex(a => a.alertId === resolveInitiated.payload.alertId);\n\n if (existingIndex === -1) return previous;\n\n previous.splice(existingIndex, 1);\n\n return [...previous];\n });\n });\n\n // TODO: Use this after mvp to show alert resolution notification\n // securityAlertsCallbacks.onSecurityAlertResolved((resolved: RealtimeEventData) => {});\n };\n\n registerHandlers();\n }, []);\n\n // Set a timeout to prevent the disconnect banner from showing up during initial connection\n useEffect(() => {\n const timeoutId = setTimeout(() => setIsInitialConnection(false), initialConnectionTime);\n\n return () => clearTimeout(timeoutId);\n }, []);\n\n const handleClickResolve = (a: Alert) => {\n setResolveAlertDetails(a);\n setIsResolveOpen(true);\n };\n\n const classes = useStyles();\n\n useEffect(() => {\n if (securityAlertsConnectionState === \"disconnected\" && !isInitialConnection && !failed) {\n const alert = (\n \n {t(\"errors.realtimeEvents\")}\n \n );\n\n enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 12_000,\n key: \"disconnected-alert-message\",\n preventDuplicate: true,\n variant: Severity.Error,\n });\n }\n }, [securityAlertsConnectionState, isInitialConnection]);\n\n return (\n <>\n {/* Header */}\n
\n \n {t(\"title\")}\n \n
\n\n {/* Content */}\n {isInitialized &&\n (alerts.length !== 0 ? (\n
\n \n {alerts.map((a) => (\n handleClickResolve(a)}\n showClientName={user.clientId !== a.clientId}\n />\n ))}\n \n {resolveAlertDetails && }\n
\n ) : (\n
\n
\n
\n \n
\n {t(\"noAlerts.header\")}\n {t(\"noAlerts.message\")}\n
\n
\n ))}\n\n {/* Loading screen */}\n {!isInitialized && !failed && }\n\n {/* Failure screen */}\n {failed && }\n \n );\n};\n\nexport default AlertsPage;\n","import { makeStyles } from \"@material-ui/core\";\nimport zIndex from \"@material-ui/core/styles/zIndex\";\n\n\nexport const LiveUnitNavSearchBarStyles = makeStyles(() => ({\n root: {\n backgroundColor: \"transparent\",\n left: 90,\n top: 15,\n width: \"800px\",\n zIndex: zIndex.appBar,\n },\n}));\n\nexport const SearchBarStyles = makeStyles(() => ({\n root: {\n position: \"absolute\",\n padding: \"1em 0\",\n zIndex: zIndex.appBar,\n top: 0,\n right: 0,\n },\n}));\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport const useLiveUnitNavStyles = makeStyles(theme => ({\n root: {\n backgroundColor: \"white\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n },\n inner: {\n margin: \"0 5.2em\",\n width: \"auto\",\n },\n hidden: {\n display: \"none\",\n },\n searchBarWrapper: {\n width: \"100%\",\n height: \"50px\",\n display: \"flex\",\n },\n navWrapper: {\n display: \"grid\",\n gridTemplateColumns: \"4.5fr min-content 3fr\",\n height: 90,\n position: \"relative\",\n },\n titleWrapper: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n padding: \"1em 0\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n placeholderSearchBox: {\n minWidth: \"27em\",\n padding: \"1em 0\",\n [\"@media (max-width: 1440px)\"]: {\n minWidth: \"10.5em\",\n width: \"10.5em\",\n },\n [\"@media (max-width: 1280px)\"]: {\n minWidth: \"5.5em\",\n width: \"5.5em\",\n },\n },\n back: {\n color: theme.palette.grey[700],\n },\n}));\n","import { localStorageGetMap, localStorageStoreIterable } from \".\";\n\n\ntype RecentCameras = Map;\n\nconst KEY_RECENT_CAMERAS = \"recentStreamCameras\";\n\nexport const getRecentCameras = (): RecentCameras => localStorageGetMap(KEY_RECENT_CAMERAS);\n\nexport const getRecentCamera = (liveUnitId: number): null | number => {\n const recentCameras = getRecentCameras();\n\n return recentCameras.get(liveUnitId) ?? null;\n};\n\nexport const storeRecentCamera = (liveUnitId: number, cameraId: number): void => {\n const recentCameras = getRecentCameras();\n\n recentCameras.delete(liveUnitId);\n recentCameras.set(liveUnitId, cameraId);\n\n localStorageStoreIterable(KEY_RECENT_CAMERAS, recentCameras, { maxEntries: 20 });\n};\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useHeaderStyles = makeStyles(theme =>\n createStyles({\n locationName: {\n fontWeight: \"bolder\",\n },\n placeholder: {\n width: \"10em\",\n },\n head: {\n maxWidth: \"90%\",\n marginLeft: \"1.5em\",\n },\n secondaryInfo: {\n fontSize: \"1.125rem\",\n color: theme.palette.grey[700],\n },\n }),\n);\n","import { Typography } from \"@material-ui/core\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { useEffect, useState } from \"react\";\n\nimport { archiveCabinetInfoService } from \"@/api/services/implementations\";\nimport { liveUnitMetadataService } from \"@/api/services/implementations/liveUnitMetadata\";\nimport { useDispatch } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { ArchiveCabinetInfo, isArchiveCabinetInfo } from \"@/utilities/types/archive\";\nimport { PageType } from \"@/utilities/types/common\";\nimport { LiveUnitInfo, UnitType } from \"@/utilities/types/liveunit\";\n\nimport { useHeaderStyles } from \"./HeaderStyles\";\n\n\ninterface HeaderProps {\n unitType: UnitType\n pageType: PageType\n unitId: number\n}\n\n\nconst Header: React.FC = ({ unitType, pageType, unitId }) => {\n const dispatch = useDispatch();\n const classes = useHeaderStyles();\n const [liveUnitInfo, setLiveUnitInfo] = useState(null);\n const [archiveCabinetInfo, setArchiveCabinetInfo] = useState(null);\n\n useEffect(() => {\n // This is to ensure data fetched is not being set in useState when this component is unmounted.\n let isRunning = true;\n\n switch (unitType) {\n case UnitType.ArchiveCabinet:\n archiveCabinetInfoService\n .fetchArchiveCabinetInfo(unitId)\n .then((response) => {\n if (isArchiveCabinetInfo(response)) {\n if (isRunning) {\n setArchiveCabinetInfo(response);\n }\n }\n })\n .catch(() => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to get Archive Cabinet information.\",\n }),\n );\n });\n break;\n case UnitType.LiveUnit:\n liveUnitMetadataService\n .fetchLiveUnitInfo(unitId)\n .then((response) => {\n if (isRunning) {\n setLiveUnitInfo(response);\n }\n })\n .catch(() => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to get Live Unit information.\",\n }),\n );\n });\n break;\n }\n\n return () => { isRunning = false; };\n\n }, [unitType, unitId]);\n\n const lu_name = liveUnitInfo ? ((liveUnitInfo.liveUnitName !== \"\" && liveUnitInfo.liveUnitName !== liveUnitInfo.liveUnitSerialNum) ? `${liveUnitInfo.liveUnitName}, ` : \"\") + liveUnitInfo.liveUnitSerialNum : \"\";\n\n return (\n <>\n {(() => {\n switch (pageType) {\n case PageType.Stream:\n return (\n liveUnitInfo ?\n
\n {liveUnitInfo.locationName}\n {/* Show live unit name only if it exists and is not the same as the serial number (TDC)*/}\n {liveUnitInfo.showClientNameStreamPage && `${liveUnitInfo.clientName} | `}{lu_name}\n
\n : )\n ;\n case PageType.History:\n switch (unitType) {\n case UnitType.LiveUnit:\n return (\n liveUnitInfo ?\n
\n {liveUnitInfo.locationName}\n {/* Show live unit name only if it exists and is not the same as the serial number (TDC)*/}\n {liveUnitInfo.showClientNameHistoryPage && `${liveUnitInfo.clientName} | `}{lu_name}\n
\n : \n );\n case UnitType.ArchiveCabinet:\n return (\n archiveCabinetInfo ?\n
\n {archiveCabinetInfo.locationName}\n {archiveCabinetInfo.showClientName && `${archiveCabinetInfo.clientName} | `}{archiveCabinetInfo.liveUnitName}\n
\n : \n );\n default:\n return null;\n }\n default:\n return null;\n }\n })()}\n \n );\n};\n\nexport default Header;\n","export enum NavTabs {\n Stream = 0,\n History = 1,\n}\n","import { makeStyles, Tab, TabProps, Tabs } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\n\nimport { NavTabs } from \"@/common/components/LiveUnitNav/LiveUnitNavTabs/types\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n textTransform: \"none\",\n minHeight: \"2.9em\",\n paddingTop: \"1.5em\",\n },\n tab: {\n color: theme.palette.text.primary,\n fontFamily: \"Source Sans Pro\",\n fontSize: theme.typography.body2.fontSize,\n fontWeight: 600,\n letterSpacing: \".03rem\",\n lineHeight: \"1rem\",\n minHeight: \"2.9em\",\n textTransform: \"none\",\n minWidth: \"auto\",\n width: \"7em\",\n },\n flexContainerTabs: {\n justifyContent: \"space-evenly\",\n },\n textColorInherit: {\n opacity: 0.8,\n },\n ripple: {\n color: theme.palette.secondary.main,\n },\n}));\n\nexport interface LiveUnitNavTabsProps {\n historyUrl: string | null;\n streamUrl: string | null;\n value: NavTabs;\n onRequestedVideo?: boolean;\n}\n\nconst LabelTab: React.FC = (props) => {\n const classes = useStyles();\n\n return (\n \n );\n};\n\nconst LiveUnitNavTabs: React.FC = ({ value, streamUrl, historyUrl, onRequestedVideo }) => {\n const classes = useStyles();\n const history = useHistory();\n\n\n const handleChange = (_: any, index: number) => {\n if (value != null && value == index && !onRequestedVideo) {\n return;\n }\n\n if (index == NavTabs.Stream && streamUrl) {\n history.push(streamUrl);\n } else if (index == NavTabs.History && historyUrl) {\n history.push(historyUrl);\n }\n };\n\n return (\n \n \n \n {/* \n */}\n \n );\n};\n\nexport default LiveUnitNavTabs;\n","import { unwrap } from \"@lvt/web-data\";\nimport { Grid, IconButton, Box } from \"@material-ui/core\";\nimport KeyboardBackspaceIcon from \"@material-ui/icons/KeyboardBackspace\";\nimport { skipToken } from \"@reduxjs/toolkit/query/react\";\nimport clsx from \"clsx\";\nimport { useRef } from \"react\";\nimport { Route, useHistory } from \"react-router\";\nimport { Switch } from \"react-router-dom\";\n\nimport { useGetLiveUnitDefaultStreamCameraIdQuery } from \"@/api/liveUnits/defaultCamera\";\nimport { LiveUnitNavSearchBarStyles, SearchBarStyles } from \"@/common/components/LiveUnitNav/LiveUnitNavSearchBarStyles\";\nimport { useLiveUnitNavStyles } from \"@/common/components/LiveUnitNav/LiveUnitNavStyles\";\nimport { VmsSearch } from \"@/common/components/VmsSearch\";\nimport { useSelector } from \"@/store\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { getRecentCameras } from \"@/utilities/localStorage/recentStreamingCameras\";\nimport { PageType } from \"@/utilities/types/common\";\nimport { UnitType } from \"@/utilities/types/liveunit\";\n\nimport { Header } from \"../Header\";\nimport { LiveUnitNavTabs, NavTabs } from \"./LiveUnitNavTabs\";\n\n\nexport const searchPlaceholder = \"Search Live Units\";\n\nconst LiveUnitNav: React.FC = () => {\n const hidden = useSelector((state) => state.liveUnitNav.hidden);\n const streamMeta = useSelector((state) => unwrap(state.stream.streamMeta));\n const streamingLiveUnitId = streamMeta?.liveUnitId;\n const archiveLiveUnitId = useSelector((state) => state.archives.liveUnitId);\n const ref = useRef(null);\n const history = useHistory();\n const { currentData: archiveDefaultCameraId } = useGetLiveUnitDefaultStreamCameraIdQuery(archiveLiveUnitId ?? skipToken);\n\n const recentCameras = getRecentCameras();\n const classes = useLiveUnitNavStyles();\n const mapSearchBarClasses = LiveUnitNavSearchBarStyles();\n const searchBarClasses = SearchBarStyles();\n\n const setStreamUrl = (streamId: number) => `/camera/${streamId}/stream`;\n const setHistoryUrl = (liveUnitId: number) => `/live-unit/${liveUnitId}/history`;\n\n const backToMap = () => {\n // TODO: history.goBack();\n history.push(\"/\");\n };\n\n return (\n \n );\n};\n\nexport default LiveUnitNav;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nconst bannerFontColor = \"#2196F3\";\nconst bannerBackgroundColor = \"#E4F2FE\";\n\nexport default makeStyles((theme) => ({\n camera: {\n display: \"flex\",\n alignItems: \"center\",\n color: theme.palette.grey[700],\n \"&:first-child\": {\n marginRight: 4,\n },\n },\n close: {\n backgroundColor: \"rgba(0,0,0,0.5)\",\n \"&:hover\": {\n backgroundColor: \"rgba(0,0,0,0.7)\",\n },\n color: theme.palette.common.white,\n position: \"absolute\",\n top: 16,\n right: 16,\n zIndex: 2, //For a dewarped video, the error screen from PanoramaStream component (video js lib) overlaps the close button and renders it useless.\n },\n dialog: {\n minWidth: 800,\n borderRadius: 8,\n },\n download: {\n \"&:hover\": {\n backgroundColor: \"rgba(0,0,0,0.1)\",\n },\n color: theme.palette.grey[700],\n height: 48,\n },\n footer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: 16,\n },\n primaryText: {\n display: \"flex\",\n color: theme.palette.grey[900],\n fontSize: 20,\n fontWeight: 600,\n \"& div\": {\n marginRight: 12,\n },\n },\n secondaryText: {\n display: \"flex\",\n flexWrap: \"wrap\",\n color: theme.palette.grey[700],\n fontSize: 16,\n fontWeight: 400,\n \"& div\": {\n marginRight: 12,\n },\n },\n video: {\n aspectRatio: \"16 / 9\",\n \"& video\": {\n objectFit: \"contain\",\n backgroundColor: \"black\",\n width: \"100%\",\n },\n },\n panoVideoBanner: {\n display: \"flex\",\n backgroundColor: bannerBackgroundColor,\n color: bannerFontColor,\n padding: \"8px 16px\",\n },\n panoVideoBannerTitle: {\n marginLeft: \"0.5em\",\n },\n}));\n","import { PanoramaStream } from \"@lvt/streaming\";\nimport { Dialog, IconButton } from \"@material-ui/core\";\nimport { Typography } from \"@material-ui/core\";\n// import { Alert as ToastAlert } from \"@material-ui/lab\";\nimport { Close, Download, Videocam } from \"@mui/icons-material\";\nimport { DateTime } from \"luxon\";\n// import { useSnackbar } from \"notistack\";\n// import { useTranslation } from \"react-i18next\";\n\nimport { RequestedVideo } from \"@/api/requestedVideos\";\nimport { ClickAndDrag } from \"@/common/components/SVG/Svg\";\n// import { Severity } from \"@/store/alerts/slice\";\n\nimport useStyles from \"./PreviewModal.styles\";\n\n\nexport interface PreviewModalProps {\n /**\n * Flag to hide/show the modal.\n */\n open: boolean;\n /**\n * Handler to close the modal.\n */\n onClose: () => void;\n /**\n * Video data for the UI and video playback.\n */\n video: RequestedVideo;\n}\n\nconst PreviewModal: React.FC = ({ open, onClose, video }) => {\n // const { t } = useTranslation(\"translation\", { keyPrefix: \"components.requestedVideos\" });\n const styles = useStyles();\n // const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const isDewarpedVideo = video.dewarpedVideoUrl;\n\n // This function was being used onError attribute for an effectively not working\n // const onDownloadFail = () => {\n // closeSnackbar(video.id);\n\n // const alert = (\n // \n // {t(\"errors.download\")}\n // \n // );\n\n // enqueueSnackbar(alert, {\n // anchorOrigin: {\n // vertical: \"bottom\",\n // horizontal: \"right\",\n // },\n // autoHideDuration: 8000,\n // preventDuplicate: true,\n // variant: Severity.Error,\n // });\n // };\n\n const emDash =
;\n const pipe =
|
;\n const degree = °;\n\n return (\n \n
\n {(video.dewarpedVideoUrl)\n ? \n : \n }\n \n \n \n
\n
\n {isDewarpedVideo &&
\n \n \n Panoramic 360{degree} View: Click and drag the video to change the view.\n \n
}\n
\n
\n
\n
{video.locationName}
\n {pipe}\n
{video.name}, {video.liveUnitSerialNumber}
\n {emDash}\n
\n \n {video.name}\n
\n
\n\n
\n {video.recordedDatetime && video.locationTimezone ?\n <>\n
\n {/* {t(\"recorded\")}: {DateTime.fromISO(video.recordedDatetime).setLocale(i18n.language).toLocaleString(DateTime.DATE_MED)},\n {DateTime.fromISO(video.recordedDatetime).setLocale(i18n.language).toLocaleString({ hour: '2-digit', minute: \"2-digit\", timeZoneName: \"short\" })},\n {t(\"timezone\")}: {video.locationTimezone} */}\n Recorded: {DateTime.fromISO(video.recordedDatetime, { zone: \"utc\" }).setZone(video.locationTimezone).toLocaleString(DateTime.DATE_MED)}, \n {DateTime.fromISO(video.recordedDatetime, { zone: \"utc\" }).setZone(video.locationTimezone).toLocaleString({ hour: \"2-digit\", minute: \"2-digit\", timeZoneName: \"short\" })}, \n TZ: {video.locationTimezone}\n
\n {pipe}\n \n :\n { emDash }\n }\n\n {video.requestedByEmail &&\n
Requested By: {video.requestedByEmail}
\n }\n
\n
\n\n e.stopPropagation()}\n // This doesnt work/ on error is not a valid attribute for anchor tags - Does not fire in case of error\n // If we want to handle error case we need to handle throgh javascript\n // onError={onDownloadFail}\n >\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default PreviewModal;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles(theme => ({\n body: {\n borderTop: \"none\",\n border: `1px solid ${theme.palette.grey[300]}`,\n },\n cell: {\n \"&:first-child div\": {\n color: theme.palette.grey[700],\n fontFamily: \"source sans pro\",\n fontSize: 16,\n fontWeight: 600,\n },\n \"&:nth-child(2) div\": {\n fontWeight: 400,\n },\n },\n container: {\n flexGrow: 1,\n },\n head: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.grey[900],\n // border won't follow sticky header\n boxShadow: `inset 0 1px 0 ${theme.palette.grey[300]}, inset 0 -1px 0 ${theme.palette.grey[700]}`,\n \"& th\": {\n fontFamily: \"source sans pro\",\n fontSize: 14,\n fontWeight: 600,\n textTransform: \"uppercase\",\n color: theme.palette.grey[900],\n },\n },\n location: {\n fontSize: 16,\n color: theme.palette.grey[700],\n },\n root: {\n backgroundColor: theme.palette.grey[100],\n padding: \"2em 3em\",\n flexGrow: 1,\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {\n height: 120,\n fontWeight: 600,\n fontSize: 16,\n color: theme.palette.grey[700],\n \"&:hover\": {\n cursor: \"pointer\",\n },\n },\n table: {\n borderCollapse: \"separate\",\n backgroundColor: theme.palette.common.white,\n borderTop: \"none\",\n border: `1px solid ${theme.palette.grey[300]}`,\n },\n tablePrefix: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"baseline\",\n marginBottom: 16,\n },\n title: {\n fontFamily: \"Source Sans Pro\",\n fontSize: 24,\n fontWeight: 600,\n color: theme.palette.grey[900],\n },\n}));\n","import { makeStyles, withStyles, TableCell } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n close: {\n \"&:hover\": {\n cursor: \"pointer\",\n },\n },\n linkPopper: {\n backgroundColor: theme.palette.common.white,\n boxShadow: \"rgba(0, 0, 0, 0.1) 0px 2px 8px 0px\",\n color: theme.palette.grey[700],\n fontWeight: 600,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: 16,\n borderRadius: 4,\n },\n noImageBackground: {\n display: \"flex\",\n backgroundColor: theme.palette.common.white,\n margin: \"auto\",\n height: 56,\n width: 56,\n borderRadius: \"50%\",\n },\n thumbnail: {\n display: \"flex\",\n backgroundColor: theme.palette.grey[300],\n height: 90,\n width: \"100%\",\n objectFit: \"cover\",\n borderRadius: 4,\n },\n}));\n\nexport const Cell = withStyles(theme => ({\n root: {\n \"& div\": {\n color: theme.palette.grey[700],\n fontFamily: \"source sans pro\",\n fontSize: 16,\n fontWeight: 600,\n },\n \"& div + div\": {\n fontWeight: 400,\n },\n },\n}))(TableCell);\n","import { Box, Popper, IconButton, TableCell } from \"@material-ui/core\";\nimport { Check, Close, GetApp, Link } from \"@material-ui/icons\";\nimport { Alert as ToastAlert } from \"@material-ui/lab\";\nimport { DateTime } from \"luxon\";\nimport { useSnackbar } from \"notistack\";\nimport { FC, useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RequestedVideo, useLazyGetShareLinkQuery } from \"@/api/requestedVideos\";\nimport { ImageNotFound } from \"@/common/components/SVG/Svg\";\nimport { Severity } from \"@/store/alerts/slice\";\nimport { OnFeatureFlag } from \"@/utilities/OnFeatureFlag\";\n\nimport useStyles, { Cell } from \"./RequestedVideoRow.styles\";\n\n\nexport interface RequestedVideoRowProps {\n liveUnitId: number;\n row: RequestedVideo;\n}\n\nconst RequestedVideoRow: FC = ({ liveUnitId, row }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n\n const { t, i18n } = useTranslation(\"translation\", { keyPrefix: \"components.requestedVideos\" });\n const [getShareLink] = useLazyGetShareLinkQuery();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const styles = useStyles();\n\n const handleShare = async (e: React.MouseEvent) => {\n e.stopPropagation();\n\n const buttonElement = e.currentTarget;\n\n try {\n const shareLink = await getShareLink({\n dewarped: !!row.dewarpedVideoUrl,\n liveUnitId,\n videoId: row.id,\n }).unwrap();\n\n navigator.clipboard.writeText(shareLink);\n\n setAnchorEl(buttonElement);\n } catch (error) {\n onShareLinkFail();\n }\n };\n\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation();\n setAnchorEl(null);\n };\n\n const onShareLinkFail = () => {\n closeSnackbar(row.id);\n\n const alert = (\n \n {t(\"errors.shareLink\", { videoId: row.id })}\n \n );\n\n enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n preventDuplicate: true,\n variant: Severity.Error,\n });\n };\n\n // This function is being commented out until the bug mentioned in the comment below ~line 203 is resolved\n // const onDownloadFail = () => {\n // closeSnackbar(row.id);\n\n // const alert = (\n // \n // {t(\"errors.download\")}\n // \n // );\n\n // enqueueSnackbar(alert, {\n // anchorOrigin: {\n // vertical: \"bottom\",\n // horizontal: \"right\",\n // },\n // autoHideDuration: 8000,\n // preventDuplicate: true,\n // variant: Severity.Error,\n // });\n // };\n\n useEffect(() => {\n if (anchorEl) {\n const timer = setTimeout(() => setAnchorEl(null), 5000);\n\n return () => clearTimeout(timer);\n }\n }, [anchorEl]);\n\n return (\n <>\n \n {(row.dewarpedVideoUrl || row.videoUrl) ?\n \n \n {row.name ?
{row.name}
:
}\n
{row.isThermal && t(\"thermal\")}
\n
{row.dewarpedVideoUrl && t(\"panoDewarped\")}
\n
\n \n {row.recordedDatetime && row.locationTimezone ? (\n <>\n
\n {DateTime\n .fromISO(row.recordedDatetime, { zone: \"utc\" })\n .setZone(row.locationTimezone)\n .setLocale(i18n.language)\n .toLocaleString(DateTime.DATE_MED)\n .toUpperCase()\n }\n
\n
\n {DateTime\n .fromISO(row.recordedDatetime, { zone: \"utc\" })\n .setZone(row.locationTimezone)\n .setLocale(i18n.language)\n .toLocaleString({\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZoneName: \"short\",\n })\n }\n
\n \n ) : (\n
\n )}\n
\n \n {row.requestedDatetime && row.locationTimezone ? (\n <>\n
\n {DateTime\n .fromISO(row.requestedDatetime, { zone: \"utc\" })\n .setZone(row.locationTimezone)\n .setLocale(i18n.language)\n .toLocaleString(DateTime.DATE_MED)\n .toUpperCase()\n }\n
\n
\n {DateTime\n .fromISO(row.requestedDatetime, { zone: \"utc\" })\n .setZone(row.locationTimezone)\n .setLocale(i18n.language)\n .toLocaleString({\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZoneName: \"short\",\n })\n }\n
\n \n ) : (\n
\n )}\n
\n \n {row.requestedByName || row.requestedByEmail ? (\n <>\n
{row.requestedByName}
\n
{row.requestedByEmail}
\n \n ) : (\n
\n )}\n
\n \n \n \n \n \n \n \n e.stopPropagation()}\n // This doesnt work/ on error is not a valid attribute for anchor tags - Does not fire in case of error\n // If we want to handle error case we need to handle throgh javascript\n // onError={onDownloadFail}\n // onError={onDownloadFail}\n >\n \n \n \n \n \n\n \n
\n \n {t(\"linkPopper\")}\n \n
\n \n
\n \n );\n};\n\nexport default RequestedVideoRow;\n","import { Table, TableContainer, TableBody, TableHead, TableRow, TableCell } from \"@mui/material\";\nimport React, { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { TableVirtuoso, TableComponents } from \"react-virtuoso\";\n\nimport { RequestedVideo } from \"@/api/requestedVideos\";\n\nimport RequestedVideoRow from \"../RequestedVideoRow/RequestedVideoRow\";\nimport useStyles from \"../RequestedVideosPage.styles\";\n\n\nexport interface RequestedVideoTableProps {\n videos: RequestedVideo[];\n handleVideoRowClicked: (\n mouseEvent: React.MouseEvent,\n video: RequestedVideo,\n ) => void;\n liveUnitId: number;\n}\n\ninterface TableContext {\n styles: ReturnType;\n handleRowClicked: (mouseEvent: React.MouseEvent, videoIdx: number) => void;\n}\n\n// arrow components complain about no display name.\n/* eslint-disable prefer-arrow-callback */\nconst TC: TableComponents = {\n Table: ({ context, ...props }) => ,\n TableHead: React.forwardRef(function TCTableHead({ ...props }, ref) {\n return ;\n }),\n TableBody: React.forwardRef(function TCTableBody({ context, ...props }, ref) {\n return ;\n }),\n TableRow: ({ context, ...props }) => (\n context?.handleRowClicked(e, props[\"data-index\"])}\n />\n ),\n Scroller: React.forwardRef(function TCScroller({ context, ...props }, ref) {\n return ;\n }),\n EmptyPlaceholder: () => (\n \n \n \n

No videos found

\n
\n
\n
\n ),\n};\n/* eslint-enable prefer-arrow-callback */\n\nconst RequestedVideosTable: React.FC = ({\n videos,\n handleVideoRowClicked,\n liveUnitId,\n}) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.requestedVideos\" });\n const styles = useStyles();\n\n const columns = [\n \"\", // thumbnail\n t(\"camera\"),\n t(\"recorded\"),\n t(\"requested\"),\n t(\"requestedBy\"),\n \"\", // share & download link\n ];\n\n /**\n * Head and Row components pulled out of render() to prevent unneccessary rerenders\n * https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unstable-nested-components.md\n */\n const renderHead = () => {\n return (\n \n {columns.map((column, i) => (\n {column}\n ))}\n \n );\n };\n\n const renderRow = (index: number, row: RequestedVideo) => {\n return (\n \n );\n };\n\n const handleRowClicked = useCallback(\n (e, idx) => handleVideoRowClicked(e, videos[idx]),\n [videos, handleVideoRowClicked],\n );\n\n const context: TableContext = {\n styles,\n handleRowClicked,\n };\n\n return (\n \n );\n};\n\nexport const MemoizedRequestedVideosTable = React.memo(RequestedVideosTable);\n","import React, { useCallback, useMemo, useEffect } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\n\nimport { RequestedVideo, useFetchRequestedVideosQuery } from \"@/api/requestedVideos\";\nimport { Loading } from \"@/common/containers/Loading\";\nimport { useDispatch } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\n\nimport PreviewModal from \"./PreviewModal/PreviewModal\";\nimport useStyles from \"./RequestedVideosPage.styles\";\nimport { MemoizedRequestedVideosTable } from \"./RequestedVideosTable/RequestedVideosTable\";\n\n\nexport interface RequestedVideosPageQueryParams {\n videoId?: number;\n videoType?: VideoType;\n}\nexport const VIDEO_ID_PARAM = \"video_id\";\nexport const VIDEO_TYPE_PARAM = \"video_type\";\n\nexport enum VideoType {\n Dewarped = \"dewarped\",\n}\n\nconst manipulateVideos = (videos: RequestedVideo[]): RequestedVideo[] => {\n const regularAndDewarpedVideoList: RequestedVideo[] = [];\n\n videos.forEach((entry) => {\n const regularVideo: RequestedVideo = JSON.parse(JSON.stringify(entry));\n\n regularVideo.dewarpedVideoUrl = undefined;\n regularAndDewarpedVideoList.push(regularVideo);\n\n if (entry.dewarpedVideoUrl) {\n const dewarpedVideo = JSON.parse(JSON.stringify(entry));\n\n dewarpedVideo.videoUrl = undefined;\n regularAndDewarpedVideoList.push(dewarpedVideo);\n }\n });\n\n regularAndDewarpedVideoList.sort((a: RequestedVideo, b: RequestedVideo) => {\n const aDateMs = new Date(a.recordedDatetime || 0).getTime();\n const bDateMs = new Date(b.recordedDatetime || 0).getTime();\n\n return bDateMs - aDateMs;\n });\n\n return regularAndDewarpedVideoList;\n};\n\ninterface RequestedVideosLiveUnitProps {\n liveUnitId: number;\n}\n\n// add archive cabinet props when it is supported\nexport type RequestedVideosProps = RequestedVideosLiveUnitProps;\n\nexport const RequestedVideosPage: React.FC = ({ liveUnitId }) => {\n const { data: preprocessedVideos = [], error, isLoading } = useFetchRequestedVideosQuery({ liveUnitId });\n const videos = useMemo(() => manipulateVideos(preprocessedVideos), [preprocessedVideos]);\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const { search, pathname } = useLocation();\n const history = useHistory();\n\n const setVideoParams = (video: RequestedVideo | null) => {\n const searchParams = new URLSearchParams(search);\n\n if (video == null) {\n searchParams.delete(VIDEO_ID_PARAM);\n searchParams.delete(VIDEO_TYPE_PARAM);\n } else {\n searchParams.set(VIDEO_ID_PARAM, video.id.toString());\n\n if (video.dewarpedVideoUrl != null) {\n searchParams.set(VIDEO_TYPE_PARAM, VideoType.Dewarped);\n }\n }\n\n history.replace({\n pathname,\n search: searchParams.toString(),\n });\n };\n\n useEffect(() => {\n if (error) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to retrieve requested videos: ${error}`,\n }),\n );\n }\n }, [error]);\n\n const selectedVideo = useMemo(() => {\n const searchParams = new URLSearchParams(search);\n const videoId = parseInt(searchParams.get(VIDEO_ID_PARAM) as string, 10);\n const videoType = searchParams.get(VIDEO_TYPE_PARAM);\n\n if (!isNaN(videoId)) {\n const video = videos\n .filter((v) =>\n videoType == VideoType.Dewarped ? v.dewarpedVideoUrl != null : v.dewarpedVideoUrl == null,\n )\n .find((v) => v.id == videoId);\n\n if (video) {\n return video;\n }\n }\n\n return null;\n }, [search, videos]);\n\n const handleClose = useCallback(() => setVideoParams(null), []);\n const handleSelected = useCallback((_: React.MouseEvent, video: RequestedVideo) => setVideoParams(video), []);\n\n return (\n
\n
\n {/* {t(\"previouslyRequestedVideos\")} */}\n Previously Requested Videos\n {videos.length > 0 && (\n \n {videos[0].locationStreet && `${videos[0].locationStreet}, `}\n {videos[0].locationCity && `${videos[0].locationCity}, `}\n {videos[0].locationState && `${videos[0].locationState}, `}\n {videos[0].locationZip}\n \n )}\n
\n\n {isLoading ? (\n \n ) : (\n \n )}\n\n {selectedVideo !== null && (\n \n )}\n
\n );\n};\n","import MuiAccordion from \"@material-ui/core/Accordion\";\nimport MuiAccordionDetails from \"@material-ui/core/AccordionDetails\";\nimport MuiAccordionSummary from \"@material-ui/core/AccordionSummary\";\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\n\n\nconst btnTransition = \"rotate 150ms\";\n\nexport const useStyles = makeStyles(theme => ({\n section: {\n border: `1px solid ${theme.palette.grey[300]}`,\n },\n btnOpen: {\n transition: btnTransition,\n rotate: \"0.5turn\",\n },\n btnClosed: {\n transition: btnTransition,\n },\n cameraName: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: 48,\n fontSize: 16,\n fontWeight: \"bold\",\n color: theme.palette.grey[900],\n },\n}));\n\nexport const Accordion = withStyles({\n root: {\n border: \"1px solid lightgrey\",\n borderRadius: 4,\n boxShadow: \"none\",\n margin: \"1em 5%\",\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: \"1em 5%\",\n \"&:first-child\": {\n marginTop: \"1em\",\n },\n },\n },\n expanded: {},\n})(MuiAccordion);\n\nexport const AccordionSummary = withStyles({\n root: {\n marginBottom: -1,\n minHeight: 56,\n padding: 0,\n \"&$expanded\": {\n minHeight: 56,\n },\n cursor: \"default\",\n },\n content: {\n alignItems: \"center\",\n justifyContent: \"space-between\",\n margin: 0,\n \"&$expanded\": {\n margin: 0,\n },\n },\n expanded: {},\n expandIcon: {\n order: -1,\n padding: 0,\n margin: \"0 0.5em\",\n },\n})(MuiAccordionSummary);\n\nexport const AccordionDetails = withStyles({\n root: {\n padding: 0,\n display: \"flex\",\n flexDirection: \"column\",\n },\n})(MuiAccordionDetails);\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n carousel: {\n aspectRatio: \"16 / 9\",\n maxWidth: \"80%\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n outline: \"none\",\n overflowX: \"hidden\",\n },\n carouselHeader: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"10px 0 10px 5%\",\n },\n carouselHeaderSection: {\n display: \"flex\",\n alignItems: \"center\",\n },\n close: {\n color: theme.palette.primary.contrastText,\n },\n icon: {\n marginRight: 10,\n },\n dateTime: {\n marginRight: 10,\n },\n viewer: {\n display: \"flex\",\n flex: \"1 1\",\n justifyContent: \"space-between\",\n minHeight: 0,\n },\n fullImage: {\n objectFit: \"scale-down\",\n minWidth: 0,\n height: \"100%\",\n width: \"100%\",\n },\n thumbnailTrack: {\n display: \"flex\",\n transitionDuration: \"1s\",\n },\n thumbnail: {\n height: 78,\n width: 140,\n margin: \"6px 2px\",\n \"& img\": {\n height: 78,\n width: 140,\n objectFit: \"contain\",\n cursor: \"pointer\",\n },\n },\n arrow: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"10%\",\n color: theme.palette.primary.contrastText,\n },\n highlighted: {\n outline: `5px solid ${theme.palette.info.main}`,\n outlineOffset: -5,\n },\n}));\n","import React from \"react\";\n\nimport { ArchiveImagesNavMeta, NullArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\n\nexport const LiveUnitMetadataContext = React.createContext(NullArchiveImagesNavMeta);\nexport const LiveUnitMetadataProvider = LiveUnitMetadataContext.Provider;\nexport const LiveUnitMetadataConsumer = LiveUnitMetadataContext.Consumer;\n\ninterface Props {\n metadata: ArchiveImagesNavMeta;\n}\n\nexport const LiveUnitMetadataContextWrapper: React.FC = ({ metadata, children }) => {\n return {children};\n};\n","import { Button, Typography } from \"@material-ui/core\";\nimport { AccessTime, Close, ArrowBack, ArrowForward } from \"@material-ui/icons\";\nimport { DateTime } from \"luxon\";\nimport { useContext, useEffect, useState, useCallback } from \"react\";\n\nimport { useStyles } from \"@/common/components/ArchivePage/ImageCarousel/ImageCarouselStyles\";\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { ArchiveImage, ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\n\ninterface ImageCarouselProps {\n cameraName: string;\n presetName: string;\n presetImages: ArchiveImage[];\n selectedImageIndex: number;\n setIsOpen: (bool: boolean) => void;\n imageCarouselOpen: boolean;\n}\n\nconst ImageCarousel: React.FC = (props: ImageCarouselProps) => {\n const { cameraName, presetName, presetImages, selectedImageIndex, setIsOpen, imageCarouselOpen } = props;\n const [currentIndex, setCurrentIndex] = useState(selectedImageIndex);\n const [thumbnailsOffset, setThumbnailsOffset] = useState(0);\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const classes = useStyles();\n\n useEffect(() => {\n setCurrentIndex(selectedImageIndex);\n }, [selectedImageIndex]);\n\n useEffect(() => {\n setThumbnailsOffset(currentIndex * 144);\n }, [currentIndex]);\n\n const handleGoingLeft = useCallback(\n (idx: number) => {\n const leftVal = idx - 1;\n\n return leftVal > -1 ? leftVal : idx;\n },\n [presetImages],\n );\n\n const handleGoingRight = useCallback(\n (idx: number) => {\n const rightVal = idx + 1;\n\n return rightVal < presetImages.length ? rightVal : idx;\n },\n [presetImages],\n );\n\n useEffect(() => {\n if (!imageCarouselOpen) return;\n\n const keyListener = (e: any) => {\n switch (e.key) {\n //Escape Key\n case \"Escape\":\n setIsOpen(false);\n break;\n //Left Key\n case \"ArrowLeft\":\n setCurrentIndex((prevState) => handleGoingLeft(prevState));\n break;\n //Right Key\n case \"ArrowRight\":\n setCurrentIndex((prevState) => handleGoingRight(prevState));\n break;\n }\n };\n\n window.addEventListener(\"keydown\", keyListener);\n\n return () => {\n window.removeEventListener(\"keydown\", keyListener);\n };\n }, [handleGoingLeft, handleGoingRight]);\n\n // const handleViewOnTimeline = () => {\n // setIsOpen(false);\n\n // const currentImageWithPadding = DateTime.fromISO(presetImages[currentIndex].datetimeRecorded)\n // .minus({ minutes: 20 })\n // .toISO();\n\n // dispatch(setTimelineStart(currentImageWithPadding));\n // };\n\n // const downloadImage = async (url: string) => {\n // const img = await fetchDownloadableImage(url);\n // const el = document.createElement(\"a\");\n\n // el.href = URL.createObjectURL(img);\n // el.download = `${cameraName} - ${presetName} - ${DateTime.fromISO(presetImages[currentIndex]?.datetimeRecorded)\n // .setZone(unitMetadata.timezone)\n // .toFormat(\"MMM_dd_y hh_mm_ss a\")}.jpeg`;\n // document.body.appendChild(el);\n // el.click();\n // document.body.removeChild(el);\n // };\n\n // Reason for toFormat(\"HH:mm\") in line 76 instead of .toLocaleString(DateTime.TIME_24_SIMPLE)\n // https://github.com/moment/luxon/issues/726\n // https://github.com/moment/luxon/issues/726#issuecomment-682834834\n return (\n
\n
\n
\n \n \n {`${DateTime.fromISO(presetImages[currentIndex]?.datetimeRecorded)\n .setZone(unitMetadata.timezone)\n .toFormat(\"HH:mm\")}\n \\u2022\n ${DateTime.fromISO(presetImages[currentIndex]?.datetimeRecorded)\n .setZone(unitMetadata.timezone)\n .toLocaleString(DateTime.DATE_FULL)}`}\n \n \n {cameraName} - {presetName}\n \n
\n
\n {/* handleViewOnTimeline()} variant=\"contained\">\n \n View on Timeline\n */}\n {/* downloadImage(presetImages[currentIndex].imageUrl)}\n variant=\"contained\"\n >\n \n Download Image\n */}\n \n
\n
\n
\n \n \"\"\n \n
\n \n {presetImages.map((img, i) => {\n const current = currentIndex === i ? classes.highlighted : undefined;\n\n return (\n img.thumbUrl && (\n
\n \"\" setCurrentIndex(i)} />\n
\n )\n );\n })}\n
\n \n );\n};\n\nexport default ImageCarousel;\n","import { theme } from \"@lvt/material\";\nimport MuiAccordion from \"@material-ui/core/Accordion\";\nimport MuiAccordionDetails from \"@material-ui/core/AccordionDetails\";\nimport MuiAccordionSummary from \"@material-ui/core/AccordionSummary\";\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n modal: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n modaldiv: {\n display: \"flex\",\n },\n timeline: {\n position: \"absolute\",\n width: \"calc(100% - 1em)\",\n height: 104,\n overflowX: \"hidden\",\n right: \"0\",\n userSelect: \"none\",\n },\n thumbnailLine: {\n borderBottom: `4px solid ${theme.palette.grey[500]}`,\n position: \"absolute\",\n top: \"50%\",\n },\n thumbnailImage: {\n position: \"absolute\",\n height: \"100%\",\n overflow: \"hidden\",\n cursor: \"pointer\",\n zIndex: 1,\n borderLeft: \"4px solid white\",\n \"&:hover\": {\n transform: \"scale(1.1, 1)\",\n },\n },\n image: {\n height: \"100%\",\n },\n name: {\n fontSize: 16,\n color: theme.palette.grey[700],\n },\n}));\n\nexport const Accordion = withStyles({\n root: {\n borderRadius: \"0 0 4px 4px\",\n borderColor: theme.palette.grey[300],\n borderTop: \"1px solid\",\n boxShadow: \"none\",\n margin: 0,\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: 0,\n },\n },\n expanded: {},\n})(MuiAccordion);\n\nexport const AccordionSummary = withStyles({\n root: {\n display: \"flex\",\n alignItems: \"start\",\n minHeight: 32,\n padding: \"0.5em 0.5em 0.5em 0\",\n width: \"100%\",\n \"&$expanded\": {\n width: \"18em\",\n height: 118,\n minHeight: 32,\n },\n },\n content: {\n margin: 0,\n \"&$expanded\": {\n margin: 0,\n },\n },\n expanded: {},\n expandIcon: {\n order: -1,\n padding: 0,\n margin: \"0 0.5em\",\n },\n})(MuiAccordionSummary);\n\nexport const AccordionDetails = withStyles({\n root: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"0.5em 0\",\n marginLeft: \"18em\",\n marginTop: -118,\n },\n})(MuiAccordionDetails);\n","import clsx from \"clsx\";\nimport { MouseEventHandler } from \"react\";\n\nimport { useStyles } from \"@/common/components/ArchivePage/Preset/PresetStyles\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\ninterface PresetThumbnailProps {\n imageUrl: string,\n datetimeRecorded: string,\n offset:number,\n maxWidth: string | number,\n onMouseEnter?: MouseEventHandler,\n onMouseLeave?: MouseEventHandler,\n onMouseDown?: MouseEventHandler,\n onMouseUp?: MouseEventHandler\n}\n\n\nexport default function PresetThumbnail(props: PresetThumbnailProps) {\n const classes = useStyles();\n\n return (\n \n \"\"\n \n );\n}\n","import {\n useRef,\n useEffect,\n useCallback,\n MouseEvent as ReactMouseEvent,\n} from \"react\";\n\nimport { DragPositionChange } from \"@/utilities/types/draggable\";\n\n\n/**\n * @callback onDragStart\n * @param {MouseEvent} ev - mousedown event\n * @returns {void}\n *\n * @callback onDragMove\n * @param {MouseEvent} ev - mousemove event\n * @param {DragPositionChange} diffTotal - change in x/y in regards to mousedown location\n * @param {DragPositionChange} diffLast - change in x/y in regards to last mousemove location\n * @returns {void}\n *\n * @callback onDragEnd\n * @param {MouseEvent} ev - mouseup event\n * @returns {void}\n */\nexport interface DraggableProps extends Omit, \"onDragEnd\" | \"onDragStart\"> {\n children: React.ReactNode;\n onDragStart?: (ev: MouseEvent) => void;\n onDragMove?: (ev: MouseEvent, diffTotal: DragPositionChange, diffLast: DragPositionChange) => void;\n onDragEnd?: (ev: MouseEvent, diffTotal: DragPositionChange) => void;\n}\n\nexport const Draggable: React.FC = ({\n children,\n onDragStart,\n onDragMove,\n onDragEnd,\n ...rest\n}: DraggableProps) => {\n const refDraggable = useRef(null);\n const refMouseDown = useRef();\n const refLastMouseEvent = useRef();\n const refCallbacks = useRef>({\n onDragStart,\n onDragMove,\n onDragEnd,\n });\n\n useEffect(() => {\n refCallbacks.current = {\n onDragStart,\n onDragMove,\n onDragEnd,\n };\n }, [onDragStart, onDragMove, onDragEnd]);\n\n const onMouseMove = useCallback((ev: MouseEvent) => {\n const onDragMove = refCallbacks.current.onDragMove;\n\n if (onDragMove && refDraggable.current && refLastMouseEvent.current && refMouseDown.current) {\n const boundingBox =\n refDraggable.current.getBoundingClientRect();\n const diffLast = computePositionChange(ev, refLastMouseEvent.current, boundingBox);\n const diffTotal = computePositionChange(ev, refMouseDown.current, boundingBox);\n\n refLastMouseEvent.current = ev;\n onDragMove(ev, diffTotal, diffLast);\n }\n }, []);\n\n const onMouseUp = useCallback((ev: MouseEvent) => {\n const onDragEnd = refCallbacks.current.onDragEnd;\n\n refLastMouseEvent.current = undefined;\n\n if (onDragEnd && refMouseDown.current && refDraggable.current) {\n const boundingBox =\n refDraggable.current.getBoundingClientRect();\n const diffTotal = computePositionChange(ev, refMouseDown.current, boundingBox);\n\n onDragEnd(ev, diffTotal);\n }\n\n window.removeEventListener(\"mouseup\", onMouseUp);\n window.removeEventListener(\"mousemove\", onMouseMove);\n }, []);\n\n const onMouseDown = useCallback((syntheticEv: ReactMouseEvent) => {\n const onDragStart = refCallbacks.current.onDragStart;\n const ev = syntheticEv.nativeEvent;\n\n refMouseDown.current = refLastMouseEvent.current = ev;\n\n if (onDragStart) {\n onDragStart(ev);\n }\n\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nconst computePositionChange = (\n nextEv: MouseEvent,\n previousEv: MouseEvent,\n rect: DOMRect,\n): DragPositionChange => {\n const diffX = nextEv.clientX - previousEv.clientX;\n const diffY = nextEv.clientY - previousEv.clientY;\n const diffXRelative = diffX / rect.width;\n const diffYRelative = diffY / rect.height;\n\n return { diffX, diffY, diffXRelative, diffYRelative };\n};\n","import { DateTime } from \"luxon\";\nimport { useState, useCallback } from \"react\";\n\nimport { Draggable, DraggableProps } from \"@/common/components/Draggable/Draggable\";\n\n\n/**\n * @callback timeUpdate\n * @prop {DateTime} dt - The updated time caused by dragging the elment left or right\n * @returns {void}\n *\n * @typedef DraggableTimeProps\n * @extends DraggableProps\n * @prop {DateTime} time - Time\n * @prop {DateTime} maxTime - An updated time will have a max bound to the maxTime\n * @prop {DateTime} minTime - An updated time will have a min bound to the minTime\n * @prop {number} duration - Millisecond duration of the element\n * @prop {timeUpdate} timeUpdate - Callback called with updated time\n */\nexport interface DraggableTimeProps extends DraggableProps {\n time: DateTime,\n maxTime?: DateTime,\n minTime?: DateTime,\n duration: number,\n timeUpdate: (dt: DateTime) => void,\n}\n\n/**\n * A component that wraps the `Draggable` component in a time context.\n * Dragging the component to the left will increase the time.\n * Dragging the component to the right will increase the time.\n */\nexport const DraggableTime: React.FC = ({\n children,\n minTime,\n maxTime,\n time,\n onDragMove,\n onDragEnd,\n onDragStart,\n timeUpdate,\n duration,\n ...rest\n}) => {\n const [dragStartTime, setDragStartTime] = useState(null);\n\n const dragMove = useCallback((ev: any, diffTotal, diffLast) => {\n if (dragStartTime) {\n const changeTotal = -1 * duration * diffTotal.diffXRelative;\n let updatedTime = dragStartTime.plus({ milliseconds: changeTotal });\n\n if (maxTime) {\n updatedTime = DateTime.min(updatedTime, maxTime);\n }\n\n if (minTime) {\n updatedTime = DateTime.max(updatedTime, minTime);\n }\n\n timeUpdate(updatedTime);\n\n if (onDragMove) {\n onDragMove(ev, diffTotal, diffLast);\n }\n }\n }, [duration, dragStartTime, timeUpdate, maxTime, minTime]);\n\n const dragStart = useCallback((...args: Parameters[\"onDragStart\"]>) => {\n setDragStartTime(time);\n\n if (onDragStart) {\n onDragStart(...args);\n }\n }, [time, onDragStart]);\n\n const dragEnd = useCallback((...args: Parameters[\"onDragEnd\"]>) => {\n setDragStartTime(null);\n\n if (onDragEnd) {\n onDragEnd(...args);\n }\n }, [onDragEnd]);\n\n return (\n \n {children}\n \n );\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nconst IMAGE_WIDTH = 312;\n\ninterface HoverImageProps {\n thumbnailBoundingBox: DOMRect,\n}\n\nexport default makeStyles((theme) => ({\n hoverDateTime: {\n width: \"100%\",\n padding: \"0.5em\",\n textAlign: \"center\",\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n },\n hoverImage: {\n width: IMAGE_WIDTH,\n display: \"flex\",\n flexDirection: \"column\",\n zIndex: 100,\n position: \"fixed\",\n bottom: ({ thumbnailBoundingBox }: HoverImageProps) => `calc(100vh - ${thumbnailBoundingBox.top}px + 8px)`,\n left: ({ thumbnailBoundingBox }: HoverImageProps) => {\n const maxLeft = window.innerWidth - IMAGE_WIDTH - 48;\n const left = thumbnailBoundingBox.left - (IMAGE_WIDTH - (thumbnailBoundingBox.width)) / 2;\n\n return Math.min(left, maxLeft);\n },\n },\n}));\n","import { Typography } from \"@material-ui/core\";\nimport { DateTime } from \"luxon\";\n\nimport useStyles from \"./HoverImage.styles\";\n\n\nexport interface HoverImageProps {\n url?: string;\n datetime: DateTime;\n thumbnailBoundingBox: DOMRect;\n}\n\nexport const HoverImage = (props: HoverImageProps) => {\n const { url, datetime } = props;\n const classes = useStyles(props);\n\n\n return (\n
\n {url && \"\"}\n \n \n {`${datetime.toLocaleString(\n DateTime.DATE_FULL,\n )} \\u2022 ${datetime.toLocaleString(DateTime.TIME_WITH_SHORT_OFFSET)}`}\n {/* or just TIME_SIMPLE */}\n \n \n
\n );\n};\n","import { WebDataSteps } from \"@lvt/web-data\";\nimport { Modal, Typography } from \"@material-ui/core\";\nimport { ArrowDropUp } from \"@material-ui/icons\";\nimport { DateTime } from \"luxon\";\nimport React, { useContext, useMemo, useState } from \"react\";\n\nimport ImageCarousel from \"@/common/components/ArchivePage/ImageCarousel/ImageCarousel\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n useStyles,\n} from \"@/common/components/ArchivePage/Preset/PresetStyles\";\nimport PresetThumbnail from \"@/common/components/ArchivePage/Preset/PresetThumbnail\";\nimport { DraggableTime } from \"@/common/components/Draggable/DraggableTime/DraggableTime\";\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { setTimelineStart } from \"@/store/archives/slice\";\nimport { RootState, useDispatch, useSelector } from \"@/store/index\";\nimport { ArchiveImage, ArchiveImagesNavMeta, PresetImages } from \"@/utilities/types/archive\";\n\nimport { HoverImage, HoverImageProps } from \"./HoverImage\";\n\n\ninterface PresetProps {\n cameraName: string;\n id: number;\n images: PresetImages;\n isDefault: boolean;\n presetName: string | null;\n startExpanded?: boolean;\n}\ninterface ThumbnailData {\n archiveImage: ArchiveImage;\n index: number;\n maxWidth: number | string;\n offset: number;\n}\n\nexport default function Preset(props: PresetProps) {\n const {\n cameraName,\n id,\n images,\n isDefault,\n presetName,\n startExpanded = false,\n } = props;\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const timelineWidth: number = useSelector((state: RootState) => state.archives.timelineWidth);\n const timelineStart: DateTime = useSelector((state: RootState) => DateTime.fromISO(state.archives.timelineStart, { zone: unitMetadata.timezone }));\n const timeSpan: number = useSelector((state: RootState) => state.archives.timeSpan);\n const [isExpanded, setIsExpanded] = useState(startExpanded);\n const [selectedImageIndex, setSelectedImageIndex] = useState(0);\n const [hoverData, setHoverData] = useState(null);\n const [isOpen, setIsOpen] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [thumbnailDownPosition, setThumbnailDownPosition] = useState(null);\n const timeDurationMs: number = timeSpan * 1000;\n\n const dispatch = useDispatch();\n const classes = useStyles();\n\n const presetImages: ArchiveImage[] = Object.values(images).reduce(\n (sofar: ArchiveImage[], images): ArchiveImage[] => {\n switch (images.type) {\n case WebDataSteps.Success:\n const payload = images.payload;\n\n return [...sofar, ...payload];\n default:\n // Only care about the images the users is seeing (successes)\n return sofar;\n }\n },\n [],\n );\n\n const handleMouseOver = (e: React.MouseEvent, img: ArchiveImage) => {\n const newHoverData = {\n url: img.thumbUrl ?? img.imageUrl,\n datetime: DateTime.fromISO(img.datetimeRecorded, { zone: unitMetadata.timezone }),\n thumbnailBoundingBox: e.currentTarget.getBoundingClientRect(),\n };\n\n setHoverData(newHoverData);\n };\n\n const thumbnailData = useMemo(() => {\n const pixelsPerSecond = timelineWidth / timeSpan;\n\n const data: ThumbnailData[] = presetImages.map((img, i) => {\n const datetimeRecorded = DateTime.fromISO(img.datetimeRecorded);\n\n const maxWidth = presetImages[i + 1]\n ? (DateTime.fromISO(presetImages[i + 1].datetimeRecorded).toSeconds() - datetimeRecorded.toSeconds()) * pixelsPerSecond - 2\n : \"auto\";\n\n const offset = datetimeRecorded.diff(timelineStart, \"seconds\").seconds * pixelsPerSecond;\n\n return {\n archiveImage: img,\n index: i,\n maxWidth,\n offset,\n };\n });\n\n return data;\n }, [images, timelineWidth, timeSpan, timelineStart]);\n\n const renderThumbnails = thumbnailData.map((data) =>\n ( { handleMouseOver(e, data.archiveImage); }}\n onMouseLeave={() => setHoverData(null)}\n onMouseDown={(e) => setThumbnailDownPosition([e.clientX, e.clientY])}\n onMouseUp={(e) => {\n const delta = 5; // An arbitrary distance\n let isClickNotDrag = true;\n\n\n if (thumbnailDownPosition) {\n const [x, y] = thumbnailDownPosition;\n const dist = Math.hypot(x - e.clientX, y - e.clientY);\n\n if (dist > delta) {\n isClickNotDrag = false;\n }\n }\n\n if (isClickNotDrag) {\n setSelectedImageIndex(data.index);\n setIsOpen(true);\n }\n }}\n />),\n );\n\n return (\n <>\n \n } onClick={() => setIsExpanded((prev) => !prev)}>\n {presetName + (isDefault ? \" (Home)\" : \"\")}\n \n \n {\n setIsDragging(true);\n }}\n timeUpdate={(dt: DateTime) => {\n setHoverData(null);\n dispatch(setTimelineStart(dt.toISO()));\n }}\n onDragEnd={() => {\n setIsDragging(false);\n }}\n time={timelineStart}\n duration={timeDurationMs}\n >\n {renderThumbnails}\n
\n \n \n \n\n {hoverData && !isDragging && (\n \n )}\n setIsOpen(false)} className={classes.modal}>\n \n \n \n );\n}\n","import { webDataErrorSimple, webDataLoading, WebDataSteps, webDataSuccess } from \"@lvt/web-data\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { DateTime } from \"luxon\";\n\nimport { PresetImagesService } from \"@/api/services/interfaces\";\nimport { RootState } from \"@/store\";\nimport { setBucketImages } from \"@/store/archives/slice\";\nimport { hourInSeconds } from \"@/utilities/time\";\nimport { ArchiveImage, Preset, PresetsToImages } from \"@/utilities/types/archive\";\n\n\nexport interface PresetFetchParams {\n presets: Preset[];\n startTime: DateTime;\n endTime: DateTime;\n presetImagesService: PresetImagesService;\n}\n\n// TODO: how to do testing for this \"interface\"?\n// TODO: how to limit/type check the dispatch?\nexport const fetchPresetImages = createAsyncThunk(\n \"presetImages/fetchByIdsStatus\",\n async ({ presets, presetImagesService, startTime, endTime }, { dispatch, getState }) => {\n // get start and stop\n const startTimeSeconds = startTime.toSeconds();\n const startBucket = startTimeSeconds - (startTimeSeconds % hourInSeconds);\n const endTimeSeconds = endTime.toSeconds();\n const endBucket = endTimeSeconds - (endTimeSeconds % hourInSeconds);\n\n const state = getState();\n const images = state.archives.images;\n\n const promises: Promise[] = [];\n\n let currentBucket = startBucket;\n\n while (currentBucket <= endBucket) {\n const bucket = currentBucket;\n const imageBucket = images[bucket];\n const presetsToFetch: number[] = [];\n\n presets.forEach((preset) => {\n if (!imageBucket || !imageBucket[preset.id]) {\n presetsToFetch.push(preset.id);\n } else if (imageBucket && imageBucket[preset.id] && imageBucket[preset.id].type == WebDataSteps.Error) {\n presetsToFetch.push(preset.id);\n }\n });\n\n // To give an immutable copy to the promise\n const presetsToFetchCopy = [...presetsToFetch];\n\n if (presetsToFetchCopy.length > 0) {\n const presetsToImagesInit: PresetsToImages = {};\n const presetsToImages = presetsToFetch.reduce((sofar, presetId) => {\n sofar[presetId] = webDataLoading();\n\n return sofar;\n }, presetsToImagesInit);\n\n dispatch(setBucketImages({ presetsToImages, startTime: bucket }));\n\n promises.push(\n presetImagesService\n .fetchPresetsImages(\n presetsToFetchCopy,\n DateTime.fromSeconds(bucket),\n DateTime.fromSeconds(bucket + hourInSeconds),\n )\n .then((response) => {\n // isError doesn't work here as the axios error apparently doesn't always have 'name'\n if (!Array.isArray(response)) {\n const presetsToErrorImagesInit: PresetsToImages = {};\n const presetsToErrorImages = presetsToFetch.reduce((sofar, presetId) => {\n sofar[presetId] = webDataErrorSimple({\n message: \"An error occurred while fetching images\",\n });\n\n return sofar;\n }, presetsToErrorImagesInit);\n\n dispatch(setBucketImages({ presetsToImages: presetsToErrorImages, startTime: bucket }));\n } else {\n const presetsToImagesInit: Record = {};\n // Force there to be at least something so it resolves to a success of [] if nothing returned\n const presetsToImagesPrimed: Record = presetsToFetchCopy.reduce(\n (sofar, presetId) => {\n if (!sofar[presetId]) {\n sofar[presetId] = [];\n }\n\n return sofar;\n },\n presetsToImagesInit,\n );\n\n // Add in any images we might of found\n const presetsToImages: Record = response.reduce(\n (sofar, next) => {\n if (!sofar[next.presetId]) {\n sofar[next.presetId] = [];\n }\n\n sofar[next.presetId] = [...sofar[next.presetId], next];\n\n return sofar;\n },\n presetsToImagesPrimed,\n );\n\n // Convert to webdatas for dispatch\n const presetsToWebDataImagesInit: PresetsToImages = {};\n const presetsToWebDataImages = Object.entries(presetsToImages).reduce(\n (sofar, [presetIdStr, images]) => {\n const base = 10;\n const presetId = parseInt(presetIdStr, base);\n\n sofar[presetId] = webDataSuccess(images);\n\n return sofar;\n },\n presetsToWebDataImagesInit,\n );\n\n // Send it!\n dispatch(\n setBucketImages({\n presetsToImages: presetsToWebDataImages,\n startTime: bucket,\n }),\n );\n }\n }),\n );\n }\n\n currentBucket += hourInSeconds;\n }\n },\n);\n","import { webDataNotAsked } from \"@lvt/web-data\";\nimport { Typography, IconButton, Link, Menu, MenuItem } from \"@material-ui/core\";\nimport { MoreVert, ArrowDropUp } from \"@material-ui/icons\";\nimport { DateTime } from \"luxon\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport {\n useStyles,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n} from \"@/common/components/ArchivePage/CameraSection/CameraSectionStyles\";\nimport PresetComponent from \"@/common/components/ArchivePage/Preset/Preset\";\nimport { PresetImagesContext } from \"@/common/contexts/PresetImagesContext\";\nimport { fetchPresetImages, PresetFetchParams } from \"@/store/archives/async\";\nimport { retrieveThumbnails } from \"@/store/archives/selector\";\nimport { RootState, useSelector } from \"@/store/index\";\nimport { debounce } from \"@/utilities/async\";\nimport { Preset, ArchivedVideo, PresetImages, BucketImages } from \"@/utilities/types/archive\";\n\nimport { getExpandedPresetsSet } from \"./CameraSection.utils\";\n\n\ninterface CameraSectionProps {\n id: number;\n name: string;\n presets: Array;\n videos: Array;\n notRecordingReason: string | null;\n canStream: boolean;\n}\n\nexport default function CameraSection({\n id,\n name,\n presets,\n canStream,\n}: CameraSectionProps) {\n const dispatch = useDispatch();\n const [isExpanded, setIsExpanded] = useState(true);\n const [menuAnchor, setMenuAnchor] = useState(null);\n\n const classes = useStyles();\n\n const handleVisibility = () => setIsExpanded((prev) => !prev);\n const handleMenuClose = () => setMenuAnchor(null);\n\n const accordionWidth: number = useSelector((state: RootState) => state.archives.gridAndAccordionWidth);\n const timelineStart: string = useSelector((state: RootState) => state.archives.timelineStart);\n const timeSpan: number = useSelector((state: RootState) => state.archives.timeSpan);\n\n const timelineStartTime = DateTime.fromISO(timelineStart);\n const startTime = timelineStartTime.minus({ minutes: 10 });\n const endTime = timelineStartTime.plus({ seconds: timeSpan + 10 * 60 });\n const thumbnails: BucketImages = useSelector(\n retrieveThumbnails(\n presets.map((preset) => preset.id),\n startTime,\n endTime,\n ),\n );\n\n const presetImagesService = useContext(PresetImagesContext);\n\n const presetImageFetchDebounce = useMemo(() => debounce((state: PresetFetchParams) => {\n dispatch(fetchPresetImages(state));\n }, 200),[presetImagesService, presets, startTime, endTime ]);\n\n\n useEffect(() => {\n presetImageFetchDebounce({ presetImagesService, presets, startTime, endTime });\n }, [timelineStart, timeSpan]);\n\n\n // All the presets that should start expanded\n const expandedPresets = getExpandedPresetsSet({ presets });\n\n return (\n \n \n \n \n \n \n {name}\n \n\n {canStream ? (\n <>\n setMenuAnchor(e.currentTarget)}>\n \n \n \n \n Stream Camera\n \n \n \n ) : (\n <>\n )}\n \n \n {presets.map((preset, index) => {\n const initPresetImage: PresetImages = {};\n const presetThumbnails: PresetImages = Object.entries(thumbnails).reduce(\n (sofar, [startTime, images]) => {\n if (images[preset.id]) {\n sofar[parseInt(startTime, 10)] = images[preset.id];\n } else {\n sofar[parseInt(startTime, 10)] = webDataNotAsked();\n }\n\n return sofar;\n },\n initPresetImage,\n );\n\n return (\n \n );\n })}\n \n \n );\n}\n","import { webDataNotAsked } from \"@lvt/web-data\";\nimport { DateTime } from \"luxon\";\n\nimport { RootState } from \"@/store\";\nimport { hourInSeconds } from \"@/utilities/time\";\nimport { PresetsToImages, BucketImages } from \"@/utilities/types/archive\";\n\n\n// Need a selector that takes the root state and retrieves preset images based of preset ids and the start and stop time\nexport const retrieveThumbnails = (\n presetIds: number[],\n startTime: DateTime,\n endTime: DateTime,\n): ((state: RootState) => BucketImages) => {\n return (state: RootState) => {\n if (startTime > endTime) {\n return {};\n }\n\n const archiveState = state.archives;\n\n const startTimeSeconds = startTime.toSeconds();\n const startBucket = startTimeSeconds - (startTimeSeconds % hourInSeconds);\n const endTimeSeconds = endTime.toSeconds();\n const endBucket = endTimeSeconds - (endTimeSeconds % hourInSeconds);\n\n const presetsImages: BucketImages = {};\n let currentBucket = startBucket;\n\n while (currentBucket <= endBucket) {\n const imagesBucket = archiveState.images[currentBucket];\n const emptyPresetImages: PresetsToImages = {};\n\n presetsImages[currentBucket] = presetIds.reduce((sofar, next) => {\n if (imagesBucket && imagesBucket[next]) {\n sofar[next] = imagesBucket[next];\n } else {\n sofar[next] = webDataNotAsked();\n }\n\n return sofar;\n }, emptyPresetImages);\n\n // Move on to the next bucket\n currentBucket += hourInSeconds;\n }\n\n return presetsImages;\n };\n};\n","export const debounce= (fn: (...args: any[]) => any, ms = 200) => {\n let timeoutId: ReturnType;\n\n return function (this: any, ...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n","import { Preset } from \"@/utilities/types/archive\";\n\n\ninterface GetExpandedPresetsSetArgs {\n presets: Array\n}\n\n/**\n * returns a set of indices indicating which presets should be expanded on load\n */\nexport function getExpandedPresetsSet(args: GetExpandedPresetsSetArgs) {\n const {\n presets,\n } = args;\n\n const expandedPresets = new Set();\n\n const defaultPresetIdx = presets.findIndex(preset => preset.default);\n\n if (defaultPresetIdx >= 0) {\n // found default preset. Add its index in the set.\n expandedPresets.add(defaultPresetIdx);\n } else if (presets.length) {\n // default preset not found and there are presets. Add index 0 to the\n // set.\n expandedPresets.add(0);\n }\n\n return (expandedPresets as Set);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"videoRequestWrapper\":\"E8PsaamHVvZKqY4icZk3\",\"videoRequestAccordionWrapper\":\"CBc3tfbwjxVk_o4EK2fy\",\"videoRequestTimelineWrapper\":\"P9wuXU94lgbJTDkxPtue\",\"handleBar\":\"UKOV4Q8oI_dwz9iqitU3\",\"priorToSelectionDeadZone\":\"qKES674Qjj9tYIq5UCzw\",\"afterSelectionDeadZone\":\"DPg61Rsjoe7BtR8vrZFq\",\"videoRequestSelection\":\"rXOo34boQwJDIlW1Ij5w\"};","import { DateTime } from \"luxon\";\nimport { useRef, useState, useLayoutEffect, useContext } from \"react\";\n\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { setRequestDuration, setRequestStartTime } from \"@/store/archives/slice\";\nimport { RootState, useSelector, useDispatch } from \"@/store/index\";\nimport { ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\nimport classes from \"./VideoRequestOverlay.scss\";\n\n\nexport const VideoRequestOverlay = () => {\n const videoSelectionWrapperRef = useRef(null);\n const endDeadzoneRef = useRef(null);\n const gridAndAccordionWidth: number = useSelector((state: RootState) => state.archives.gridAndAccordionWidth);\n const timelineWidth: number = useSelector((state: RootState) => state.archives.timelineWidth);\n const headerHeight: number = useSelector((state: RootState) => state.archives.dateTimeHeaderHeight);\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const timelineStart: DateTime = useSelector((state: RootState) => DateTime.fromISO(state.archives.timelineStart));\n const timeSpan: number = useSelector((state: RootState) => state.archives.timeSpan);\n const requestStartTime: DateTime = useSelector((state: RootState) =>\n DateTime.fromISO(state.archives.requestStartTime),\n );\n const requestDuration: number = useSelector((state: RootState) => state.archives.requestDuration);\n\n const [draggingRequestStart, setDraggingRequestStart] = useState(false);\n const [draggingSelection, setDraggingSelection] = useState(false);\n const [draggingRequestEnd, setDraggingRequestEnd] = useState(false);\n\n const defaultRequestDuration = 4 * 60; // 4 min in seconds\n const defaultRequestStartTimeOffset = 30 * 60; //28 min in seconds previously. 30 mins now to match with input time on snapshop viewer\n\n const minimumDuration = 60; //seconds\n\n const dispatch = useDispatch();\n\n useLayoutEffect(() => {\n dispatch(setRequestStartTime(timelineStart.plus({ seconds: defaultRequestStartTimeOffset }).toISO()));\n dispatch(setRequestDuration(defaultRequestDuration));\n }, []);\n\n //General Purpose\n const pxPerSec = timelineWidth / timeSpan;\n\n const handleMouseUp = () => {\n setDraggingRequestStart(false);\n setDraggingSelection(false);\n setDraggingRequestEnd(false);\n };\n\n //For Start Time Drag\n const handleMouseDownRequestStart = () => {\n setDraggingRequestStart(true);\n };\n\n const handleMouseMoveRequestStart = (event: React.MouseEvent) => {\n //Only runs clamp logic if recording start value set in unitmeta\n if (\n requestStartTime.toSeconds() + event.movementX / pxPerSec > timelineStart.toSeconds() &&\n requestDuration - event.movementX / pxPerSec > minimumDuration\n ) {\n dispatch(setRequestStartTime(requestStartTime.plus({ seconds: event.movementX / pxPerSec }).toISO()));\n dispatch(setRequestDuration(requestDuration - event.movementX / pxPerSec));\n }\n\n if (requestDuration === minimumDuration && event.movementX < 0) {\n dispatch(setRequestStartTime(requestStartTime.plus({ seconds: event.movementX / pxPerSec }).toISO()));\n dispatch(setRequestDuration(requestDuration - event.movementX / pxPerSec));\n }\n };\n\n //For Selection Drag\n const handleMouseDownSelection = () => {\n setDraggingSelection(true);\n };\n\n const handleMouseMoveSelection = (event: React.MouseEvent) => {\n //Only runs clamp logic if recording start value set in unitmeta\n const requestStartTimeInSeconds = requestStartTime.toSeconds();\n\n if (\n requestStartTimeInSeconds + event.movementX / pxPerSec <\n timelineStart.plus({ hours: 1 }).toSeconds() - requestDuration &&\n requestStartTimeInSeconds + event.movementX / pxPerSec > timelineStart.toSeconds()\n ) {\n dispatch(setRequestStartTime(requestStartTime.plus({ seconds: event.movementX / pxPerSec }).toISO()));\n }\n };\n\n //For EndTime Drag\n const handleMouseDownRequestEnd = () => {\n setDraggingRequestEnd(true);\n };\n const handleMouseMoveRequestEnd = (event: React.MouseEvent) => {\n if (\n requestStartTime.toSeconds() + requestDuration + event.movementX / pxPerSec <\n timelineStart.plus({ hours: 1 }).toSeconds()\n ) {\n dispatch(setRequestDuration(requestDuration + event.movementX / pxPerSec));\n }\n };\n\n //Determines which drag logic to execute\n const handleWhichAspectShouldDrag = (event: React.MouseEvent) => {\n if (draggingRequestStart) {\n handleMouseMoveRequestStart(event);\n } else if (draggingSelection) {\n handleMouseMoveSelection(event);\n } else if (draggingRequestEnd) {\n handleMouseMoveRequestEnd(event);\n }\n };\n\n return (\n <>\n
\n
\n \n \n \n {requestStartTime.setZone(unitMetadata.timezone).toLocaleString(DateTime.TIME_SIMPLE)}\n
\n
\n\n \n\n \n \n {requestStartTime\n .setZone(unitMetadata.timezone)\n .plus({ minutes: requestDuration / 60 })\n .toLocaleString(DateTime.TIME_SIMPLE)}{\" \"}\n
\n \n \n \n \n \n );\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n root: {\n height: \"calc(100vh - 252px)\",\n overflowY: \"scroll\",\n paddingBottom: \"1em\",\n backgroundColor: theme.palette.grey[100],\n },\n skeletonContainer: {\n margin: \"1em 5%\",\n },\n button: {\n borderColor: theme.palette.info.light,\n color: theme.palette.info.main,\n fontSize: 14,\n fontWeight: 600,\n },\n}));\n","import { WebData, WebDataSteps } from \"@lvt/web-data\";\nimport { Box, Button } from \"@material-ui/core\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { useHistory } from \"react-router\";\n\nimport CameraSection from \"@/common/components/ArchivePage/CameraSection/CameraSection\";\nimport { RootState, useSelector } from \"@/store/index\";\nimport { CameraOrCabinetMetadata, isCamera } from \"@/utilities/types/archive\";\n\n\nimport { VideoRequestOverlay } from \"../VideoRequestOverlay/VideoRequestOverlay\";\nimport { useStyles } from \"./CameraListStyles\";\n\n\nexport default function CameraList() {\n const CameraOrCabinetMetadata: WebData = useSelector(\n (state: RootState) => state.archives.camerasOrCabinetsMeta,\n );\n const videoSelectionModeActive: boolean = useSelector((state: RootState) => state.archives.videoSelectionMode);\n const accordionWidth: number = useSelector((state: RootState) => state.archives.gridAndAccordionWidth);\n const history = useHistory();\n\n const isLiveUnitPath = history.location.pathname.includes(\"/live-unit/\");\n\n // Using canRequestVideo is unreliable and isnt getting updated as the page changes from Archive cabinet history to Live unit history.\n // Captured in https://liveviewtech.atlassian.net/browse/WEB-3645\n // const canRequestVideo: boolean = useSelector((state: RootState) => state.archives.canRequestVideo);\n\n const classes = useStyles();\n\n const handleClick = () => history.push(\"requested-video\");\n\n switch (CameraOrCabinetMetadata.type) {\n case WebDataSteps.NotAsked:\n case WebDataSteps.Loading:\n return (\n
\n
\n \n
\n
\n );\n case WebDataSteps.Success:\n return (\n
\n {videoSelectionModeActive && }\n {CameraOrCabinetMetadata.payload.map((cameraOrCabinet: CameraOrCabinetMetadata) => {\n return (\n \n );\n })}\n\n {isLiveUnitPath && \n \n Previously Requested Videos\n \n }\n
\n );\n case WebDataSteps.Error:\n return
;\n }\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme => ({\n arrow: {\n color: theme.palette.grey[700],\n },\n timeline: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n userSelect: \"none\",\n position: \"relative\",\n cursor: \"pointer\",\n },\n tickContainer: {\n cursor: \"ew-resize\",\n overflow: \"hidden\",\n position: \"relative\",\n height: 30,\n width: \"100%\",\n },\n tick: {\n position: \"absolute\",\n top: 0,\n \"& div\": {\n position: \"absolute\",\n top: 16,\n whiteSpace: \"nowrap\",\n transform: \"translateX(-50%)\",\n fontSize: 12,\n fontWeight: \"bold\",\n color: theme.palette.grey[700],\n },\n },\n tickMajor: {\n borderLeft: `1px solid ${theme.palette.grey[700]}`,\n height: 15,\n },\n tickMinor: {\n top: 2,\n borderLeft: `1px solid ${theme.palette.grey[300]}`,\n height: 12,\n },\n triangle: {\n borderTop: `10px solid ${theme.palette.grey[700]}`,\n borderLeft: \"8px solid transparent\",\n borderRight: \"8px solid transparent\",\n position: \"absolute\",\n bottom: 40,\n },\n}));\n","import clsx from \"clsx\";\n\nimport { useStyles } from \"./Timeline.styles\";\n\n\nexport interface TickProps {\n label?: string;\n offset: number;\n major?: boolean;\n}\n\nexport const Tick: React.FC = ({ label, offset, major }) => {\n const classes = useStyles();\n\n return (\n \n {label ?
{label}
: null}\n \n );\n};\n","import { IconButton } from \"@material-ui/core\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport { DateTime } from \"luxon\";\nimport { forwardRef } from \"react\";\n\nimport { DraggableTime, DraggableTimeProps } from \"@/common/components/Draggable/DraggableTime/DraggableTime\";\nimport { useDispatch } from \"@/store\";\nimport { setTimelineStart } from \"@/store/archives/slice\";\n\nimport { Tick } from \"./Tick\";\nimport { useStyles } from \"./Timeline.styles\";\n\n\n/**\n * @typedef TimelineProps\n * @extends DraggableTimeProps\n * @prop {number} intervalDuration - Duration point where a minor tick will appear\n * @prop {number} [majorIntervalEvery] - Number of intervals until a major tick\n */\ninterface TimelineProps extends Omit {\n intervalDuration: number;\n majorIntervalEvery?: number;\n selectedTime: DateTime | null;\n}\n\n\n/**\n * A draggable timeline component.\n */\nexport const Timeline = forwardRef((props, ref) => {\n const { duration, time, intervalDuration, majorIntervalEvery = 10, selectedTime, ...rest } = props;\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const numTicks = duration / intervalDuration;\n const ticks = [];\n\n const timeMs = time.toMillis();\n const flooredTime = DateTime.fromMillis(Math.floor(timeMs / intervalDuration) * intervalDuration, { zone: time.zone });\n\n for (let i = -1; i < numTicks + 1; ++i) {\n const tickTime = flooredTime.plus({ milliseconds: i * intervalDuration });\n const tickTimeMs = tickTime.toMillis();\n const offsetPercent = ((tickTimeMs - timeMs) * 100) / duration;\n const major = tickTimeMs % (majorIntervalEvery * intervalDuration) == 0;\n const label = major ? tickTime.toLocaleString(DateTime.TIME_SIMPLE) : undefined;\n const key = tickTime.toISO();\n\n ticks.push();\n }\n\n const handleArrowClick = (newTime: DateTime) => dispatch(setTimelineStart(newTime.toISO()));\n\n return (\n \n \n selectedTime && handleArrowClick(selectedTime.minus({ hours: 1 }))}>\n \n \n
\n {ticks}\n
\n
\n selectedTime && handleArrowClick(selectedTime)}>\n \n \n
\n
\n );\n});\n\nTimeline.displayName = \"Timeline\";\n","import { DateTime } from \"luxon\";\nimport { useRef, useEffect, useContext } from \"react\";\n\nimport { Timeline } from \"@/common/components/Timeline/Timeline\";\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { useDispatch, RootState, useSelector } from \"@/store\";\nimport { setTimelineWidth, setTimelineStart } from \"@/store/archives/slice\";\nimport { ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\n// import { useStyles } from \"./ArchiveTimeStyles\";\n\n\nconst MINUTE = 60 * 1000;\n\ninterface ArchiveTimelineProps {\n selectedTime: DateTime | null;\n}\n\nconst ArchiveTimeline: React.FC = ({ selectedTime }) => {\n // const classes = useStyles();\n const ref = useRef(null);\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const startTime: DateTime = useSelector((state: RootState) =>\n DateTime.fromISO(state.archives.timelineStart, { zone: unitMetadata.timezone }),\n );\n const timeSpan: number = useSelector((state: RootState) => state.archives.timeSpan);\n const timeDurationMs = timeSpan * 1000;\n\n const dispatch = useDispatch();\n\n const setSourceOfTruthWidth = () => {\n const sourceOfTruthWidth = ref.current?.offsetWidth || 0;\n\n dispatch(setTimelineWidth(sourceOfTruthWidth));\n };\n\n useEffect(() => {\n window.addEventListener(\"load\", setSourceOfTruthWidth);\n window.addEventListener(\"resize\", setSourceOfTruthWidth);\n setSourceOfTruthWidth();\n\n return () => {\n window.removeEventListener(\"load\", setSourceOfTruthWidth);\n window.removeEventListener(\"resize\", setSourceOfTruthWidth);\n };\n }, []);\n\n return (\n
\n {\n dispatch(setTimelineStart(dt.toISO()));\n }}\n selectedTime={selectedTime}\n />\n
\n );\n};\n\nexport default ArchiveTimeline;\n","import { theme } from \"@lvt/material\";\nimport { createTheme, makeStyles } from \"@material-ui/core\";\n\n\nexport const useStyles = makeStyles({\n grid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(10, 10%)\",\n gridTemplateRows: \"auto\",\n padding: \"20px 5% 0.5em 5%\",\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n backgroundColor: theme.palette.background.paper,\n },\n note: {\n gridColumn: \"1 / 3\",\n gridRow: \"1 / 3\",\n paddingRight: \"2em\",\n fontSize: 16,\n color: theme.palette.grey[700],\n },\n inputs: {\n gridColumn: \"3 / 13\",\n gridRow: \"1\",\n display: \"flex\",\n alignItems: \"start\",\n height: \"4.75em\",\n },\n requestVideo: {\n height: 32,\n backgroundColor: theme.palette.info.main,\n color: theme.palette.info.contrastText,\n boxShadow: \"none\",\n textTransform: \"capitalize\",\n \"&:hover\": {\n backgroundColor: theme.palette.info.light,\n boxShadow: \"none\",\n },\n },\n requestVideoSpan: {\n margin: \"0.5em 0 0 auto\",\n },\n dotAndDate: {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"7px\",\n \"& p\": {\n color: theme.palette.grey[700],\n },\n },\n dot: {\n height: 8,\n width: 8,\n borderRadius: \"100%\",\n marginRight: \"0.5em\",\n },\n timeline: {\n gridColumn: \"3 / 13\",\n gridRow: \"2\",\n },\n warning: {\n padding: \"0px 0px\",\n margin: \"0px 0px\",\n color: theme.palette.error.main,\n textAlign: \"center\",\n },\n});\n\nexport const pickerStyles = createTheme({\n palette: {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n },\n overrides: {\n MuiFormLabel: {\n root: {\n padding: \"0.5em 1em\",\n font: `${theme.typography.caption}`,\n },\n },\n MuiFormControl: {\n root: {\n width: \"12em\",\n marginRight: \"1em\",\n borderRadius: \"4px 4px 0 0\",\n backgroundColor: theme.palette.grey[100],\n },\n },\n MuiInputBase: {\n input: {\n font: `${theme.typography.body2}`,\n padding: \"0.5em 0 0.5em 1em\",\n },\n },\n MuiInput: {\n underline: {\n \"&:before\": {\n borderBottom: `1px solid ${theme.palette.primary.main}`,\n },\n },\n },\n MuiInputAdornment: {\n positionEnd: {\n marginBottom: \"16px\",\n },\n },\n MuiPickersDay: {\n daySelected: {\n backgroundColor: theme.palette.secondary.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.secondary.main,\n },\n },\n },\n MuiPickersClockPointer: {\n thumb: {\n borderColor: theme.palette.secondary.dark,\n },\n noPoint: {\n backgroundColor: theme.palette.secondary.dark,\n },\n },\n },\n});\n\nexport const tzStyle = createTheme({\n overrides: {\n MuiFormLabel: {\n root: {\n padding: \"0.5em 1em\",\n font: `${theme.typography.caption}`,\n },\n },\n MuiInputBase: {\n input: {\n font: `${theme.typography.body2}`,\n padding: \"0.5em 0 0.5em 1em\",\n },\n },\n MuiInput: {\n underline: {\n \"&:before\": {\n content: \"none\",\n },\n },\n },\n },\n});\n","import { theme } from \"@lvt/material\";\nimport { createTheme, makeStyles, createStyles } from \"@material-ui/core\";\n\n\nexport const useHeaderStyles = makeStyles(() =>\n createStyles({\n drawer: {\n width: \"100%\", //drawerwidth\n },\n icon: {\n color: theme.palette.common.white,\n \"&:hover\": {\n cursor: \"pointer\",\n color: theme.palette.grey[400],\n },\n },\n pickerBackground: {\n backgroundColor: \"white\",\n },\n modal: {\n width: \"80%\",\n maxHeight: 800,\n },\n paper: {\n width: \"80%\",\n maxHeight: 435,\n },\n button: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"16px\",\n height: \"32px\",\n alignSelf: \"center\",\n backgroundColor: theme.palette.info.main,\n color: theme.palette.info.contrastText,\n \"&:hover\": {\n backgroundColor: theme.palette.info.dark,\n },\n },\n }),\n);\n\nexport const pickerStyles = createTheme({\n palette: {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n },\n overrides: {\n MuiFormLabel: {\n root: {\n font: `${theme.typography.caption}`,\n },\n },\n MuiFormControl: {\n root: {\n width: \"15%\",\n marginBottom: \"2px\",\n marginTop: \"2px\",\n marginRight: \"1em\",\n borderRadius: \"4px 4px 0 0\",\n },\n },\n MuiInputBase: {\n input: {\n font: `${theme.typography.body2}`,\n padding: \"0.5em 0 0.5em 1em\",\n },\n },\n MuiPickersDay: {\n daySelected: {\n backgroundColor: theme.palette.secondary.dark,\n \"&:hover\": {\n backgroundColor: theme.palette.secondary.main,\n },\n },\n },\n MuiPickersClockPointer: {\n thumb: {\n borderColor: theme.palette.secondary.dark,\n },\n noPoint: {\n backgroundColor: theme.palette.secondary.dark,\n },\n },\n },\n});\n","import { theme } from \"@lvt/material\";\nimport { makeStyles, createStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(() =>\n createStyles({\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"fit-content\",\n },\n icon: {\n \"&:hover\": {\n color: \"#D3D3D3\",\n cursor: \"pointer\",\n },\n },\n content: {},\n selection: {\n color: \"rgba(0, 0, 0, 0.54)\",\n // color: theme.palette.warning.main,\n },\n modalFooter: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n },\n cameraRequestStatus: {\n display: \"flex\",\n alignItems: \"center\",\n height: \"100%\",\n },\n loading: {\n color: theme.palette.info.main,\n },\n success: {\n color: theme.palette.success.main,\n },\n failed: {\n color: theme.palette.error.main,\n },\n }),\n);\n","import {\n isProcessed,\n isProcessing,\n WebData,\n webDataErrorSimple,\n webDataLoading,\n WebDataManipulator,\n webDataNotAsked,\n WebDataSteps,\n webDataSuccess,\n} from \"@lvt/web-data\";\nimport Button from \"@material-ui/core/Button\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport { Done, ErrorOutline, Loop } from \"@material-ui/icons\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { DateTime } from \"luxon\";\nimport { useState, useEffect, useRef, useContext } from \"react\";\n\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { VideoRetrievalContext } from \"@/common/contexts/VideoRetrievalContext\";\nimport { RootState, useSelector } from \"@/store/index\";\nimport { logError } from \"@/utilities/api\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\nimport { Camera, isCamera } from \"@/utilities/types/archive\";\n\n\nimport { useStyles } from \"./VideoRequestModalStyles\";\n\n\ninterface VideoRequestModalProps {\n classes: Record<\"paper\", string>;\n id: string;\n onClose: () => void;\n}\n\ntype CameraOption = {\n id: number;\n name: string;\n checked: boolean;\n request: WebData;\n};\n\nexport const VideoRequestModal: React.FC = (props: VideoRequestModalProps) => {\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const videoRetrievalService = useContext(VideoRetrievalContext);\n const requestStartTime: DateTime = useSelector((state: RootState) =>\n DateTime.fromISO(state.archives.requestStartTime, { zone: unitMetadata.timezone }),\n );\n const requestDuration: number = useSelector((state: RootState) => state.archives.requestDuration);\n\n const cameraOptions: CameraOption[] = useSelector((state: RootState) =>\n new WebDataManipulator(state.archives.camerasOrCabinetsMeta)\n .map((cameraOrCabinetsMeta) =>\n cameraOrCabinetsMeta\n .filter(\n (cameraOrCabinetMeta) =>\n isCamera(cameraOrCabinetMeta.record) && cameraOrCabinetMeta.record.canRequestVideo,\n )\n .map((cameraOrCabinetMeta) => {\n const { id, name } = cameraOrCabinetMeta.record as Camera;\n\n return { id, name, checked: false, request: webDataNotAsked() };\n }),\n )\n .unwrapOr([]),\n );\n\n const amountOfCameras = cameraOptions.length;\n const classes = useStyles();\n const { onClose, ...other } = props;\n const radioGroupRef = useRef(null);\n\n const [cameraList, setCameraList] = useState(cameraOptions);\n const checkedCameras = cameraList.filter((camera) => camera.checked);\n const camerasLoading = cameraList.reduce((sofar, camera) => sofar || isProcessing(camera.request), false);\n const camerasLoaded = cameraList.reduce((sofar, camera) => sofar || isProcessed(camera.request), false);\n\n const [allCamerasCheckedState, setAllCamerasCheckedState] = useState(false);\n const [preventAllChangeCheckboxBehavior, setPreventAllChangeCheckboxBehavior] = useState(false);\n const camerasCount = checkedCameras.length;\n\n const handleSingleCheck = (event: React.ChangeEvent, cameraId: number) => {\n //pull out cam you are trying to update\n const camToBeUpdated = cameraList.find((cam) => cam.id === cameraId);\n\n //update checked field\n if (camToBeUpdated) {\n camToBeUpdated.checked = event.target.checked;\n } else {\n // Send error to central logging\n console.log(\"Somehow not found\", cameraId);\n\n return;\n }\n\n //then spread\n setCameraList([...cameraList]);\n\n if (allCamerasCheckedState && !event.target.checked) {\n //Unchecking of all liveunit cameras checkbox\n setPreventAllChangeCheckboxBehavior(true);\n setAllCamerasCheckedState(false);\n }\n };\n\n const handleCheckAllCameras = (event: React.ChangeEvent) => {\n setAllCamerasCheckedState(event.target.checked); //apply useffects logic here and have a if condition in the single check\n setPreventAllChangeCheckboxBehavior(false);\n };\n\n useEffect(() => {\n if (camerasCount === amountOfCameras && !preventAllChangeCheckboxBehavior) {\n setPreventAllChangeCheckboxBehavior(true);\n setAllCamerasCheckedState(true);\n }\n }, [camerasCount]);\n\n useEffect(() => {\n //Updates other checkboxes following handleCheckAllCameras fn\n if (preventAllChangeCheckboxBehavior) {\n setPreventAllChangeCheckboxBehavior(false);\n } else {\n cameraList.map((camera) => {\n camera.checked = allCamerasCheckedState;\n });\n\n setCameraList([...cameraList]);\n }\n }, [allCamerasCheckedState]);\n\n const handleEntering = () => {\n if (radioGroupRef.current != null) {\n radioGroupRef.current.focus();\n }\n };\n\n const handleCancel = () => {\n onClose();\n };\n\n const [isMounted, setIsMounted] = useState(true);\n\n useEffect(() => {\n return () => setIsMounted(false);\n }, []);\n\n const handleOk = () => {\n const requestStartTimeSeconds = requestStartTime.toSeconds();\n const checkedIds = checkedCameras.map((camera) => camera.id);\n\n setCameraList((currentCameraList) => {\n return currentCameraList.map((camera) => {\n if (checkedIds.includes(camera.id)) {\n return { ...camera, request: webDataLoading() };\n }\n\n return camera;\n });\n });\n\n checkedCameras.map((camera) => {\n const title = `${requestStartTime.toFormat(\"HH:mm:ss - MMM d, yyyy - ZZZZ\")} Duration: ${Math.trunc(\n requestDuration,\n )} Seconds`;\n\n videoRetrievalService\n .requestVideoRetrieval(\n camera.id,\n title,\n requestStartTime,\n DateTime.fromSeconds(requestStartTimeSeconds + requestDuration),\n )\n .then((result) => {\n if (isMounted) {\n if (result) {\n setCameraList((currentCameraList) => {\n return currentCameraList.map((cammeraListCamera) => {\n if (camera.id == cammeraListCamera.id) {\n logError(null, result);\n\n return {\n ...cammeraListCamera,\n request: webDataErrorSimple({\n message: \"Unable to request video at this time.\",\n }),\n };\n }\n\n return cammeraListCamera;\n });\n });\n } else {\n setCameraList((currentCameraList) => {\n return currentCameraList.map((cammeraListCamera) => {\n if (camera.id == cammeraListCamera.id) {\n return {\n ...cammeraListCamera,\n request: webDataSuccess(null),\n };\n }\n\n return cammeraListCamera;\n });\n });\n }\n }\n });\n });\n };\n\n const handleDone = () => {\n onClose();\n };\n\n const showCameraIcon = (request: WebData) => {\n switch (request.type) {\n case WebDataSteps.Loading:\n return (\n \n \n   Loading\n \n );\n case WebDataSteps.Success:\n return (\n \n \n   Success\n \n );\n case WebDataSteps.Error:\n return (\n \n \n   Failed\n \n );\n default:\n <>;\n }\n };\n\n const selectionDurationInMinutes = requestDuration / 60;\n\n const partTwoDateFormat = Object.assign({\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n\n return (\n \n \n
\n Confirm Video Request\n {!camerasLoading && !camerasLoaded && (\n \n )}\n
\n
\n \n
\n Selection (\n {selectionDurationInMinutes >= 2\n ? `${Math.round(selectionDurationInMinutes)} minutes`\n : `${Math.round(selectionDurationInMinutes)} minute`}\n )\n
\n
\n {requestStartTime.toLocaleString(DateTime.DATETIME_MED_WITH_WEEKDAY)} {\"- \"}\n {requestStartTime.plus({ minutes: selectionDurationInMinutes }).toLocaleString(partTwoDateFormat)}\n {\", \"}\n {requestStartTime\n .plus({ minutes: selectionDurationInMinutes })\n .toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY)}\n
\n

Request video from

\n \n }\n label=\"All Liveunit Cameras\"\n />\n
\n\n \n \n
\n
\n \n {cameraList.map((camera) => (\n \n \n \n \n ))}\n \n
\n handleSingleCheck(event, camera.id)}\n />\n }\n label={camera.name}\n />\n {showCameraIcon(camera.request)}
\n
\n \n \n \n {camerasLoading || camerasLoaded ? (\n \n ) : (\n <>\n \n \n Request Video\n \n \n )}\n \n \n );\n};\n\nexport default VideoRequestModal;\n","// extracted by mini-css-extract-plugin\nexport default {\"headerContent\":\"dp5WqevLxdZLzrxulTwS\",\"alignment\":\"nefbCcX5UMP7ZUGY9VYr\",\"center\":\"aWyDV9O3MCgFAXoP9lB_\",\"selectionsContainer\":\"TQl0Q2UUqqPhrQcKmfW1\",\"endTimeContainer\":\"XDUfS592EvjknH7xas6A\",\"durationCalcWrapper\":\"JkWbMwXS4rA1cXFQVxni\"};","import LuxonAdapter from \"@date-io/luxon\";\nimport { Button, TextField } from \"@material-ui/core\";\nimport { ThemeProvider } from \"@material-ui/core/styles\";\nimport AccessTimeIcon from \"@material-ui/icons/AccessTime\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport { MaterialUiPickersDate } from \"@material-ui/pickers/typings/date\";\nimport { DateTime } from \"luxon\";\nimport { useContext, useState, useEffect } from \"react\";\n\nimport {\n pickerStyles,\n useHeaderStyles,\n} from \"@/common/components/ArchivePage/VideoRequestHeader/VideoRequestHeaderStyles\";\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport {\n setVideoSelectionMode,\n setTimelineStart,\n setRequestDuration,\n setRequestStartTime,\n} from \"@/store/archives/slice\";\nimport { useDispatch, RootState, useSelector } from \"@/store/index\";\nimport { setHidden } from \"@/store/liveUnitNav/slice\";\nimport { ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\nimport { VideoRequestModal } from \"../VideoRequestModal/VideoRequestModal\";\nimport classes from \"./VideoRequestHeader.scss\";\n\n\nexport const VideoRequestHeader: React.FC = () => {\n const gridAndAccordionWidth: number = useSelector((state: RootState) => state.archives.gridAndAccordionWidth);\n const timelineWidth: number = useSelector((state: RootState) => state.archives.timelineWidth);\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const requestStartTimeString: string = useSelector((state: RootState) => state.archives.requestStartTime);\n const requestStartTime: DateTime = DateTime.fromISO(requestStartTimeString, { zone: unitMetadata.timezone });\n const requestDuration: number = useSelector((state: RootState) => state.archives.requestDuration);\n const timelineStart: string = useSelector((state: RootState) => state.archives.timelineStart);\n\n const headerClasses = useHeaderStyles();\n const [modalOpen, setModalOpen] = useState(false);\n\n const [selectedDate, setSelectedDate] = useState(requestStartTime);\n const [selectedTime, setSelectedTime] = useState(requestStartTime);\n\n const maxDurationInMinutes = 30;\n\n useEffect(() => {\n setSelectedDate(requestStartTime);\n setSelectedTime(requestStartTime);\n }, [requestStartTimeString]);\n\n const handleClickListItem = () => {\n setModalOpen(true);\n };\n\n const handleClose = () => {\n setModalOpen(false);\n };\n\n const dispatch = useDispatch();\n\n const handleVideoSelectionClose = () => {\n dispatch(setVideoSelectionMode(false));\n dispatch(setHidden(false));\n };\n\n const updateRequestStartDate = (datepickerDate: DateTime) => {\n const newDate = datepickerDate.toISODate();\n const diff = requestStartTime.toSeconds() - DateTime.fromISO(timelineStart).toSeconds();\n\n if (selectedTime) {\n const timeLineStartValue = selectedTime\n .minus({ seconds: diff })\n .toISOTime({ includeOffset: true, includePrefix: true });\n\n dispatch(setTimelineStart(`${newDate}${timeLineStartValue}`));\n }\n };\n\n const updateRequestStartTime = (datepickerTime: DateTime) => {\n if (selectedDate) {\n const newDate = selectedDate.toISODate();\n\n const timelineStartDateTime = DateTime.fromISO(timelineStart);\n const diff = requestStartTime.diff(timelineStartDateTime);\n\n if (datepickerTime) {\n const newDateTime = DateTime.fromISO(\n `${newDate}${datepickerTime.toISOTime({ includeOffset: true, includePrefix: true })}`,\n );\n\n if (\n newDateTime > timelineStartDateTime &&\n newDateTime.plus({ seconds: requestDuration }) < timelineStartDateTime.plus({ hours: 1 })\n ) {\n dispatch(setRequestStartTime(newDateTime.toISO()));\n } else {\n const timeLineStartValue = datepickerTime\n .minus(diff)\n .toISOTime({ includeOffset: true, includePrefix: true });\n const difference = requestStartTime.toSeconds() - timelineStartDateTime.toSeconds();\n\n if (datepickerTime.hour === 0 && datepickerTime.minute < difference / 60) {\n // converting seconds to minutes via /60\n //This if clause is to accomodate setting to midnight \"=== 0\" and factor in the offset value to allow appropriate clamping behavior\n dispatch(\n setTimelineStart(\n DateTime.fromISO(`${newDate}${timeLineStartValue}`).minus({ days: 1 }).toISO(),\n ),\n );\n } else {\n dispatch(setTimelineStart(`${newDate}${timeLineStartValue}`));\n }\n }\n }\n }\n };\n\n const handleDateChange = (date: MaterialUiPickersDate) => {\n if (date && unitMetadata.recordingStart) {\n const recordingStart = DateTime.fromISO(unitMetadata.recordingStart);\n\n if (!date.isValid || (date > recordingStart && date < DateTime.now())) {\n if (date.isValid) {\n updateRequestStartDate(date);\n }\n\n setSelectedDate(date);\n }\n }\n };\n\n const handleTimeChange = (time: MaterialUiPickersDate) => {\n if (time && unitMetadata.recordingStart) {\n const recordingStart = DateTime.fromISO(unitMetadata.recordingStart).toSeconds();\n\n // Keep the local time and change timezone only for keyboard inputs\n // Keyboard inputs give time in local timezone\n if (time.zoneName !== unitMetadata.timezone) {\n time = time.setZone(unitMetadata.timezone, { keepLocalTime: true });\n }\n\n const newDatetimeISO = `${selectedDate?.toISODate()}${time.toISOTime({\n includeOffset: true,\n includePrefix: true,\n })}`;\n //From ISO returns time in browser timezone by default. So set the timezone of input time.\n const newDateTime = DateTime.fromISO(newDatetimeISO, { setZone: true });\n\n if (!newDateTime.isValid || (newDateTime.toSeconds() > recordingStart && newDateTime < DateTime.now())) {\n if (newDateTime.isValid) {\n updateRequestStartTime(newDateTime);\n }\n\n setSelectedTime(newDateTime);\n }\n }\n };\n\n const handleDurationChange = (event: React.ChangeEvent) => {\n if (Number(event.target.value) >= maxDurationInMinutes) {\n dispatch(setRequestDuration(maxDurationInMinutes * 60)); // converting from minutes to seconds (request duration is in seconds)\n } else {\n dispatch(setRequestDuration(Number(event.target.value) * 60)); // converting from minutes to seconds (request duration is in seconds)\n }\n };\n\n return (\n
\n
\n
\n \n\n
\n
\n \n \n {\n if (date) updateRequestStartDate(date);\n }}\n onBlur={() => {\n if (!selectedDate?.isValid) setSelectedDate(requestStartTime);\n }}\n style={{ minWidth: \"150px\" }}\n />\n }\n onChange={handleTimeChange}\n onAccept={(time) => {\n if (time && time.isValid) updateRequestStartTime(time);\n }}\n onBlur={() => {\n if (!selectedTime?.isValid) setSelectedTime(requestStartTime);\n }}\n style={{ minWidth: \"150px\" }}\n />\n\n \n \n \n
\n

End

\n
\n {requestStartTime\n ?.plus({ seconds: requestDuration })\n .toLocaleString(DateTime.TIME_SIMPLE)}\n {\" • \"}\n {requestStartTime?.toLocaleString()}\n
\n
\n
\n\n \n
\n
\n {modalOpen && (\n \n )}\n
\n
\n );\n};\n","import { theme } from \"@lvt/material\";\nimport { TextField, Button, Typography, Tooltip } from \"@material-ui/core\";\nimport AccessTimeIcon from \"@material-ui/icons/AccessTime\";\nimport { KeyboardDatePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport { MaterialUiPickersDate } from \"@material-ui/pickers/typings/date\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport clsx from \"clsx\";\nimport { DateTime } from \"luxon\";\nimport { useState, useEffect, useRef, useContext, useMemo } from \"react\";\n\nimport ArchiveTimeline from \"@/common/components/ArchivePage/ArchiveTimeline/ArchiveTimeline\";\nimport { useStyles, pickerStyles, tzStyle } from \"@/common/components/ArchivePage/DateTimeHeader/DateTimeHeaderStyles\";\nimport { LiveUnitMetadataContext } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport {\n setVideoSelectionMode,\n setGridAndAccordionWidth,\n setDateTimeHeaderHeight,\n setTimelineStart,\n} from \"@/store/archives/slice\";\nimport { useDispatch, RootState, useSelector } from \"@/store/index\";\nimport { setHidden } from \"@/store/liveUnitNav/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { ArchiveImagesNavMeta } from \"@/utilities/types/archive\";\n\nimport { VideoRequestHeader } from \"../VideoRequestHeader/VideoRequestHeader\";\n\n\nexport default function DateTimeHeader() {\n const gridRef = useRef(null);\n const headerRef = useRef(null);\n const dispatch = useDispatch();\n\n const setAccordionWidth = () => {\n const gridDateTimeHeaderWidth = gridRef.current?.offsetWidth || 0;\n\n dispatch(setGridAndAccordionWidth(gridDateTimeHeaderWidth * 0.9)); //multiplying by .9 to compensate for set horizontal padding of (5%)\n };\n const setHeaderHeight = () => {\n const headerHeight = headerRef.current?.offsetHeight || 0;\n\n dispatch(setDateTimeHeaderHeight(headerHeight));\n };\n\n useEffect(() => {\n window.addEventListener(\"load\", setAccordionWidth);\n window.addEventListener(\"load\", setHeaderHeight);\n window.addEventListener(\"resize\", setAccordionWidth);\n\n setHeaderHeight();\n setAccordionWidth();\n\n return () => {\n window.removeEventListener(\"load\", setAccordionWidth);\n window.removeEventListener(\"resize\", setAccordionWidth);\n };\n }, []);\n\n const unitMetadata = useContext(LiveUnitMetadataContext);\n const timelineStartString: string = useSelector((state: RootState) => state.archives.timelineStart);\n const timelineStart: DateTime = useMemo(\n () => DateTime.fromISO(timelineStartString, { zone: unitMetadata.timezone }),\n [timelineStartString, unitMetadata],\n );\n const canRequestVideo: boolean = useSelector((state: RootState) => state.archives.canRequestVideo);\n\n const videoSelectionModeActive: boolean = useSelector((state: RootState) => state.archives.videoSelectionMode);\n const [dateInput, setDateInput] = useState(timelineStart.plus({ minutes: 30 }));\n const [timeInput, setTimeInput] = useState(timelineStart.plus({ minutes: 30 })); // pull timezone fromm api response which will be set in store\n\n useEffect(() => {\n setDateInput(timelineStart.plus({ minutes: 30 }));\n setTimeInput(timelineStart.plus({ minutes: 30 }));\n }, [timelineStart]);\n\n const classes = useStyles();\n\n const openVideoSelection = () => {\n dispatch(setVideoSelectionMode(true));\n dispatch(setHidden(true));\n };\n\n const outsideOfBounds = (): boolean => {\n let tooEarly: boolean;\n let afterNow: boolean;\n\n if (unitMetadata.recordingStart) {\n tooEarly =\n DateTime.fromISO(unitMetadata.recordingStart, { zone: unitMetadata.timezone }).diff(\n timelineStart,\n \"seconds\",\n ).seconds > 0;\n afterNow = timelineStart.diff(DateTime.now().setZone(unitMetadata.timezone), \"seconds\").seconds > 0;\n } else {\n tooEarly = DateTime.now().minus({ days: 90 }).diff(timelineStart, \"seconds\").seconds < 0;\n afterNow = timelineStart.diff(DateTime.now(), \"seconds\").seconds > 0;\n }\n\n return tooEarly || afterNow;\n };\n\n const showStatus = !outsideOfBounds() ? theme.palette.secondary.main : theme.palette.error.main;\n\n const renderRecordingStart = (): string => {\n if (!unitMetadata.recordingStart) {\n return DateTime.now().minus({ days: 90 }).toLocaleString(DateTime.DATETIME_FULL);\n }\n\n return DateTime.fromISO(unitMetadata.recordingStart)\n .setZone(unitMetadata.timezone)\n .toLocaleString(DateTime.DATETIME_FULL);\n };\n\n const updateTimelineStartDate = (pickersDate: DateTime | null) => {\n const date = pickersDate?.toISODate();\n const time = timeInput?.toISOTime({ includeOffset: true, includePrefix: true });\n const newDateTimeISO = `${date}${time}`;\n\n if (DateTime.fromISO(newDateTimeISO).isValid) {\n dispatch(setTimelineStart(`${date}${time}`));\n }\n };\n\n const updateTimelineStartTime = (pickersTime: DateTime | null) => {\n const date = dateInput?.toISODate();\n const time = pickersTime?.toISOTime({ includeOffset: true, includePrefix: true });\n\n const newDateTimeISO = `${date}${time}`;\n const newDateTime = DateTime.fromISO(newDateTimeISO);\n const test = newDateTime.minus({ minutes: 30 });\n\n if (test.isValid) {\n dispatch(setTimelineStart(test.toISO()));\n }\n };\n\n const handleDateChange = (date: MaterialUiPickersDate) => {\n if (date?.isValid) {\n updateTimelineStartDate(date);\n }\n\n setDateInput(date);\n };\n\n const handleTimeChange = (time: MaterialUiPickersDate) => {\n if (time) {\n // Keep the local time and change timezone (only for keyboard inputs)\n // Keyboard inputs give time in local timezone\n if (time.zoneName !== unitMetadata.timezone) {\n time = time.setZone(unitMetadata.timezone, { keepLocalTime: true });\n }\n\n let newDateTime;\n\n if (dateInput?.isValid) {\n const newDatetimeISO = `${dateInput?.toISODate()}${time.toISOTime({\n includeOffset: true,\n includePrefix: true,\n })}`;\n\n //From ISO returns time in browser timezone by default. So set the timezone of input time.\n newDateTime = DateTime.fromISO(newDatetimeISO, { setZone: true });\n } else {\n newDateTime = time;\n }\n\n if (newDateTime <= DateTime.now().minus({ minutes: 30 })) {\n if (newDateTime.isValid) {\n updateTimelineStartTime(newDateTime);\n }\n\n setTimeInput(newDateTime);\n }\n }\n };\n\n const now = unitMetadata.recordingStart ? DateTime.now().setZone(unitMetadata.timezone) : DateTime.now();\n const TimelineDateDotConditionalMarginTop = videoSelectionModeActive ? \"25px\" : \"0px\";\n\n return (\n
\n {videoSelectionModeActive && }\n\n
\n
\n \n NOTE:\n \n \n {canRequestVideo\n ? `Unsaved footage before ${renderRecordingStart()} was deleted and is no longer available.`\n : \"This is an Archive Cabinet, and cannot request video.\"}\n \n
\n
\n \n {\n if (!dateInput?.isValid) setDateInput(timelineStart.plus({ minutes: 30 }));\n }}\n />\n }\n onBlur={() => {\n if (!timeInput?.isValid) setTimeInput(timelineStart.plus({ minutes: 30 }));\n }}\n data-testid=\"time-picker\"\n />\n \n \n \n {canRequestVideo ? (\n \n \n \n Select Video\n \n \n \n ) : (\n <>\n )}\n \n
\n
\n
\n
\n {timelineStart.toLocaleString(DateTime.DATE_FULL)}\n
\n \n
\n
\n
\n );\n}\n","export const dispatchUtilFn = (\n dispatchSetCanRequestVideo: { (): { payload: boolean; type: string }; (): void },\n dispatchSetLiveUnitId: { (): { payload: number | null; type: string }; (): void },\n) => {\n dispatchSetCanRequestVideo();\n dispatchSetLiveUnitId();\n};\n","import { WebData, webDataErrorSimple, webDataLoading, WebDataSteps, webDataSuccess, unwrapOr } from \"@lvt/web-data\";\nimport { Box } from \"@material-ui/core\";\nimport { Alert, AlertTitle, Skeleton } from \"@material-ui/lab\";\nimport { useEffect, useState, useContext } from \"react\";\n\nimport CameraList from \"@/common/components/ArchivePage/CameraList/CameraList\";\nimport DateTimeHeader from \"@/common/components/ArchivePage/DateTimeHeader/DateTimeHeader\";\nimport InformationalVideoModalWrapper from \"@/common/components/InformationalVideoModal/InformationalVideoModalWrapper\";\nimport { Page } from \"@/common/components/InformationalVideoModal/types\";\nimport { ArchiveMetadataContext } from \"@/common/contexts/ArchiveMetadataContext\";\nimport { LiveUnitMetadataContextWrapper } from \"@/common/contexts/LiveUnitMetadataContext\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport {\n setLiveUnitId,\n setCamerasOrCabinetsMeta,\n setUnitMeta,\n setCanRequestVideo,\n} from \"@/store/archives/slice\";\nimport { useFullStory } from \"@/utilities/hooks/fullstory\";\nimport {\n ArchiveImagesNavMeta,\n isArchiveImagesNavMeta,\n isCameraOrCabinetMetadata,\n NullArchiveImagesNavMeta,\n} from \"@/utilities/types/archive\";\nimport * as Types from \"@/utilities/types/archive\";\n\nimport { dispatchUtilFn } from \"./ArchivesPage.Utils\";\n\n\nenum ArchivePageTypeTypes {\n LiveUnit = \"LiveUnit\",\n Cabinet = \"Cabinet\",\n}\ninterface ArchivePageType {\n type: T;\n}\ninterface LiveUnitArchivePageType extends ArchivePageType {\n liveUnitId: number;\n}\n\nexport const liveUnitArchivePage = (liveUnitId: number): PageType => ({\n type: ArchivePageTypeTypes.LiveUnit,\n liveUnitId,\n});\n\n\ninterface CabinetArchivePageType extends ArchivePageType {\n cabinetId: number;\n}\n\nexport const cabinetArchivePage = (cabinetId: number): PageType => ({\n type: ArchivePageTypeTypes.Cabinet,\n cabinetId,\n});\n\n// TODO: should this be some word that means cabinet or liveunit in a more generic sense?\nexport type PageType = LiveUnitArchivePageType | CabinetArchivePageType;\nexport interface ArchivePageParams {\n pageType: PageType;\n}\n\nexport const ArchivesPage: React.FC = ({ pageType }) => {\n const archiveMetadataService = useContext(ArchiveMetadataContext);\n const dispatch = useDispatch();\n const FullStory = useFullStory();\n const [navHidden] = useSelector((state) => [state.liveUnitNav.hidden]);\n const unitMeta: WebData = useSelector((state: RootState) => state.archives.unitMeta);\n const [liveUnitMetadata, setLiveUnitMetadata] = useState(\n unwrapOr(unitMeta, NullArchiveImagesNavMeta),\n );\n\n useEffect(() => {\n switch (pageType.type) {\n case ArchivePageTypeTypes.LiveUnit:\n // The state canRequestVideo is used to update the date time headers and optionally show the Select Video button on the history page.\n // One cannot select historic media from an AC.\n // This is NOT checking for user permissions to be able to view the historic media\n dispatchUtilFn(()=>dispatch(setCanRequestVideo(true)),()=>dispatch(setLiveUnitId(pageType.liveUnitId)));\n\n const alreadyFetchedUnit =\n unitMeta.type === WebDataSteps.Success && pageType.liveUnitId === unitMeta.payload.liveUnitId;\n\n if (!alreadyFetchedUnit) {\n dispatch(setUnitMeta(webDataLoading()));\n dispatch(setCamerasOrCabinetsMeta(webDataLoading()));\n\n archiveMetadataService.fetchLiveUnitMetadata(pageType.liveUnitId).then((response) => {\n if (isArchiveImagesNavMeta(response)) {\n setLiveUnitMetadata(response);\n dispatch(setUnitMeta(webDataSuccess(response)));\n\n archiveMetadataService\n .fetchCameraOrCabinetMetadata(response.cameraIds, null)\n .then((response) => {\n if (isCameraOrCabinetMetadata(response)) {\n dispatch(setCamerasOrCabinetsMeta(webDataSuccess(response)));\n } else {\n dispatch(\n setCamerasOrCabinetsMeta(webDataErrorSimple({ message: response.message })),\n );\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to retrieve camera metadata: ${response.message}`,\n }),\n );\n }\n });\n } else {\n setUnitMeta(webDataErrorSimple({ message: response.message }));\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to retrieve live unit metadata: ${response.message}`,\n }),\n );\n }\n });\n }\n\n break;\n case ArchivePageTypeTypes.Cabinet:\n dispatchUtilFn(()=>dispatch(setCanRequestVideo(false)), ()=>dispatch(setLiveUnitId(null)));\n\n const alreadyFetchedCabinet =\n unitMeta.type === WebDataSteps.Success && pageType.cabinetId === unitMeta.payload.liveUnitId;\n\n if (!alreadyFetchedCabinet) {\n dispatch(setUnitMeta(webDataLoading()));\n dispatch(setCamerasOrCabinetsMeta(webDataLoading()));\n\n archiveMetadataService.fetchArchiveCabinetMetadata(pageType.cabinetId).then((response) => {\n if (isArchiveImagesNavMeta(response)) {\n setLiveUnitMetadata(response);\n dispatch(setUnitMeta(webDataSuccess(response)));\n\n archiveMetadataService\n .fetchCameraOrCabinetMetadata(null, [pageType.cabinetId])\n .then((response) => {\n if (isCameraOrCabinetMetadata(response)) {\n dispatch(setCamerasOrCabinetsMeta(webDataSuccess(response)));\n } else {\n dispatch(\n setCamerasOrCabinetsMeta(webDataErrorSimple({ message: response.message })),\n );\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to retrieve archive cabinet metadata: ${response.message}`,\n }),\n );\n }\n });\n } else {\n setUnitMeta(webDataErrorSimple({ message: response.message }));\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to retrieve archive cabinet metadata: ${response.message}`,\n }),\n );\n }\n });\n }\n\n break;\n }\n\n FullStory.event(\n FullStory.names.events.historyPageLoaded,\n pageType.type === ArchivePageTypeTypes.Cabinet ? { archive_cabinet_id: pageType.cabinetId } : { live_unit_id: pageType.liveUnitId },\n );\n }, [pageType]);\n\n const waitOnHeader = () => {\n switch (unitMeta.type) {\n case WebDataSteps.NotAsked:\n case WebDataSteps.Loading:\n return ;\n case WebDataSteps.Success:\n return ;\n case WebDataSteps.Error:\n return (\n \n Error\n This page has failed to load. Please reload and try again.\n \n );\n }\n };\n\n return (\n <>\n \n \n \n {waitOnHeader()}\n \n \n \n \n );\n};\n","export enum OpenButton {\n Lights,\n QuickSettings,\n SpeakerTalkDown,\n Presets,\n QuickDownload,\n Sounds,\n None,\n}\n\nexport enum CenterAnimation {\n Up,\n Down,\n Left,\n Right,\n ZoomIn,\n ZoomOut,\n Home\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\n\nconst useActionButtonStyles = makeStyles((theme: Theme) => createStyles({\n fab: {\n height: \"2.75rem\",\n width: \"2.75rem\",\n backgroundColor: \"rgba(0, 0, 0, 0.40)\",\n color: theme.palette.common.white,\n \"&:hover\": {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.secondary.light,\n },\n boxShadow: \"none\",\n },\n fabItem: {\n marginLeft: \"0.625rem\",\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n mosaicHeader: {\n fontSize: \"16px\",\n },\n mosaicListItem: {\n fontSize: \"14px\",\n },\n active: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.secondary.light,\n },\n}));\n\nexport default useActionButtonStyles;\n","import { ControlService, ToggleVal, controlServiceImpl } from \"@lvt/streaming\";\nimport {\n Box,\n ListItem,\n ListItemText,\n ListItemSecondaryAction,\n Switch,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { Alert as ToastAlert } from \"@material-ui/lab\";\nimport clsx from \"clsx\";\nimport { useSnackbar } from \"notistack\";\nimport { useState, useRef, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport client from \"@/api/client\";\nimport { RelayAction } from \"@/api/streamMetadata\";\nimport { RootState, useSelector } from \"@/store\";\nimport { Severity } from \"@/store/alerts/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\nconst DEFAULT_RELAY_DELAY = 60_000;\n\ninterface LightsButtonItemProps {\n light: RelayAction;\n disableGutters?: boolean;\n}\n\nconst LightsButtonItem: React.FC = ({ light, disableGutters }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage\" });\n\n const [on, setOn] = useState(light.stateDefault ?? false);\n const [attempting, setAttempting] = useState(false);\n const toggleTimeout = useRef>(null);\n const [controlService, setControlService] = useState();\n\n const cameraId = useSelector((state: RootState) => state.cameras.streamingId);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n useEffect(() => {\n if (cameraId) {\n // single camera stream\n setControlService(controlServiceImpl(client, cameraId));\n } else if (light.cameraId) {\n // mosaic stream\n setControlService(controlServiceImpl(client, light.cameraId));\n }\n }, [cameraId, light]);\n\n useEffect(() => {\n // remove timeout on dismount\n return () => {\n if (toggleTimeout.current) {\n window.clearTimeout(toggleTimeout.current);\n toggleTimeout.current = null;\n }\n };\n }, []);\n\n const sendCommand = async (isChecked: boolean, service: ControlService) => {\n const toggle = isChecked ? ToggleVal.On : ToggleVal.Off;\n\n light.relayName !== \"camera_light\"\n ? await service.relay(toggle, light.relayName)\n : await service.cameraLight(toggle);\n };\n\n const onToggleFail = (error: string) => {\n const alert = (\n \n {t(\"errors.toggleFailed\", { message: error })}\n \n );\n\n const key = enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8_000,\n key: \"light-alert\",\n onClick: () => closeSnackbar(key),\n preventDuplicate: true,\n variant: Severity.Error,\n });\n };\n\n const onToggle = (e: React.ChangeEvent) => {\n const isChecked = e.target.checked;\n\n if (controlService) {\n setAttempting(true);\n\n sendCommand(isChecked, controlService).then(() => {\n setOn(isChecked);\n\n // if toggling the light on, set a delayed toggle off\n if (light.stateDefault !== isChecked) {\n toggleTimeout.current = setTimeout(() => {\n sendCommand(isChecked, controlService);\n\n setOn(light.stateDefault ?? isChecked);\n toggleTimeout.current = null;\n }, light.delay ?? DEFAULT_RELAY_DELAY);\n }\n }).catch((error) => {\n onToggleFail(error.message);\n\n setOn(light.stateDefault ?? isChecked);\n }).finally(() => {\n setAttempting(false);\n });\n } else {\n console.error(\"Failed to set controlService\");\n }\n };\n\n const fullStorySecondaryClassName = () => {\n switch (light.relayName) {\n case \"strobe\":\n return FullStory.names.classes.streaming.strobeLight;\n case \"irlight\":\n return FullStory.names.classes.streaming.floodLight;\n case \"camera_light\":\n return FullStory.names.classes.streaming.cameraLight;\n default:\n return \"\";\n }\n };\n\n return (\n \n \n \n \n {attempting && }\n \n \n \n \n );\n};\nexport default LightsButtonItem;\n","import {\n Fab,\n Grid,\n IconButton,\n Popper,\n Fade,\n Card,\n CardHeader,\n List,\n Divider,\n Tooltip,\n makeStyles,\n} from \"@material-ui/core\";\nimport { Close } from \"@material-ui/icons\";\nimport LightIcon from \"@material-ui/icons/EmojiObjects\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RelayAction } from \"@/api/streamMetadata\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useActionButtonStyles from \"../ActionButton.styles\";\nimport LightsButtonItem from \"./LightsButtonItem\";\n\n\nconst useStyles = makeStyles((theme) => {\n return {\n close: {\n position: \"absolute\",\n top: 8,\n right: 8,\n color: theme.palette.primary.contrastText,\n },\n divider: {\n backgroundColor: theme.palette.primary.light,\n },\n lightsList: {\n maxHeight: 400,\n overflowX: \"auto\",\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n popper: {\n zIndex: theme.zIndex.modal,\n marginBottom: 16,\n width: 300,\n marginRight: \"0.625rem\",\n },\n };\n});\n\ninterface LightsButtonProps {\n lights: RelayAction[];\n menuAnchor: HTMLElement | null;\n handleMenu: (button: OpenButton) => void;\n open: boolean;\n}\n\nconst LightsButton: React.FC = ({ lights, menuAnchor, handleMenu, open }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.streamContent\" });\n\n const actionButtonClasses = useActionButtonStyles();\n const styles = useStyles();\n const [showTooltip, setShowTooltip] = useState(false);\n\n const id = open ? \"popper\" : undefined;\n\n const handleClick = () => {\n setShowTooltip(false);\n handleMenu(OpenButton.Lights);\n };\n\n return (\n <>\n \n {({ TransitionProps }) => (\n \n \n handleMenu(OpenButton.None)}\n className={styles.close}\n >\n \n \n \n \n \n {lights.map((light) => (\n \n ))}\n \n \n \n )}\n \n \n !open && setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n title={t(\"lightsButton.lights\")}\n placement=\"top\"\n >\n \n \n \n \n \n \n );\n};\nexport default LightsButton;\n","import globals from \"@lvt/globals\";\nimport {\n Button,\n TextField,\n IconButton,\n Container,\n Grid,\n Dialog,\n DialogContent,\n DialogContentText,\n DialogTitle,\n DialogActions,\n makeStyles,\n} from \"@material-ui/core\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { useState } from \"react\";\n\nimport { useAddPresetMutation } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport { useSelector } from \"@/store\";\n\n\nconst useStyles = makeStyles((theme) => ({\n inputLabel: {\n color: theme.palette.primary.contrastText,\n },\n input: {\n color: theme.palette.primary.contrastText,\n \"&::before\": {\n borderBottomColor: theme.palette.secondary.main,\n },\n \"&::after\": {\n borderBottomColor: theme.palette.secondary.main,\n },\n \"&:hover\": {\n color: theme.palette.primary.contrastText,\n \"&::before\": {\n borderBottomColor: theme.palette.secondary.main,\n },\n \"&::after\": {\n borderBottomColor: theme.palette.secondary.main,\n },\n },\n },\n container: {\n height: 64,\n margin: \"8px 0\",\n },\n extraMargin: {\n marginTop: 12,\n },\n dialogTitle: {\n color: theme.palette.secondary.main,\n },\n dialog: {\n backgroundColor: theme.palette.primary.main,\n },\n linkText: {\n color: theme.palette.secondary.main,\n },\n dialogText: {\n color: theme.palette.primary.contrastText,\n },\n addButton: {\n marginTop: 8,\n },\n}));\n\nexport interface AddPresetProps {\n liveUnitId: number;\n}\n\nconst AddPreset: React.FC = ({ liveUnitId }) => {\n const styles = useStyles();\n\n const [adding, setAdding] = useState(false);\n const [newName, setNewName] = useState(\"\");\n const [alertOpen, setAlertOpen] = useState(false);\n const [saving, setSaving] = useState(false);\n const cameraId = useSelector((state) => state.cameras.streamingId);\n\n const [addPreset] = useAddPresetMutation();\n\n const handleSubmit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n\n if (newName && typeof newName === \"string\" && cameraId) {\n setSaving(true);\n\n addPreset({\n liveUnitId,\n cameraId,\n name: newName,\n }).then(() => {\n setAdding(false);\n setNewName(\"\");\n setAlertOpen(true);\n setSaving(false);\n });\n }\n };\n\n return (\n \n {adding ? (\n
\n \n \n setNewName(e.target.value)}\n value={newName}\n fullWidth\n />\n \n \n \n {saving ? (\n \n \n \n \n \n ) : (\n {\n setNewName(\"\");\n setAdding(false);\n }}\n >\n \n \n )}\n \n \n {saving ? (\n \n \n \n \n \n ) : (\n \n \n \n )}\n \n \n \n
\n ) : (\n }\n aria-label=\"add-preset\"\n onClick={() => setAdding(true)}\n size=\"large\"\n classes={{ root: styles.addButton }}\n >\n New Preset\n \n )}\n setAlertOpen(false)} classes={{ paper: styles.dialog }}>\n Additional action may be required\n \n \n Your preset has been added, but may require additional configuration. To enable patrol,\n archiving, and other features for this preset, please adjust the settings for this camera \n \n HERE\n \n \n \n \n \n \n \n
\n );\n};\nexport default AddPreset;\n","import { controlServiceImpl } from \"@lvt/streaming\";\nimport {\n ListItem,\n ListItemText,\n ListItemSecondaryAction,\n IconButton,\n Input,\n Grid,\n makeStyles,\n} from \"@material-ui/core\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport { useUpdatePresetMutation } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport useActionButtonStyles from \"@/common/components/streaming/ActionButtons/ActionButton.styles\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport { Preset } from \"./PresetsButton\";\n\n\nconst useStyles = makeStyles((theme) => ({\n listItem: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n },\n },\n inputText: {\n color: theme.palette.primary.contrastText + \" !important\",\n },\n editIcon: {\n fill: theme.palette.primary.contrastText,\n },\n}));\n\ninterface PresetsMenuItemProps {\n allowSelfService?: boolean;\n handleMenu: (button: OpenButton) => void;\n liveUnitId: number;\n preset: Preset;\n showEdit: boolean;\n variant?: \"mosaic\" | \"default\";\n cameraId: number | null\n}\n\nconst PresetsMenuItem: React.FC = ({\n allowSelfService,\n handleMenu,\n liveUnitId,\n preset,\n showEdit,\n variant = \"default\",\n cameraId,\n}) => {\n const actionButtonClasses = useActionButtonStyles();\n const styles = useStyles();\n\n const [editing, setEditing] = useState(null);\n const [saving, setSaving] = useState(false);\n\n const [updatePreset] = useUpdatePresetMutation();\n\n const controlService = controlServiceImpl(client, cameraId!); // cameraId should never be null\n\n const handleEdit = () => {\n setEditing(preset.name);\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n if (editing) {\n setSaving(true);\n\n updatePreset({\n liveUnitId,\n presetId: preset.id,\n name: editing,\n }).then(() => {\n setSaving(false);\n setEditing(null);\n });\n }\n };\n\n const handleClick = async () => {\n if (cameraId) {\n await controlService.goToPreset(preset.id);\n\n handleMenu(OpenButton.None);\n }\n };\n\n return (\n \n {editing !== null ? (\n
\n setEditing(e.target.value)}\n autoFocus\n required\n />\n \n ) : (\n \n )}\n\n {showEdit &&\n \n {editing !== null ? (\n \n \n setEditing(null)}>\n \n \n \n \n \n \n \n \n \n ) : saving ? (\n \n \n \n \n \n ) : allowSelfService ? (\n \n \n \n ) : (<>)}\n \n }\n
\n );\n};\nexport default PresetsMenuItem;\n","import globals from \"@lvt/globals\";\nimport { unwrap } from \"@lvt/web-data\";\nimport {\n Card,\n CardHeader,\n Divider,\n Link,\n List,\n ListItem,\n ListItemText,\n ListItemSecondaryAction,\n Fab,\n Popper,\n Fade,\n makeStyles,\n IconButton,\n Grid,\n Tooltip,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport LaunchIcon from \"@material-ui/icons/Launch\";\nimport SecurityIcon from \"@material-ui/icons/Security\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\n\nimport { useSelector } from \"@/store\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useActionButtonStyles from \"../ActionButton.styles\";\nimport AddPreset from \"./AddPreset\";\nimport PresetsMenuItem from \"./PresetsMenuItem\";\n\n\nconst useStyles = makeStyles((theme) => {\n return {\n close: {\n position: \"absolute\",\n top: 8,\n right: 8,\n color: theme.palette.primary.contrastText,\n },\n divider: {\n backgroundColor: theme.palette.primary.light,\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n popper: {\n zIndex: theme.zIndex.modal,\n marginBottom: 16,\n width: 300,\n marginRight: \"0.625rem\",\n },\n presetList: {\n maxHeight: 400,\n overflowX: \"auto\",\n },\n presetListMosaic: {\n maxHeight: 250,\n overflowX: \"auto\",\n },\n settingsLink: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n },\n },\n };\n});\n\nexport interface Preset {\n id: number;\n name: string;\n}\n\ninterface PresetsButtonProps {\n allowSelfService?: boolean,\n menuAnchor: HTMLElement | null;\n handleMenu: (button: OpenButton) => void;\n liveUnitId: number;\n open: boolean;\n presets?: Preset[];\n variant?: \"mosaic\" | \"default\";\n maxMenuHeight?: number\n passedCameraId?: number\n}\n\nconst PresetsButton: React.FC = ({ allowSelfService, menuAnchor, handleMenu, liveUnitId, open, presets, variant = \"default\", maxMenuHeight, passedCameraId }) => {\n const actionButtonClasses = useActionButtonStyles();\n const styles = useStyles();\n const [showTooltip, setShowTooltip] = useState(false);\n const meta = useSelector((state) => unwrap(state.stream.streamMeta));\n const cameraId = passedCameraId ? passedCameraId : useSelector((state) => state.cameras.streamingId);\n\n if (!presets) presets = meta?.presets;\n\n const id = open ? \"popper\" : undefined;\n\n const handleClick = () => {\n setShowTooltip(false);\n handleMenu(OpenButton.Presets);\n };\n\n return (\n <>\n \n {({ TransitionProps }) => (\n \n \n handleMenu(OpenButton.None)} classes={{ root: styles.close }}>\n \n \n \n \n \n {presets?.map((preset) => (\n \n ))}\n {allowSelfService && (<>\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n )}\n \n \n !open && setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n title=\"Presets\"\n placement=\"top\"\n >\n \n \n \n \n \n \n );\n};\nexport default PresetsButton;\n","import {\n Fab,\n Grid,\n Popper,\n Fade,\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Divider,\n IconButton,\n FormControlLabel,\n Checkbox,\n Button,\n Typography,\n Tooltip,\n makeStyles,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Replay5Icon from \"@material-ui/icons/Replay5\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\n\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useActionButtonStyles from \"../ActionButton.styles\";\n\n\nconst useStyles = makeStyles((theme) => {\n return {\n actions: {\n paddingTop: 20,\n },\n checkbox: {\n display: \"block\",\n },\n close: {\n position: \"absolute\",\n top: 8,\n right: 8,\n color: theme.palette.primary.contrastText,\n },\n disabledButton: {\n backgroundColor: \"#555 !important\", // Thanks material-ui!\n },\n divider: {\n backgroundColor: theme.palette.primary.light,\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n popper: {\n zIndex: theme.zIndex.modal,\n marginBottom: 16,\n width: 380,\n marginRight: \"0.625rem\",\n },\n };\n});\n\ninterface QuickDownloadButtonProps {\n currentCamera: { id: number; name: string };\n otherCameras: { id: number; name: string }[];\n onSubmit: (ids: number[]) => void;\n menuAnchor: HTMLElement | null;\n handleMenu: (button: OpenButton) => void;\n open: boolean;\n}\n\nconst QuickDownloadButton: React.FC = ({\n currentCamera,\n otherCameras,\n onSubmit,\n menuAnchor,\n handleMenu,\n open,\n}) => {\n const actionButtonClasses = useActionButtonStyles();\n const styles = useStyles();\n\n const [selectedCameras, setSelectedCameras] = useState([currentCamera.id]);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const id = open ? \"popper\" : undefined;\n\n const handleCheck = (checked: boolean, id: number) => {\n if (checked) {\n setSelectedCameras([...selectedCameras, id]);\n } else {\n const filtered = selectedCameras.filter((cam) => cam !== id);\n\n setSelectedCameras(filtered);\n }\n };\n\n const toggleAll = (e: React.ChangeEvent) => {\n if (e.target.checked) {\n setSelectedCameras([currentCamera.id, ...otherCameras.map((c) => c.id)]);\n } else {\n setSelectedCameras([]);\n }\n };\n\n const handleClick = () => {\n setShowTooltip(false);\n handleMenu(OpenButton.QuickDownload);\n };\n\n return (\n <>\n \n {({ TransitionProps }) => (\n \n \n handleMenu(OpenButton.None)}\n classes={{ root: styles.close }}\n >\n \n \n \n \n \n Request video from\n \n }\n label=\"All Live Unit Cameras\"\n />\n \n handleCheck(e.target.checked, currentCamera.id)}\n />\n }\n label={`${currentCamera.name} (current camera)`}\n classes={{ root: styles.checkbox }}\n />\n {otherCameras.map((camera) => (\n handleCheck(e.target.checked, camera.id)}\n />\n }\n label={camera.name}\n classes={{ root: styles.checkbox }}\n />\n ))}\n \n \n handleMenu(OpenButton.None)}\n >\n Cancel\n \n {\n onSubmit(selectedCameras);\n handleMenu(OpenButton.None);\n }}\n classes={{ disabled: styles.disabledButton }}\n >\n Request Video\n \n \n \n \n \n )}\n \n \n !open && setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n title=\"Quick Download\"\n placement=\"top\"\n >\n \n \n \n \n \n \n );\n};\nexport default QuickDownloadButton;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n close: {\n position: \"absolute\",\n top: 8,\n right: 8,\n color: theme.palette.primary.contrastText,\n },\n divider: {\n backgroundColor: theme.palette.primary.light,\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n popper: {\n zIndex: theme.zIndex.modal,\n marginBottom: 16,\n width: 300,\n marginRight: \"0.625rem\",\n },\n settingsLink: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n },\n },\n}));\n","import globals from \"@lvt/globals\";\nimport { ToggleVal, controlServiceImpl } from \"@lvt/streaming\";\nimport {\n Card,\n Divider,\n Fab,\n Fade,\n Grid,\n Link,\n List,\n ListItem,\n ListItemText,\n ListItemSecondaryAction,\n Popper,\n IconButton,\n CardHeader,\n Switch,\n Tooltip,\n} from \"@material-ui/core\";\nimport { Close, OpenInNew, Settings } from \"@material-ui/icons\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport { RelayAction } from \"@/api/streamMetadata\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { RootState, useDispatch, useSelector } from \"@/store/index\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useActionButtonStyles from \"../ActionButton.styles\";\nimport { useStyles } from \"./QuickSettingsButtonStyles\";\n\n\ninterface Props {\n liveUnitId: number;\n allowHeater: boolean;\n allowSelfService: boolean;\n canConfigure?: boolean;\n heater: RelayAction | null;\n menuAnchor: HTMLElement | null;\n handleMenu: (button: OpenButton) => void;\n open: boolean;\n}\n\nexport const QuickSettingsButton: React.FC = ({\n liveUnitId,\n allowHeater,\n allowSelfService,\n canConfigure = false,\n heater,\n menuAnchor,\n handleMenu,\n open,\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [heaterIsOn, setHeaterIsOn] = useState(false);\n const streamingId = useSelector((state: RootState) => state.cameras.streamingId);\n\n const actionButtonClasses = useActionButtonStyles();\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const id = open ? \"popper\" : undefined;\n\n const controlService = controlServiceImpl(client, streamingId!); // This id should never be null\n\n const handleHeater = async () => {\n const newState = heaterIsOn ? ToggleVal.Off : ToggleVal.On;\n\n if (heater) {\n try {\n // Should this use the heater command?\n await controlService.relay(newState, heater.relayName);\n\n setHeaterIsOn((prevState) => !prevState);\n } catch (e) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `${e}`,\n }),\n );\n }\n }\n };\n\n const handleClick = () => {\n setShowTooltip(false);\n handleMenu(OpenButton.QuickSettings);\n };\n\n return (\n <>\n \n !open && setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n title=\"Quick Settings\"\n placement=\"top\"\n >\n \n \n \n \n \n\n \n {({ TransitionProps }) => (\n \n \n handleMenu(OpenButton.None)}\n >\n \n \n \n \n \n {allowHeater && (\n \n \n \n \n \n \n )}\n\n {allowSelfService && (\n <>\n {canConfigure && (\n \n \n \n \n \n \n \n \n )}\n\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n )}\n \n \n );\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles((theme) => ({\n modal: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n content: {\n color: theme.palette.primary.dark,\n backgroundColor: theme.palette.background.paper,\n outline: \"none\",\n padding: 10,\n borderRadius: 8,\n },\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 6,\n paddingLeft: 16,\n fontWeight: \"bolder\",\n },\n image: {\n maxHeight: \"60vh\",\n },\n featureButton: {\n margin: \"0 10px\",\n textTransform: \"none\",\n backgroundColor: theme.palette.info.main,\n color: theme.palette.primary.contrastText,\n \"&:hover\": {\n backgroundColor: theme.palette.info.dark,\n },\n \"&:disabled\": {\n backgroundColor: theme.palette.info.light,\n },\n },\n}));\n","import { WebData, WebDataSteps, unwrap } from \"@lvt/web-data\";\nimport { Box, Modal, CircularProgress, Typography, IconButton, Button } from \"@material-ui/core\";\nimport { Close, GetApp } from \"@material-ui/icons\";\nimport { saveAs } from \"file-saver\";\nimport { DateTime } from \"luxon\";\n\nimport { useStyles } from \"./SnapshotModalStyles\";\n\n\ninterface SnapshotModalProps {\n image: WebData;\n handleVisible: (arg: boolean) => void;\n visible: boolean;\n}\n\nfunction SnapshotModal(props: SnapshotModalProps) {\n const { image, handleVisible, visible } = props;\n\n const img = unwrap(image);\n const classes = useStyles();\n\n const handleClose = () => handleVisible(false);\n const handleSaveImage = () => img && saveAs(\n `data:image/jpeg;base64,${img}`,\n `snapshot-${DateTime.now().toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)}.jpeg`,\n );\n\n return (\n \n {image.type === WebDataSteps.Loading ? (\n \n ) : (\n \n \n Save Image\n \n }\n >\n Download\n \n \n \n \n \n \n {img && {\"Snapshot}\n \n )}\n \n );\n}\n\nexport default SnapshotModal;\n","import { controlServiceImpl } from \"@lvt/streaming\";\nimport {\n WebData,\n webDataError,\n webDataErrorSimple,\n webDataLoading,\n webDataNotAsked,\n webDataSuccess,\n} from \"@lvt/web-data\";\nimport { Fab, Grid, Tooltip } from \"@material-ui/core\";\nimport PhotoCameraIcon from \"@material-ui/icons/PhotoCamera\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport useActionButtonStyles from \"@/common/components/streaming/ActionButtons/ActionButton.styles\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\nimport SnapshotModal from \"./SnapshotModal/SnapshotModal\";\n\n\nconst SnapshotButton: React.FC = () => {\n const actionButtonClasses = useActionButtonStyles();\n const [snapshotImage, setSnapshotImage] = useState>(webDataNotAsked());\n const [snapshotModalIsOpen, setSnapshotModalIsOpen] = useState(false);\n\n const streamingId = useSelector((state: RootState) => state.cameras.streamingId);\n const dispatch = useDispatch();\n\n const controlService = controlServiceImpl(client, streamingId!); // streamingId should never be null;\n\n const handleSnapshot = async () => {\n setSnapshotModalIsOpen(true);\n setSnapshotImage(webDataLoading());\n\n try {\n const res = await controlService.takeSnapshot();\n\n if (res.data) {\n setSnapshotImage(webDataSuccess(JSON.parse(res.data).image));\n } else {\n setSnapshotModalIsOpen(false);\n setSnapshotImage(webDataError({ status: res.code, body: \"\", message: \"\" }));\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to take snapshot: command proxy error code ${res.code}`,\n }),\n );\n }\n } catch (e) {\n setSnapshotModalIsOpen(false);\n setSnapshotImage(webDataErrorSimple({ message: JSON.stringify(e) }));\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to take snapshot: ${e}`,\n }),\n );\n }\n };\n\n return (\n \n {streamingId ? (\n <>\n \n \n \n \n \n \n \n ) : (\n \n \n \n )}\n \n );\n};\n\nexport default SnapshotButton;\n","import { controlServiceImpl } from \"@lvt/streaming\";\nimport { List, ListItem, ListItemText, ListItemIcon, Container, makeStyles } from \"@material-ui/core\";\nimport PlayIcon from \"@material-ui/icons/PlayCircleFilled\";\nimport Lottie from \"lottie-react\";\nimport { useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport { SpeakerSound } from \"@/api/streamMetadata/types\";\nimport soundWaveAnimation from \"@/assets/animations/soundwave.json\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\ninterface QuickSoundsProps {\n sounds: SpeakerSound[];\n cameraId: number;\n onError?: (error: any) => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n listItem: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n },\n },\n playIcon: {\n fill: theme.palette.primary.contrastText,\n },\n soundAnimation: {\n width: 24,\n marginLeft: 8,\n },\n iconArea: {\n position: \"absolute\",\n right: 0,\n },\n list: {\n maxHeight: 400,\n overflowY: \"auto\",\n },\n}));\n\nconst QuickSounds: React.FC = ({ sounds, cameraId, onError }) => {\n const styles = useStyles();\n\n const [playingId, setPlayingId] = useState(null);\n\n const controlService = controlServiceImpl(client, cameraId);\n\n const handleClick = async (sound: SpeakerSound) => {\n setPlayingId(sound.id);\n\n try {\n await controlService.speakerSound(sound.id);\n } catch (e: any) {\n // TODO: Put back when edge stops returning errors every time\n // setPlayingId(null);\n\n if (onError) {\n onError(e.message);\n }\n }\n };\n\n return (\n \n {sounds.map((sound) => (\n handleClick(sound)}\n classes={{ root: styles.listItem }}\n disabled={playingId !== null && playingId !== sound.id}\n title=\"Play Sound\"\n className={FullStory.names.classes.streaming.quickSound}\n >\n {sound.label}\n \n {playingId !== sound.id ? (\n \n \n \n ) : (\n {\n setPlayingId(null);\n }}\n className={styles.soundAnimation}\n />\n )}\n \n \n ))}\n \n );\n};\n\nexport default QuickSounds;\n","import { Device, Call, TwilioError } from \"./twilio.min.js\";\n\n\nexport type Config = {\n lvtLiveUnitId : string,\n token : string,\n callConnected: ()=>void,\n callStoppedFailure: (error: string)=>void,\n callStoppedSuccess: ()=>void,\n}\nexport type CallControls = {\n muteLocal : ()=>void,\n unmuteLocal : ()=>void,\n hangup : ()=>void,\n}\n\nexport const startTwilioCall = (config: Config):CallControls => {\n\n const lvtLiveUnitId = config.lvtLiveUnitId;\n const token = config.token;\n\n let micAccess = false;\n let connected = false;\n let hangUpInitiatedByUser = false;\n let ended = false;\n let call: Call | undefined;\n\n navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(()=> {\n micAccess = true;\n });\n\n const device = new Device(token, {\n logLevel: 1,\n // Set Opus as our preferred codec. Opus generally performs better, requiring less bandwidth and\n // providing better audio quality in restrained network conditions.\n codecPreferences: [\"opus\", \"pcmu\"],\n });\n\n device.on(\"error\", (error: TwilioError) => {\n console.error(\"Twilio.Device Error: \" + error.message);\n callHangup();\n });\n\n function callAnswered() {\n connected = true;\n config.callConnected();\n }\n\n function callHangup() {\n if (!ended) {\n if (!micAccess) {\n config.callStoppedFailure(\"This feature requires microphone access.\");\n } else if (!connected) {\n config.callStoppedFailure(\"Unable to connect to speaker.\");\n } else if (!hangUpInitiatedByUser) {\n config.callStoppedFailure(\"Speaker disconnected.\");\n } else {\n config.callStoppedSuccess();\n }\n\n endConnection();\n }\n }\n\n async function makeOutgoingCall() {\n const params = {\n LiveUnitId: lvtLiveUnitId,\n };\n\n if (device) {\n console.log(`Attempting to call ${params.LiveUnitId} ...`);\n\n call = await device.connect({ params });\n\n // add listeners to the Call\n // \"accepted\" means the call has finished connecting and the state is now \"open\"\n call.on(\"accept\", callAnswered);\n call.on(\"disconnect\", callHangup);\n call.on(\"cancel\", callHangup);\n call.on(\"error\", callHangup);\n } else {\n console.log(\"Unable to make call.\");\n endConnection();\n }\n }\n\n makeOutgoingCall();\n\n const muteLocal = () => {\n if(call) {\n call.mute();\n }\n };\n\n const unmuteLocal = () => {\n if(call) {\n call.mute(false);\n }\n };\n\n const hangup = () => {\n hangUpInitiatedByUser = true;\n\n if(call) {\n call.disconnect();\n }\n };\n\n\n const handler = ()=>{\n hangup();\n };\n\n window.addEventListener(\"beforeunload\", handler);\n function endConnection() {\n ended = true;\n window.removeEventListener(\"beforeunload\", handler);\n\n if(device) {\n device.destroy();\n call = undefined;\n }\n }\n\n return {\n muteLocal,\n unmuteLocal,\n hangup,\n };\n};\n","import { ToggleMic, controlServiceImpl } from \"@lvt/streaming\";\nimport { unwrap } from \"@lvt/web-data\";\nimport {\n Button,\n CircularProgress,\n Grid,\n makeStyles,\n Fab,\n Card,\n CardHeader,\n Popper,\n Fade,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n ListItemSecondaryAction,\n Typography,\n IconButton,\n Divider,\n Tooltip,\n\n} from \"@material-ui/core\";\nimport { Mic, MicOff, VolumeOff, VolumeUp, Speaker, ArrowForwardIos, MusicNote, Close, KeyboardArrowLeft, Phone, Smartphone } from \"@material-ui/icons\";\nimport clsx from \"clsx\";\nimport { useState, useCallback, useEffect } from \"react\";\n\nimport client from \"@/api/client\";\nimport { useLazySpeakerTalkdownStartQuery } from \"@/api/speakerTalkdown/speakerTalkdownApi\";\nimport useActionButtonStyles from \"@/common/components/streaming/ActionButtons/ActionButton.styles\";\nimport QuickSounds from \"@/common/components/streaming/ActionButtons/QuickSoundsButton/QuickSounds\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { Config, CallControls, startTwilioCall } from \"@/utilities/twilio\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\n\nconst useStyles = makeStyles((theme) => ({\n speakerTalkdownButton: {\n color: theme.palette.primary.contrastText,\n },\n speakerTalkdownIconButton: {\n color: theme.palette.primary.contrastText,\n borderColor: theme.palette.primary.light,\n minWidth: 0,\n padding: 3,\n },\n redButton: {\n backgroundColor: theme.palette.error.main,\n color: \"#ffffff\",\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n },\n close: {\n position: \"absolute\",\n top: 8,\n right: 8,\n color: theme.palette.primary.contrastText,\n },\n back: {\n color: theme.palette.primary.contrastText,\n },\n divider: {\n backgroundColor: theme.palette.primary.light,\n },\n menu: {\n backgroundColor: theme.palette.primary.dark,\n color: theme.palette.primary.contrastText,\n borderRadius: 8,\n },\n popper: {\n zIndex: theme.zIndex.modal,\n marginBottom: 16,\n width: 300,\n marginRight: \"0.625rem\",\n },\n cardContent: {\n padding: 0,\n },\n icon: {\n fill: theme.palette.primary.contrastText,\n },\n headerWithArrow: {\n paddingLeft: 0,\n },\n buttonContainer: {\n padding: \"16px\",\n },\n phoneNumberIcon: {\n minWidth: 30,\n },\n}));\n\ninterface SpeakerButtonProps {\n allowSpeakerTalkdown: boolean;\n liveUnitId: number;\n menuAnchor: HTMLElement | null;\n handleMenu: (button: OpenButton) => void;\n open: boolean;\n}\n\nenum SpeakerState {\n Menu,\n QuickSounds,\n TalkDown\n}\n\nconst SpeakerButtons: React.FC = ({ allowSpeakerTalkdown, liveUnitId, menuAnchor, handleMenu, open }) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [isCallConnected, setIsCallConnected] = useState(false);\n const [isCallConnecting, setIsCallConnecting] = useState(false);\n const [selfMuted, setSelfMuted] = useState(false);\n const [unitMuted, setUnitMuted] = useState(true);\n const [callControls, setCallControls] = useState(null); //todo: Make these reset when call ends\n const [selectedSpeakerState, setSelectedSpeakerState] = useState(allowSpeakerTalkdown ? SpeakerState.Menu : SpeakerState.QuickSounds);\n const [isUnitMuteProcessing, setIsUnitMuteProcessing] = useState(false);\n\n const dispatch = useDispatch();\n\n const meta = useSelector((state) => unwrap(state.stream.streamMeta));\n const speakerSounds = meta?.capabilities.speakerSounds;\n const cameraId = meta?.cameraId;\n\n const actionButtonClasses = useActionButtonStyles();\n const classes = useStyles();\n\n const controlService = controlServiceImpl(client, cameraId!); // cameraId should never be null\n\n const [startSpeakerTalkdown, startSpeakerTalkdownState] = useLazySpeakerTalkdownStartQuery(undefined);\n\n const handleSelectedSpeakerState = (selection: SpeakerState) => {\n setSelectedSpeakerState(selection);\n };\n\n\n // Callbacks passed to the SIP handler\n const callConnected = useCallback(() => {\n setIsCallConnected(true);\n setIsCallConnecting(false);\n }, []);\n const callStoppedFailure = useCallback((error: string) => {\n console.log(\"Call Error\", error);\n setIsCallConnected(false);\n setCallControls(null);\n setSelfMuted(false);\n setUnitMuted(true);\n\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Call failed: ${error}`,\n }),\n );\n\n }, [startSpeakerTalkdownState]);\n const callStoppedSuccess = useCallback(() => {\n setIsCallConnected(false);\n setCallControls(null);\n setSelfMuted(false);\n setUnitMuted(true);\n }, [startSpeakerTalkdownState]);\n\n\n // Utilizing Speaker Talkdown endpoints\n const intiateTalkdown = () => {\n startSpeakerTalkdown(liveUnitId);\n setIsCallConnecting(true);\n };\n\n useEffect(() => {\n const { data, isSuccess, isFetching } = startSpeakerTalkdownState;\n\n if (data && isSuccess && !isFetching) {\n const config: Config = {\n token: data.data.token,\n lvtLiveUnitId: data.data.lvt_live_unit_id,\n callConnected,\n callStoppedFailure,\n callStoppedSuccess,\n };\n\n // The SIP handler passes up some functions to control the call, saved as callControls\n const callControls = startTwilioCall(config);\n\n setCallControls(callControls);\n }\n }, [startSpeakerTalkdownState]);\n\n // Utilizing callControls\n const hangupCall = () => {\n if (callControls) {\n callControls.hangup();\n }\n };\n const muteSelf = () => {\n\n if (callControls) {\n callControls.muteLocal();\n setSelfMuted(true);\n }\n };\n const unmuteSelf = () => {\n if (callControls) {\n callControls.unmuteLocal();\n setSelfMuted(false);\n }\n };\n\n\n const handleUnitMute = async () => {\n setIsUnitMuteProcessing(true);\n\n const newState = unitMuted ? ToggleMic.Unmute : ToggleMic.Mute;\n\n if (cameraId) {\n try {\n await controlService.speakerMic(newState);\n\n newState === ToggleMic.Mute ? setUnitMuted(true) : setUnitMuted(false);\n } catch (e) {\n const muteState = newState === ToggleMic.Mute ? \"mute\" : \"unmute\";\n\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to ${muteState} speaker: ${e}`,\n }),\n );\n } finally {\n setIsUnitMuteProcessing(false);\n }\n }\n };\n\n const unitMuteIcon = isUnitMuteProcessing ? : (unitMuted ? : );\n\n const talkdownContent = (\n <>\n \n \n \n \n \n {meta?.sipPhoneNumber}}\n secondary={EXT: {meta?.sipPin} | Pass: {meta?.clientPasscode}}\n />\n \n \n \n {isCallConnected ? (\n <>\n \n }\n className={clsx(classes.speakerTalkdownButton, {\n [classes.redButton]: isCallConnected,\n })}\n onClick={isCallConnected ? hangupCall : intiateTalkdown}\n size=\"small\"\n >\n End Call\n \n \n \n \n {selfMuted ? : }\n \n \n \n \n {unitMuteIcon}\n \n \n \n ) : (\n : }\n className={classes.speakerTalkdownButton}\n onClick={isCallConnecting ? () => { } : intiateTalkdown}\n size=\"small\"\n >\n Call Unit\n \n )}\n \n \n );\n\n let content: JSX.Element;\n\n switch (selectedSpeakerState) {\n case SpeakerState.Menu:\n if (speakerSounds && speakerSounds?.length && cameraId) {\n content = (\n <>\n handleMenu(OpenButton.None)} classes={{ root: classes.close }}>\n \n \n \n \n \n\n { handleSelectedSpeakerState(SpeakerState.TalkDown); }}\n button\n >\n \n \n \n Speaker}\n />\n \n \n \n \n { handleSelectedSpeakerState(SpeakerState.QuickSounds); }}\n button\n >\n \n \n \n Play Sound}\n />\n \n \n \n \n \n \n );\n } else {\n content = (\n <>\n handleMenu(OpenButton.None)} classes={{ root: classes.close }}>\n \n \n \n \n\n {talkdownContent}\n \n );\n }\n\n break;\n case SpeakerState.QuickSounds:\n if (speakerSounds && speakerSounds?.length && cameraId)\n content = (\n <>\n handleMenu(OpenButton.None)}\n className={classes.close}\n >\n \n \n {allowSpeakerTalkdown ?\n
\n handleSelectedSpeakerState(SpeakerState.Menu)}\n classes={{ root: classes.back }}\n >\n \n \n \n
\n :\n \n }\n \n {\n // TODO: Put back when edge stops returning errors every time\n // dispatch(\n // addAlert({\n // severity: Severity.Error,\n // message: e,\n // }),\n // )\n }}\n />\n \n );\n\n break;\n case SpeakerState.TalkDown:\n content = (\n <>\n handleMenu(OpenButton.None)} classes={{ root: classes.close }}>\n \n \n
\n handleSelectedSpeakerState(SpeakerState.Menu)}\n classes={{ root: classes.back }}\n >\n \n \n \n
\n \n {talkdownContent}\n \n );\n break;\n\n default:\n break;\n }\n\n const id = open ? \"popper\" : undefined;\n\n return (\n <>\n \n {({ TransitionProps }) => (\n \n \n\n
\n {content}\n
\n
\n
\n )}\n \n \n !open && setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n title={allowSpeakerTalkdown ? \"Audio Options\" : \"Quick Sounds\"}\n placement=\"top\"\n >\n handleMenu(OpenButton.SpeakerTalkDown)}\n className={clsx(actionButtonClasses.fab, { [classes.redButton]: isCallConnected }, open && actionButtonClasses.active)}\n >\n \n \n \n \n \n );\n};\n\nexport default SpeakerButtons;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"D8iAvTZXgNFTsNJXNZpx\",\"modalContent\":\"gYDbhnbBWkc79wsmF61z\",\"buttons\":\"O3wLr40LOQRUAwNrYF1B\",\"duration\":\"OC98YKdO0vFmN7OjacHF\"};","import { Button, CircularProgress, InputAdornment, Modal, TextField } from \"@material-ui/core\";\n\nimport { default as cn } from \"./SuspendPatrolModal.scss\";\n\n\ninterface SuspendPatrolModalProps {\n handleSuspend: (arg: number) => void;\n handleInput: (arg: string) => void;\n handleVisible: (arg: boolean) => void;\n streamingId?: number;\n duration: string;\n visible: boolean;\n isProcessing?: boolean;\n}\n\nfunction SuspendPatrolModal(props: SuspendPatrolModalProps) {\n const { handleInput, handleSuspend, handleVisible, streamingId, duration, visible, isProcessing } = props;\n\n return (\n handleVisible(false)} open={visible}>\n
\n

Suspend Patrol

\n minutes,\n }}\n onChange={(e) => handleInput(e.target.value)}\n className={cn.duration}\n value={duration}\n color=\"primary\"\n label=\"Duration\"\n variant=\"outlined\"\n />\n
\n {isProcessing ?\n \n :\n handleSuspend(streamingId || 0)}\n color=\"secondary\"\n variant=\"contained\"\n >\n Confirm\n \n }\n handleVisible(false)}\n color=\"inherit\"\n variant=\"contained\"\n >\n Cancel\n \n
\n
\n
\n );\n}\n\nexport default SuspendPatrolModal;\n","import { controlServiceImpl, ToggleVal } from \"@lvt/streaming\";\nimport {\n unwrap,\n WebData,\n webDataErrorSimple,\n webDataLoading,\n webDataNotAsked,\n WebDataSteps,\n webDataSuccess,\n} from \"@lvt/web-data\";\nimport { Fab, CircularProgress, Grid, Tooltip } from \"@material-ui/core\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport VisibilityOffIcon from \"@material-ui/icons/VisibilityOff\";\nimport clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\n\nimport { getPatrolState } from \"@/api/cameras\";\nimport client from \"@/api/client\";\nimport useActionButtonStyles from \"@/common/components/streaming/ActionButtons/ActionButton.styles\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\nimport SuspendPatrolModal from \"./SuspendPatrolModal/SuspendPatrolModal\";\n\n\n// interface SuspendPatrolButtonProps {\n// }\n\nconst SuspendPatrolButton: React.FC = () => {\n const actionButtonClasses = useActionButtonStyles();\n const [patrolIsSuspended, setPatrolIsSuspended] = useState>(webDataNotAsked());\n const [suspendPatrolDuration, setSuspendPatrolDuration] = useState(\"5\");\n const [patrolModalIsOpen, setPatrolModalIsOpen] = useState(false);\n const [isProcessing, setIsProcessing] = useState(false);\n const streamingId = useSelector((state: RootState) => state.cameras.streamingId);\n const dispatch = useDispatch();\n\n const controlService = controlServiceImpl(client, streamingId!); // streamingId should never be null\n\n useEffect(() => {\n if (streamingId) fetchPatrolState(streamingId);\n }, [streamingId]);\n\n const fetchPatrolState = async (cameraId: number) => {\n setPatrolIsSuspended(webDataLoading());\n\n try {\n const res = await getPatrolState(cameraId);\n\n setPatrolIsSuspended(webDataSuccess(res));\n } catch (e) {\n setPatrolIsSuspended(webDataErrorSimple({ message: JSON.stringify(e) }));\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Unable to fetch patrol state: ${e}`,\n }),\n );\n }\n };\n\n const resumePatrol = async () => {\n setIsProcessing(true);\n\n try {\n await controlService.suspendPatrol(ToggleVal.On);\n } catch (e) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to resume patrol: ${e}`,\n }),\n );\n } finally {\n if (streamingId) fetchPatrolState(streamingId);\n\n setIsProcessing(false);\n }\n };\n\n const suspendPatrol = async (streamingId: number) => {\n setIsProcessing(true);\n\n try {\n await controlService.suspendPatrol(ToggleVal.Off, parseInt(suspendPatrolDuration));\n } catch (e) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Failed to suspend patrol: ${e}`,\n }),\n );\n } finally {\n if (streamingId) fetchPatrolState(streamingId);\n\n setIsProcessing(false);\n }\n\n setPatrolModalIsOpen(false);\n };\n\n const handleSuspendPatrol = () => {\n unwrap(patrolIsSuspended) ? resumePatrol() : setPatrolModalIsOpen(true);\n };\n\n return (\n \n {streamingId && (\n patrolIsSuspended.type === WebDataSteps.Loading ? (\n \n \n \n ) : (\n <>\n \n handleSuspendPatrol()}\n >\n {unwrap(patrolIsSuspended) ? : }\n \n \n \n \n )\n )}\n \n );\n};\n\nexport default SuspendPatrolButton;\n","import CardMedia from \"@material-ui/core/CardMedia\";\nimport { makeStyles, createStyles } from \"@material-ui/core/styles\";\nimport ImageNotSupportedIcon from \"@mui/icons-material/ImageNotSupported\";\nimport { useState } from \"react\";\n\n\nconst useStyles = makeStyles(() =>\n createStyles({\n blank: {\n backgroundColor: \"#E0E0E0\",\n height: \"100%\",\n width: \"100%\",\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n circle: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 60,\n borderRadius: 30,\n backgroundColor: \"white\",\n width: 60,\n },\n icon: {\n color: \"#E0E0E0\",\n backgroundColor: \"white\",\n height: 24,\n width: 24,\n },\n }),\n);\n\ninterface ThumbnailProps {\n unitName: string;\n imageUrl: string;\n}\n\nexport const Thumbnail: React.FC = ({\n unitName,\n imageUrl,\n}) => {\n const styleClasses = useStyles();\n const [loaded, setLoaded] = useState(false);\n const [fetchOk, setFetchOk] = useState(true);\n\n if (fetchOk) {\n return (\n {\n setLoaded(true);\n setFetchOk(false);\n }}\n onLoad={() => {\n setLoaded(true);\n }}\n height={loaded ? \"auto\" : 0}\n />\n );\n } else {\n return(\n
\n
\n \n
\n
\n );\n }\n};\n\nexport default Thumbnail;\n","import Card from \"@material-ui/core/Card\";\nimport { makeStyles, Theme, createStyles } from \"@material-ui/core/styles\";\nimport clsx from \"clsx\";\nimport { Link as LinkRouter } from \"react-router-dom\";\n\nimport { CameraHealth } from \"@/api/streamMetadata\";\n\nimport HealthDot from \"../HealthDot/HealthDot\";\nimport Thumbnail from \"./Thumbnail\";\n\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n border: \"3px solid transparent\",\n borderRadius: 8,\n },\n root: {\n position: \"relative\",\n width: \"100%\",\n height: 0,\n paddingTop: \"28.125%\",\n paddingBottom: \"28.125%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n imageLoaded: {\n backgroundColor: theme.palette.primary.main,\n },\n isActiveUnitNameDiv: {\n position: \"absolute\",\n bottom: 0,\n width: \"100%\",\n padding: \"0.25em\",\n backgroundColor: theme.palette.primary.light,\n opacity: 0.8,\n },\n unitNameDiv: {\n marginLeft: \"0.5em\",\n fontWeight: \"bold\",\n color: theme.palette.primary.contrastText,\n display: \"inline\",\n },\n healthDot: {\n marginLeft: \"3px\",\n position: \"relative\",\n top: \"3px\",\n display: \"inline\",\n },\n subBorder: {\n border: \"2px solid transparent\",\n borderRadius: 4,\n },\n active: {\n border: `2px solid ${theme.palette.secondary.main}`,\n },\n }),\n);\n\ninterface CameraProps {\n cameraId: number;\n unitName: string;\n imageUrl: string;\n active?: boolean;\n health: CameraHealth;\n}\n\nexport const ImgMediaCard: React.FC = ({ cameraId, unitName, health, imageUrl, active }) => {\n const muiClasses = useStyles();\n\n return (\n
\n
\n \n \n {imageUrl &&\n \n }\n
\n \n \n {unitName}\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default ImgMediaCard;\n","import clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\n\nimport { presetImagesService } from \"@/api/services/implementations/presetImages\";\nimport { CameraNavigation } from \"@/store/userLists/types\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\nimport ImgMediaCard from \"../CameraCard/ImgMediaCard\";\nimport classNames from \"./Camera.scss\";\n\n\ninterface CameraProps {\n camera: CameraNavigation;\n active?: boolean;\n}\n\nconst Camera: React.FC = ({ camera, active }) => {\n const [presignedUrl, setPresignedUrl] = useState(\"\");\n\n if (camera.thumbnailPreset) {\n useEffect(() => {\n presetImagesService\n .fetchPresetImagePresignedUrl(camera.thumbnailPreset!)\n .then((response) => {\n setPresignedUrl(response.toString());\n })\n .catch((err) => console.log(\"PRESIGNED URL ERROR: \", err));\n }, [camera]);\n }\n\n return (\n
\n \n
\n );\n};\nexport default Camera;\n","// extracted by mini-css-extract-plugin\nexport default {\"imageCard\":\"X1XpTe1ipFRaWZF8cT6b\"};","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\n\n\nexport const useStyles = makeStyles(theme =>\n createStyles({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n },\n skeletonCamera: {\n minWidth: \"25em\",\n minHeight: \"18em\",\n },\n navHeader: {\n display: \"flex\",\n justifyContent: \"space-around\",\n },\n navText: {\n fontWeight: \"bolder\",\n width: \"100%\",\n textAlign: \"center\",\n },\n camList: {\n overflowX: \"hidden\",\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n flexBasis: 0,\n flexGrow: 1,\n listStyle: \"none\",\n paddingRight: \"5.2em\",\n\n \"& > li\": {\n marginBottom: \"1em\",\n },\n },\n camListHeader: {\n marginBottom: 12,\n color: theme.palette.grey[700],\n },\n camListSection: {\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n camListSectionTopHeader: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: \"0.9rem\",\n },\n camListSectionHeader: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 18,\n },\n loadingCamList: {\n overflow: \"hidden\",\n },\n }),\n);\n","import { Typography } from \"@material-ui/core\";\nimport { useRef, useEffect } from \"react\";\n\nimport { useStyles } from \"./CameraNav.styles\";\n\n\ninterface CameraGroupNameProps {\n name: string,\n active: boolean\n}\n\n\nconst CameraGroupName: React.FC = ({ name, active }) => {\n const muiClasses = useStyles();\n const sectionRef = useRef(null);\n\n useEffect(()=>{\n if (active && sectionRef.current) {\n sectionRef.current.scrollIntoView({ behavior: \"smooth\" });\n }\n }, [active]);\n\n return ({name});\n};\n\nexport default CameraGroupName;\n","import { Typography } from \"@material-ui/core\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport clsx from \"clsx\";\n\nimport { GroupedCameraNavigation } from \"@/store/userLists/types\";\n\nimport Camera from \"../Camera/Camera\";\nimport CameraGroupName from \"./CameraGroupName\";\nimport { useStyles } from \"./CameraNav.styles\";\n\n\ninterface CameraNavProps {\n activeCameraId: number | null;\n cameras?: GroupedCameraNavigation[];\n streamDeactivated?: boolean\n}\n\n\nconst CameraNav: React.FC = ({ activeCameraId, cameras, streamDeactivated }) => {\n const muiClasses = useStyles();\n\n const contents = cameras && cameras.length !== 0\n ? cameras\n .map((cameraGroup) => {\n const activeGroup = cameraGroup.cameras.reduce((isActive, camera)=>{\n return isActive || camera.id === activeCameraId;\n },false);\n\n const validCameras = cameraGroup.cameras.filter((camera)=>{\n if (streamDeactivated) {\n return true;\n } else {\n return camera.active;\n }\n });\n\n if (validCameras.length) {\n return(\n
  • \n \n
    \n {validCameras.map(camera => )}\n
    \n
  • \n );\n }\n })\n : <>;\n\n return (\n
    \n\n {cameras != null\n ? (\n <>\n {cameras.length > 0 && At this Location}\n
    \n {contents}\n
    \n \n )\n : (\n
    \n {Array.from({ length: 5 }, (_, k) => {\n return ();\n })}\n
    \n )}\n\n
    \n );\n};\n\nexport default CameraNav;\n","import { map, unwrap } from \"@lvt/web-data\";\nimport { useEffect, useState } from \"react\";\n\nimport { fetchCameraData } from \"@/api/cameras\";\nimport { StreamMeta } from \"@/api/streamMetadata\";\nimport { fetchUserListsData } from \"@/api/users\";\nimport CameraNav from \"@/common/components/streaming/CameraNav/CameraNav\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { CameraNavigation, GroupedCameraNavigation } from \"@/store/userLists/types\";\n\n\nexport const StreamCamNav: React.FC = () => {\n const user = useSelector((state: RootState) => state.user);\n const selectedCameraId = useSelector((state: RootState) => state.cameras.streamingId);\n const locationId = useSelector((state: RootState) =>\n unwrap(\n map(state.stream.streamMeta, (streamMeta: StreamMeta) => {\n return streamMeta.locationId;\n }),\n ),\n );\n const cameraList = useSelector((state: RootState) => unwrap(state.cameras.cameraList));\n const userPermissions = useSelector((state) => state.user.permissions);\n\n const dispatch = useDispatch();\n const [groupedCameras, setGroupedCameras] = useState(null);\n\n\n useEffect(() => {\n if (user && user.id) {\n dispatch(fetchUserListsData(user.id));\n }\n }, [user]);\n\n useEffect(() => {\n if (selectedCameraId) {\n dispatch(fetchCameraData(selectedCameraId));\n }\n }, [selectedCameraId]);\n\n useEffect(() => {\n if (locationId && cameraList) {\n const newCamerasObj = cameraList.reduce((cams: Record, cam) => {\n if (cam.locationId === locationId) {\n if (cams[cam.liveUnitId]) {\n cams[cam.liveUnitId].push(cam);\n } else {\n cams[cam.liveUnitId] = [cam];\n }\n }\n\n return cams;\n }, {});\n\n const newCamerasList = [];\n\n for (const [liveUnitId, cameras] of Object.entries(newCamerasObj)) {\n const groupedCams = {\n liveUnitId: parseInt(liveUnitId),\n liveUnitName: cameras[0].liveUnitName,\n cameras,\n };\n\n newCamerasList.push(groupedCams);\n }\n\n setGroupedCameras(newCamerasList);\n }\n }, [cameraList, locationId]);\n\n return (\n \n );\n};\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles(() => createStyles({\n root: {\n marginTop: \"0.75em\",\n flexGrow: 1,\n },\n actionButtons: {\n flexWrap: \"nowrap\",\n width: \"auto\",\n position: \"absolute\",\n zIndex: 4,\n bottom: 0,\n right: 0,\n paddingRight: \"1rem\",\n paddingBottom: \"1rem\",\n\n \"@media screen and (max-width: 1280px)\": {\n flexWrap: \"wrap\",\n },\n },\n cameraNavWrapper: {\n paddingTop: \"1.1rem\",\n minWidth: \"25.2em\",\n },\n clientLogo: {\n position: \"absolute\",\n opacity: \"0.45\",\n top: 10,\n left: 16,\n maxHeight: \"6em\",\n zIndex: 2,\n },\n fullScreen: {\n top: 10,\n right: 16,\n },\n panTilt: {\n paddingRight: 10,\n },\n ptz: {\n position: \"absolute\",\n bottom: 10,\n left: 16,\n display: \"flex\",\n },\n streamSectionWrapper: {\n width: \"100%\",\n minWidth: \"40em\",\n flexGrow: 1,\n paddingRight: \"3.4375em\",\n paddingLeft: \"5.2em\",\n },\n streamContainer: {\n position: \"relative\",\n overflow: \"hidden\",\n },\n fadeControls: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n opacity: 0.2,\n transition: \"opacity 0.15s linear 0.5s\",\n \"&:hover\": {\n opacity: 1,\n transitionDelay: \"0s\",\n },\n },\n centerAnimation: {\n position: \"absolute\",\n top: \"calc(50% - 20px)\",\n left: \"calc(50% - 20px)\",\n height: 60,\n width: 60,\n borderRadius: \"50%\",\n backgroundColor: \"black\",\n opacity: \"70%\",\n },\n upArrow: {\n transform: \"rotate(.25turn)\",\n },\n downArrow: {\n transform: \"rotate(.75turn)\",\n },\n leftArrow: {\n transform: \"rotate(0turn)\",\n },\n rightArrow: {\n transform: \"rotate(.5turn)\",\n },\n}));\n","import { theme } from \"@lvt/material\";\nimport { CameraViewers, CheckInResponse } from \"@lvt/streaming\";\nimport { unwrap } from \"@lvt/web-data\";\nimport { Typography, Toolbar } from \"@material-ui/core\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport StarIcon from \"@material-ui/icons/Star\";\nimport StarBorderOutlinedIcon from \"@material-ui/icons/StarBorderOutlined\";\nimport { Skeleton } from \"@material-ui/lab\";\n\nimport { updateFavorites } from \"@/api/users\";\nimport HealthDot from \"@/common/components/streaming/HealthDot/HealthDot\";\nimport { RootState, useDispatch, useSelector } from \"@/store\";\nimport { useFullStory } from \"@/utilities/hooks/fullstory\";\n\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n flexGrow: 1,\n paddingLeft: 0,\n paddingRight: 0,\n justifyContent: \"space-between\",\n },\n camName: {\n fontWeight: \"bolder\",\n marginLeft: \"0.5em\",\n },\n title: {\n flexGrow: 1,\n },\n camHeader: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: \"0.5em\",\n },\n healthDot: {\n width: \"min-content\",\n lineHeight: 0,\n },\n placeholder: {\n width: \"20em\",\n },\n placeholderDot: {\n width: 16,\n height: 16,\n margin: 4,\n marginRight: 9,\n },\n tooltip: {\n fontSize: \"1em\",\n },\n iconBorder: {\n height: \"4em\",\n width: \"4em\",\n borderRadius: \"50%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n cameraViewers: {\n justifyContent: \"flex-end\",\n },\n }),\n);\n\ninterface StreamContentHeadProps {\n checkInData?: CheckInResponse;\n}\n\nconst StreamContentHead: React.FC = ({ checkInData }) => {\n const FullStory = useFullStory();\n const muiClasses = useStyles();\n const streamingId = useSelector((state: RootState) => state.cameras.streamingId);\n const { user } = useSelector((state: RootState) => state);\n const streamMeta = useSelector((state: RootState) => unwrap(state.stream.streamMeta));\n const userLists = useSelector((state: RootState) => unwrap(state.userLists.userListsData));\n const dispatch = useDispatch();\n\n let isFavorite: boolean | null = null; //If favorite list is null, no cameras are fav\n\n if (userLists && userLists.favorites && streamingId) {\n isFavorite = userLists.favorites.cameras.some((favCamera) => favCamera.camId == streamingId);\n }\n\n const handleFavoriteClick = () => {\n if (user && user.id && streamingId) {\n if (isFavorite) {\n FullStory.event(FullStory.names.events.favoriteRemove, {\n is_favorite: false,\n });\n } else {\n FullStory.event(FullStory.names.events.favoriteAdd, {\n is_favorite: true,\n });\n }\n\n updateFavorites(!isFavorite, streamingId, user.id, userLists, dispatch);\n }\n };\n\n const buttonLabel = isFavorite ? \"Unfavorite\" : \"Favorite\";\n const unitHealthBackgroundColor = streamMeta && (streamMeta.cameraHealth.color === \"#82C341\" ? theme.palette.secondary.main : streamMeta.cameraHealth.color);\n\n return (\n \n
    \n {streamMeta ? (\n
    \n \n
    \n ) : (\n \n \n \n )}\n \n {streamMeta ? (\n streamMeta.cameraName\n ) : (\n \n )}\n \n
    \n {isFavorite !== null ? (\n \n handleFavoriteClick()}\n aria-label={buttonLabel}\n >\n {isFavorite ? (\n \n ) : (\n \n )}\n \n \n ) : (\n \n \n \n )}\n {checkInData && }\n
    \n );\n};\n\nexport default StreamContentHead;\n","import {\n Alert as StreamAlert,\n ArrowLottie,\n CameraStream,\n CameraStreamContext,\n CheckInResponse,\n ClickToCenter,\n ClickToCenterPositioning,\n ControlService,\n DimensionsOptions,\n FullScreen,\n PanTilt,\n PanTiltVal,\n StartStreamResponse,\n StreamBanner,\n StreamingStatus,\n Zoom,\n ZoomInLottie,\n ZoomOutLottie,\n ZoomVal,\n cameraStreamServiceImpl,\n controlServiceImpl,\n} from \"@lvt/streaming\";\nimport { unwrap } from \"@lvt/web-data\";\nimport { Grid } from \"@material-ui/core\";\nimport { Alert, Skeleton } from \"@material-ui/lab\";\nimport clsx from \"clsx\";\nimport Lottie, { LottieRef, LottieRefCurrentProps } from \"lottie-react\";\nimport { useSnackbar } from \"notistack\";\nimport React, { useCallback, useEffect, useRef, useState, MutableRefObject } from \"react\";\n\nimport { requestQuickVideo } from \"@/api/cameras\";\nimport client from \"@/api/client\";\nimport { getHeater, getLights } from \"@/api/streamMetadata\";\nimport { RootState, useSelector } from \"@/store\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\nimport { CenterAnimation } from \"@/utilities/types/streaming\";\n\nimport LightsButton from \"../ActionButtons/LightsButton/LightsButton\";\nimport PresetsButton from \"../ActionButtons/PresetsButton/PresetsButton\";\nimport QuickDownloadButton from \"../ActionButtons/QuickDownloadButton/QuickDownloadButton\";\nimport { QuickSettingsButton } from \"../ActionButtons/QuickSettingsButton/QuickSettingsButton\";\nimport SnapshotButton from \"../ActionButtons/SnapshotButton/SnapshotButton\";\nimport SpeakerButtons from \"../ActionButtons/SpeakerButtons/SpeakerButtons\";\nimport SuspendPatrolButton from \"../ActionButtons/SuspendPatrolButton/SuspendPatrolButton\";\nimport { StreamCamNav } from \"../StreamCamNav/StreamCamNav\";\nimport { generateUpdateCameraAndButton } from \"./StreamContent.Utils\";\nimport useStyles from \"./StreamContent.styles\";\nimport StreamContentHead from \"./StreamContentHead\";\n\n\ninterface StreamContentProps {\n liveUnitId?: number;\n cameraId: number;\n allowControlPresets: boolean;\n allowPanTilt: boolean;\n allowClickToCenter: boolean;\n allowZoom: boolean;\n allowHeater: boolean;\n allowLights: boolean;\n allowSpeakerTalkdown: boolean;\n allowQuickSounds: boolean;\n allowSuspendPatol: boolean;\n allowSnapshot: boolean;\n allowSelfService: boolean;\n clientLogo?: string;\n}\n\nconst StreamContent: React.FC = ({\n liveUnitId,\n cameraId,\n allowControlPresets,\n allowPanTilt,\n allowClickToCenter,\n allowZoom,\n allowHeater,\n allowLights,\n allowSpeakerTalkdown,\n allowQuickSounds,\n allowSuspendPatol,\n allowSnapshot,\n allowSelfService,\n clientLogo,\n}) => {\n const meta = useSelector((state) => unwrap(state.stream.streamMeta));\n const videoPreference = useSelector((state) => (state.user.videoPreference == \"html5\" ? \"html5\" : \"webrtc\"));\n const cameraNavList = useSelector((state: RootState) => unwrap(state.cameras.cameraList));\n const divRef = useRef(null);\n const refObserver = useRef();\n const centerAnimationRef = useRef(null) as MutableRefObject;\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const [dimensions, setDimensions] = useState();\n const [buttonState, setButtonState] = useState(OpenButton.None);\n const [cameraList, setCameraList] = useState<{ id: number; name: string }[]>([]);\n const [startStreamData, setStartStreamData] = useState();\n const [checkInData, setCheckInData] = useState();\n const [isFullScreen, setIsFullScreen] = useState(false);\n const [streamingStatus, setStreamingStatus] = useState(StreamingStatus.Initial);\n const [controlService, setControlService] = useState(controlServiceImpl(client, cameraId!)); // cameraId should never be null\n const [showCenterAnimation, setShowCenterAnimation] = useState();\n\n const homePreset = meta?.presets.find((p) => p.isHome) ?? meta?.presets[0];\n const cameraStreamService = cameraStreamServiceImpl(client);\n\n const [currentCameraId, setCurrentCameraId] = useState(cameraId);\n\n // Set the button state to None i.e. no button is open as we toggle between cameras.\n useEffect(generateUpdateCameraAndButton(cameraId, currentCameraId, setCurrentCameraId, setButtonState), [\n cameraId,\n currentCameraId,\n ]);\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Action handlers ////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const startStream = (cameraId: number) => {\n return cameraStreamService.startStream(cameraId).then((data) => setStartStreamData(data));\n };\n\n const checkIn = (cameraId: number, streamRecordId: number) => {\n cameraStreamService\n .checkIn(cameraId, streamRecordId)\n .then((checkInResponse) => {\n setCheckInData(checkInResponse);\n })\n .catch(() => {\n onAlertMessage({\n type: \"checkInFailed\",\n level: \"error\",\n message: \"Check-in failed\",\n });\n });\n };\n\n const handleQuickVideo = async (cameraIds: number[]) => {\n try {\n await requestQuickVideo(cameraIds);\n\n closeSnackbar();\n\n const alert = (\n \n Your video was requested and will be emailed to you shortly\n \n );\n\n enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: \"quick-video-success\",\n preventDuplicate: true,\n variant: \"success\",\n });\n } catch (e) {\n closeSnackbar();\n\n const alert = (\n \n An error occurred while requesting your video. Please try again.\n \n );\n\n enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: \"quick-video-error\",\n preventDuplicate: true,\n variant: \"error\",\n });\n }\n };\n\n const handleMenu = (button: OpenButton) => {\n button === buttonState ? setButtonState(OpenButton.None) : setButtonState(button);\n };\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Event handlers /////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const onAlertMessage = ({ type, level, message }: StreamAlert) => {\n closeSnackbar(type);\n\n const AlertNotification = (\n \n {message}\n \n );\n\n enqueueSnackbar(AlertNotification, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: message,\n preventDuplicate: true,\n variant: level,\n });\n };\n\n const onError = (e: any) => {\n console.log(\"Stream error\", e);\n };\n\n const onStatusChange = (status: StreamingStatus) => {\n // If this check is not present, the onIdle wake up will use stale streaming data\n if (status === StreamingStatus.Idle) setStartStreamData(undefined);\n\n setStreamingStatus(status);\n };\n\n const onFullScreenChange = (isFullScreen: boolean) => {\n setIsFullScreen(isFullScreen);\n };\n\n const onClickHome = () => {\n if (!homePreset) return;\n\n setShowCenterAnimation(CenterAnimation.Home);\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.goToPreset(homePreset.id);\n };\n\n const onClickPanTilt = (direction: PanTiltVal) => {\n switch (direction) {\n case PanTiltVal.Up:\n setShowCenterAnimation(CenterAnimation.Up);\n break;\n case PanTiltVal.Down:\n setShowCenterAnimation(CenterAnimation.Down);\n break;\n case PanTiltVal.Left:\n setShowCenterAnimation(CenterAnimation.Left);\n break;\n case PanTiltVal.Right:\n setShowCenterAnimation(CenterAnimation.Right);\n break;\n }\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.panTilt(direction);\n };\n\n const onClickZoom = (direction: ZoomVal) => {\n switch (direction) {\n case ZoomVal.In:\n setShowCenterAnimation(CenterAnimation.ZoomIn);\n break;\n case ZoomVal.Out:\n setShowCenterAnimation(CenterAnimation.ZoomOut);\n break;\n }\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.zoom(direction);\n };\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n ////////////////////////////////////// React hooks //////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const refStreamContainerCb = useCallback((node: HTMLDivElement | null) => {\n if (refObserver.current) {\n refObserver.current.disconnect();\n }\n\n if (node) {\n const resize = () => {\n const streamBox = node?.getBoundingClientRect();\n\n setDimensions({ width: streamBox?.width, height: streamBox?.height });\n };\n\n refObserver.current = new ResizeObserver(resize);\n\n refObserver.current.observe(node);\n resize();\n }\n }, []);\n\n useEffect(() => {\n if (cameraNavList && cameraId) {\n setCameraList(\n cameraNavList\n .filter((camera) => meta?.otherCameraIds.includes(camera.id))\n .map((camera) => ({ id: camera.id, name: camera.cameraName })),\n );\n }\n }, [cameraNavList, cameraId, meta]);\n\n useEffect(() => {\n if (cameraId) {\n setControlService(controlServiceImpl(client, cameraId));\n setStreamingStatus(StreamingStatus.Initial);\n\n if (startStreamData && parseInt(startStreamData.camString) !== cameraId) {\n setStartStreamData(undefined);\n }\n }\n }, [cameraId, startStreamData]);\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Helper functions ///////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const getCenterAnimation = () => {\n switch (showCenterAnimation) {\n case CenterAnimation.Up:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(classes.centerAnimation, classes.upArrow)}\n />\n );\n\n case CenterAnimation.Down:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(classes.centerAnimation, classes.downArrow)}\n />\n );\n\n case CenterAnimation.Left:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(classes.centerAnimation, classes.leftArrow)}\n />\n );\n\n case CenterAnimation.Right:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(classes.centerAnimation, classes.rightArrow)}\n />\n );\n\n case CenterAnimation.ZoomIn:\n return (\n setShowCenterAnimation(undefined)}\n className={classes.centerAnimation}\n />\n );\n\n case CenterAnimation.ZoomOut:\n return (\n setShowCenterAnimation(undefined)}\n className={classes.centerAnimation}\n />\n );\n\n default:\n return null;\n }\n };\n\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n {cameraId && meta && controlService ? (\n \n \n {(ctx) => (\n <>\n \n
    \n {clientLogo && (\n \n )}\n\n {showCenterAnimation != undefined && getCenterAnimation()}\n\n {streamingStatus === StreamingStatus.Active && (\n <>\n
    \n {allowPanTilt && (\n \n )}\n {allowZoom && }\n
    \n \n {allowClickToCenter && (\n \n controlService.clickToCenter(positioning)\n }\n dimensions={ctx.videoDimensions}\n />\n )}\n \n )}\n\n \n {streamingStatus === StreamingStatus.Active &&\n (allowSpeakerTalkdown || allowQuickSounds) && (\n \n )}\n {streamingStatus === StreamingStatus.Active && cameraId && (\n \n )}\n {streamingStatus === StreamingStatus.Active && allowSuspendPatol && (\n \n )}\n {streamingStatus === StreamingStatus.Active && allowSnapshot && (\n \n )}\n {streamingStatus === StreamingStatus.Active &&\n allowControlPresets &&\n liveUnitId && (\n \n )}\n {streamingStatus === StreamingStatus.Active && allowLights && (\n \n )}\n {(allowSelfService || allowHeater) && (\n \n )}\n \n
    \n \n )}\n
    \n \n ) : (\n \n )}\n
    \n
    \n \n \n \n
    \n );\n};\n\nexport default StreamContent;\n","import { OpenButton } from \"@/utilities/types/streaming\";\n\n\nexport function generateUpdateCameraAndButton(cameraId: number, currentCameraId:number, setCurrentCameraId: React.Dispatch>, setButtonState: React.Dispatch> ) {\n return () => {\n if (cameraId !== currentCameraId) {\n setCurrentCameraId(cameraId);\n setButtonState(OpenButton.None);\n }\n };\n}\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles(() =>\n createStyles({\n root: {\n marginBottom: \"1em\",\n flexGrow: 1,\n display: \"flex\",\n flexDirection: \"column\",\n },\n }),\n);\n","import { unwrap } from \"@lvt/web-data\";\nimport { Box } from \"@material-ui/core\";\nimport { Alert } from \"@material-ui/lab\";\nimport { useSnackbar } from \"notistack\";\nimport { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nimport { fetchStreamMetadata, getHeater, getLights } from \"@/api/streamMetadata\";\nimport InformationalVideoModalWrapper from \"@/common/components/InformationalVideoModal/InformationalVideoModalWrapper\";\nimport { Page } from \"@/common/components/InformationalVideoModal/types\";\nimport StreamContent from \"@/common/components/streaming/StreamContent/StreamContent\";\nimport { RootState, useSelector, useDispatch } from \"@/store\";\nimport { setStreamingCamera } from \"@/store/cameras/slice\";\nimport { useFullStory } from \"@/utilities/hooks/fullstory\";\nimport { storeRecentCamera } from \"@/utilities/localStorage/recentStreamingCameras\";\n\nimport useStyles from \"./StreamPage.styles\";\n\n\nexport interface StreamPageParams {\n cameraId: string;\n}\n\nexport const StreamPage: React.FC = () => {\n const { cameraId: cameraIdString } = useParams();\n const cameraId = parseInt(cameraIdString);\n const dispatch = useDispatch();\n const FullStory = useFullStory();\n const meta = useSelector((state) => unwrap(state.stream.streamMeta));\n const userPermissions = useSelector((state) => state.user.permissions);\n const classes = useStyles();\n\n const { alerts } = useSelector((state: RootState) => state.alerts);\n\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n alerts.forEach((alert) => {\n const AlertLanding = (\n \n {alert.message}\n \n );\n\n enqueueSnackbar(AlertLanding, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: alert.message,\n persist: false,\n preventDuplicate: true,\n variant: alert.severity,\n });\n });\n }, [alerts]);\n\n useEffect(() => {\n dispatch(setStreamingCamera(cameraId));\n dispatch(fetchStreamMetadata(cameraId));\n }, [cameraId]);\n\n useEffect(() => {\n if (meta) {\n storeRecentCamera(meta.liveUnitId, meta.cameraId);\n FullStory.event(FullStory.names.events.streamPageLoaded, { live_unit_id: meta.liveUnitId });\n }\n }, [meta]);\n\n const canStreamIfDeactivated = (\n (meta && userPermissions) ?\n meta.cameraActive ?\n true\n :\n userPermissions.streamDeactivated\n :\n true // we don't have the meta yet, so don't worry about it until we have it.\n );\n\n return (\n \n \n {canStreamIfDeactivated &&\n \n }\n \n );\n};\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles(() =>\n createStyles({\n root: {\n minHeight: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n }),\n);\n","import { Box } from \"@material-ui/core\";\nimport { Switch, Route } from \"react-router-dom\";\n\nimport { LiveUnitNav } from \"@/common/components/LiveUnitNav\";\nimport { RequestedVideosPage } from \"@/common/components/RequestedVideosPage/RequestedVideosPage\";\n\nimport { ArchivesPage, cabinetArchivePage, liveUnitArchivePage } from \"../archives/ArchivesPage\";\nimport { StreamPage } from \"../stream/StreamPage\";\nimport useStyles from \"./LiveUnitPage.styles\";\n\n\nexport const LiveUnitPage: React.FC = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n (\n \n )}\n />\n }\n />\n (\n \n )}\n />\n \n \n );\n};\n","import { createContext } from \"react\";\n\n\nexport interface AlertTileContextType {\n shouldClipsPlay: boolean,\n setShouldClipsPlay: (should: boolean) => void,\n clipProgress: number,\n setClipProgress: (value: number)=>void,\n isSeeking: boolean,\n setIsSeeking: (is: boolean)=>void,\n primaryAlertTimestamp: string,\n currentAlertTimestamp: string,\n setCurrentAlertTimestamp: (timestamp: string)=>void\n}\n\nexport const AlertTileContext = createContext({} as AlertTileContextType);\n","import { AlertMedia, CameraAlertMedia, ImageVideoTuple, TimestampCameraMedia } from \"./types/alert\";\n\n\nexport const groupAlertsByTimestampCameraId = (media: AlertMedia[]) => {\n const groupByTimestamp: Record> = {};\n\n media.forEach((medium: AlertMedia) => {\n if (!groupByTimestamp[medium.mediaTimestamp]) {\n groupByTimestamp[medium.mediaTimestamp] = {};\n }\n\n if (!groupByTimestamp[medium.mediaTimestamp][medium.cameraId]) {\n groupByTimestamp[medium.mediaTimestamp][medium.cameraId] = {} as any;\n }\n\n if (medium.mimeType.includes(\"image\")) {\n groupByTimestamp[medium.mediaTimestamp][medium.cameraId].imageMedia = medium;\n }\n\n if (medium.mimeType.includes(\"video\")) {\n groupByTimestamp[medium.mediaTimestamp][medium.cameraId].videoMedia = medium;\n }\n });\n\n const arrList: TimestampCameraMedia[] = Object.entries(groupByTimestamp).map((group) => {\n const timestamp = group[0];\n const cameraMedia: CameraAlertMedia[] = Object.entries(group[1]).map(([cameraId, media]) => {\n return {\n cameraId: Number(cameraId),\n media,\n };\n });\n\n return { timestamp, cameraMediaList: cameraMedia };\n });\n\n return arrList;\n};\n\nexport const toMMSS = (secs: number) => {\n const sec_round = Math.round(secs);\n const hours = Math.floor(sec_round / 3600);\n const minutes = Math.floor(sec_round / 60) % 60;\n const seconds = sec_round % 60;\n\n return [hours, minutes, seconds]\n .map((v) => (v < 10 ? \"0\" + v : v))\n .filter((v, i) => v !== \"00\" || i > 0)\n .join(\":\");\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nconst opacity = require(\"hex-color-opacity\");\n\n\nexport default makeStyles((theme) => ({\n wrapper: {\n height: \"100%\",\n margin: \"auto\",\n aspectRatio: \"16/9\",\n position: \"relative\",\n },\n cameraRole: {\n height: \"fit-content\",\n \"&:disabled\": {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.common.black,\n },\n },\n cameraRoleIcon: {\n color: theme.palette.secondary.main,\n },\n cameraRoleText: {},\n controlsWrapper: {\n height: \"100%\",\n width: \"100%\",\n position: \"absolute\",\n top: 0,\n left: 0,\n padding: \"1em\",\n },\n controls: {\n height: \"100%\",\n position: \"relative\",\n },\n controlText: {\n color: theme.palette.common.white,\n marginLeft: \"0.5em\",\n fontWeight: \"bolder\",\n textShadow: `-4px 4px 8px ${theme.palette.common.black}`,\n },\n controlButton: {\n color: theme.palette.common.white,\n \"&:hover\": {\n backgroundColor: opacity(theme.palette.common.black, 0.5),\n },\n },\n playAndTime: {\n display: \"flex\",\n alignItems: \"center\",\n },\n controlsTop: {\n top: 0,\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"2.5em\",\n },\n controlsBottom: {\n width: \"100%\",\n position: \"absolute\",\n display: \"flex\",\n flexDirection: \"column\",\n bottom: 0,\n },\n slider: {\n color: theme.palette.common.white,\n },\n}));\n","import { Button, IconButton, Typography } from \"@material-ui/core\";\nimport Slider from \"@material-ui/core/Slider\";\nimport FullscreenIcon from \"@material-ui/icons/Fullscreen\";\nimport FullscreenExitIcon from \"@material-ui/icons/FullscreenExit\";\nimport PauseIcon from \"@material-ui/icons/Pause\";\nimport PlayArrowIcon from \"@material-ui/icons/PlayArrow\";\nimport VideocamOutlinedIcon from \"@material-ui/icons/VideocamOutlined\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\nimport { FC, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { FullScreen, useFullScreenHandle } from \"react-full-screen\";\nimport { useTranslation } from \"react-i18next\";\n\nimport client from \"@/api/client\";\nimport { AlertTileContext } from \"@/common/contexts/AlertTileContextType\";\nimport { toMMSS } from \"@/utilities/alerts\";\nimport { CameraAlertMedia } from \"@/utilities/types/alert\";\nimport MediaErrorPlaceholder from \"@/views/alerts/AlertsPage/AlertItem/AlertClip/MediaErrorPlaceholder/MediaErrorPlaceholder\";\n\nimport useStyles from \"./AlertMediaTile.styles\";\n\n\ninterface AlertMediaTileProps {\n datum: CameraAlertMedia;\n onClose?: () => void;\n}\n\nexport const AlertMediaTile: FC = ({ datum }) => {\n const { primaryAlertTimestamp, currentAlertTimestamp,shouldClipsPlay, setShouldClipsPlay, clipProgress,setClipProgress, isSeeking, setIsSeeking } = useContext(AlertTileContext);\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.alertMediaTile\" });\n const handle = useFullScreenHandle();\n const videoElementRef = useRef(null);\n const classes = useStyles();\n const [showControls, setShowControls] = useState(false);\n const [isFullScreen, setIsFullScreen] = useState(false);\n\n //If video is ready on the server. (Get request to this resource returns a 200)\n const [isVideoReady, setIsVideoReady] = useState(Boolean(datum.media.videoMedia));\n\n //If image is ready on the server. (Get request to this resource returns a 200)\n const [isImageReady, setIsImageReady] = useState(true);\n //Try to check if videos and/images are available for 5 times (each time is 5000 ms)\n const noOfAttempts = 5;\n\n const [noOfAttemptsImage, setNoOfAttemptsImage] = useState(noOfAttempts);\n const [noOfAttemptsVideo, setNoOfAttemptsVideo] = useState(noOfAttempts);\n\n //Should show video only for primary alerts\n const shouldShowVideo = useMemo(()=>{\n return primaryAlertTimestamp === currentAlertTimestamp;\n },[primaryAlertTimestamp, currentAlertTimestamp]);\n\n useEffect(() => {\n if (!shouldShowVideo) return;\n\n if (isVideoReady ) return;\n\n if (noOfAttemptsVideo === 0) return;\n\n const checkVideoUrl = ()=>{\n if (datum.media.videoMedia) {\n //Check if the video is available\n client.get(datum.media.videoMedia.url).then((res)=>{\n if (res.status === 200) {\n setIsVideoReady(true);\n setNoOfAttemptsVideo(noOfAttempts);\n }\n }).catch(()=>{ //Set interval to keep trying\n setIsVideoReady(false);\n setNoOfAttemptsVideo(noOfAttemptsVideo-1);\n });\n }\n };\n //TODO: Figure out setInterval\n const id = setInterval(checkVideoUrl,5000);\n // ASK\n\n checkVideoUrl();\n\n return ()=>clearInterval(id);\n }, [noOfAttempts, noOfAttemptsVideo, isVideoReady, shouldShowVideo]);\n\n useEffect(() => {\n if (isImageReady || isVideoReady ) return;\n\n if (noOfAttemptsImage === 0) return;\n\n const checkImageUrl = ()=>{\n if(datum.media.imageMedia) {\n //Check if the video is available\n client.get(datum.media.imageMedia.url).then((res)=>{\n if (res.status === 200) {\n setIsImageReady(true);\n setNoOfAttemptsImage(noOfAttempts);\n }\n }).catch(()=>{ //Set interval to keep trying\n setIsImageReady(false);\n setNoOfAttemptsImage(noOfAttemptsImage-1);\n });\n }\n };\n //TODO: Figure out setInterval\n const id = setInterval(checkImageUrl,5000);\n // ASK\n\n checkImageUrl();\n\n return ()=>clearInterval(id);\n }, [noOfAttempts,noOfAttemptsImage, isImageReady, isVideoReady]);\n\n useEffect(() => {\n if (videoElementRef.current) {\n shouldClipsPlay ? videoElementRef.current.play() : videoElementRef.current.pause();\n }\n }, [shouldClipsPlay, videoElementRef]);\n\n const totalDuration = videoElementRef.current?.duration || 0;\n\n useEffect(()=>{\n if (!isSeeking) return;\n\n if (videoElementRef.current) {\n videoElementRef.current.currentTime = clipProgress;\n }\n }, [clipProgress, isSeeking]);\n\n const handleOnTimeUpdate = useCallback(() => {\n if (videoElementRef.current) {\n const currentTime = videoElementRef.current.currentTime;\n\n setClipProgress(currentTime);\n\n }\n }, [videoElementRef, clipProgress]);\n\n const cameraRole = datum.media.imageMedia ? datum.media.imageMedia.cameraRole : undefined;\n\n // How do you know how long to wait for video\n return(\n {\n (shouldShowVideo && isVideoReady &&\n datum.media.videoMedia\n )\n &&\n
    \n setIsVideoReady(false)}\n />\n\n {\n setShowControls(true)}\n onMouseLeave={()=> setShowControls(false)}>\n
    \n
    \n {cameraRole ? }\n >\n {t(`cameraRole.${cameraRole}`, cameraRole)}\n : }\n {showControls && (isFullScreen\n ?\n { handle.exit();setIsFullScreen(false);}}>\n \n \n :\n { handle.enter();setIsFullScreen(true);}}>\n \n \n )}\n
    \n {showControls &&
    \n
    \n setShouldClipsPlay(!shouldClipsPlay)}>\n {shouldClipsPlay ? : }\n \n \n {`${toMMSS(clipProgress)}/${toMMSS(totalDuration)}`}\n \n
    \n {\n setIsSeeking(true);\n\n if(videoElementRef.current) {\n setClipProgress(newValue);\n }\n }}\n onChangeCommitted={(_e: any, newValue: any)=>{\n if(videoElementRef.current) {\n setClipProgress(newValue);\n }\n\n setIsSeeking(false);\n }}\n />\n
    }\n
    \n
    }\n
    \n }\n {(!shouldShowVideo || !isVideoReady) && isImageReady\n && datum.media.imageMedia &&\n
    \n setIsImageReady(false)}\n />\n {\n setShowControls(true)}\n onMouseLeave={()=> setShowControls(false)}>\n
    \n
    \n {cameraRole ? }\n >\n {t(`cameraRole.${cameraRole}`, cameraRole)}\n :\n }\n {showControls && (isFullScreen\n ?\n { handle.exit();setIsFullScreen(false);}}>\n \n \n :\n { handle.enter();setIsFullScreen(true);}}>\n \n \n )}\n
    \n
    \n
    }\n \n }\n {!isVideoReady &&\n !isImageReady &&\n
    \n \n
    \n}\n );\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n item: {\n backgroundColor: theme.palette.grey[900],\n height: \"100%\",\n width: \"100%\",\n },\n}));\n","import { DimensionsOptions } from \"@lvt/streaming\";\nimport { createContext, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\";\n\nimport useStyles from \"@/common/components/liveUnitMosaic/Mosaic/MosaicItem/MosaicItem.styles\";\n\n\nexport type BaseMosaicItem = { cameraId: number | string }\n\ninterface MosaicItemProps {\n nTiles: number;\n}\n\n\nexport const MosaicItemDimensionsContext = createContext({});\n\nconst MosaicItem = ({ nTiles, children }: PropsWithChildren) => {\n const [height, setHeight] = useState(50);\n const [width, setWidth] = useState(50);\n const classes = useStyles();\n const refObserver = useRef();\n const [dimensions, setDimensions] = useState({});\n\n useEffect(() => {\n if (nTiles <= 1) {\n setHeight(100);\n setWidth(100);\n } else if (nTiles <= 2) {\n setHeight(100 / 2);\n setWidth(100);\n } else if (nTiles <= 4) {\n setHeight(100 / 2);\n setWidth(100 / 2);\n } else if (nTiles <= 6) {\n setHeight(100 / 2);\n setWidth(100 / 3);\n } else if (nTiles <= 9) {\n setHeight(100 / 3);\n setWidth(100 / 3);\n } else if (nTiles <= 12) {\n setHeight(100 / 3);\n setWidth(100 / 4);\n } else if (nTiles <= 16) {\n setHeight(100 / 4);\n setWidth(100 / 4);\n } else if (nTiles <= 20) {\n setHeight(100 / 4);\n setWidth(100 / 5);\n } else if (nTiles <= 25) {\n setHeight(100 / 5);\n setWidth(100 / 5);\n } else if (nTiles <= 30) {\n setHeight(100 / 6);\n setWidth(100 / 5);\n } else if (nTiles <= 36) {\n setHeight(100 / 6);\n setWidth(100 / 6);\n }\n }, [nTiles]);\n\n const refStreamContainerCb = useCallback((node: HTMLDivElement | null) => {\n if (refObserver.current) {\n refObserver.current.disconnect();\n }\n\n if (node) {\n const resize = () => {\n const streamBox = node?.getBoundingClientRect();\n\n setDimensions({ width: streamBox?.width, height: streamBox?.height });\n };\n\n refObserver.current = new ResizeObserver(resize);\n\n refObserver.current.observe(node);\n resize();\n }\n }, []);\n\n const margin = 1.5;\n\n return (\n
    \n
    \n \n {children}\n \n
    \n
    \n\n );\n};\n\nexport default MosaicItem;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles(() => ({\n actionButtons: {\n display: \"flex\",\n flexWrap: \"nowrap\",\n position: \"absolute\",\n zIndex: 4,\n bottom: 10,\n right: 10,\n \"& > button\": {\n marginRight: 8,\n },\n },\n fadeControls: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n opacity: 0.2,\n transition: \"opacity 0.15s linear 0.5s\",\n \"&:hover\": {\n opacity: 1,\n transitionDelay: \"0s\",\n },\n },\n fullscreen: {\n top: 10,\n right: 10,\n },\n panTilt: {\n paddingRight: 10,\n },\n ptz: {\n display: \"flex\",\n position: \"absolute\",\n bottom: 10,\n left: 10,\n },\n\n // Lottie animations\n centerAnimation: {\n position: \"absolute\",\n top: \"calc(50% - 20px)\",\n left: \"calc(50% - 20px)\",\n height: 60,\n width: 60,\n borderRadius: \"50%\",\n backgroundColor: \"black\",\n opacity: \"70%\",\n },\n upArrow: {\n transform: \"rotate(.25turn)\",\n },\n downArrow: {\n transform: \"rotate(.75turn)\",\n },\n leftArrow: {\n transform: \"rotate(0turn)\",\n },\n rightArrow: {\n transform: \"rotate(.5turn)\",\n },\n}));\n","import globals from \"@lvt/globals\";\nimport {\n Alert as StreamAlert,\n ArrowLottie,\n CameraStream,\n CameraStreamContext,\n cameraStreamServiceImpl,\n CheckInResponse,\n ClickToCenter,\n ControlService,\n controlServiceImpl,\n FullScreen,\n PanTilt,\n PanTiltVal,\n PresetsButtonV2,\n SnapshotButtonV2,\n StartStreamResponse,\n StreamBanner,\n StreamingStatus,\n Zoom,\n ZoomInLottie,\n ZoomOutLottie,\n ZoomVal,\n} from \"@lvt/streaming\";\nimport { Alert } from \"@material-ui/lab\";\nimport { CameraAlt } from \"@mui/icons-material\";\nimport clsx from \"clsx\";\nimport DetectRTC from \"detectrtc\";\nimport Lottie, { LottieRef, LottieRefCurrentProps } from \"lottie-react\";\nimport { useSnackbar } from \"notistack\";\nimport { FC, MutableRefObject, useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport client from \"@/api/client\";\nimport { useAddPresetMutation, useUpdatePresetMutation } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport { Presets } from \"@/common/components/SVG/Svg\";\nimport { MosaicItemDimensionsContext } from \"@/common/components/liveUnitMosaic/Mosaic/MosaicItem/MosaicItem\";\nimport { Loading } from \"@/common/containers/Loading\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport CameraStreamData from \"@/utilities/types/cameraStreamData\";\nimport { CenterAnimation } from \"@/utilities/types/streaming\";\n\nimport useStyles from \"./CameraStreamTile.styles\";\n\n\ninterface CameraTileProps {\n datum: CameraStreamData;\n\n /**\n * Flag to hide the camera controls from the tile\n */\n hideControls: boolean;\n}\n\nconst CameraStreamTile: FC = ({ datum, hideControls }) => {\n const { cameraId, cameraName, capabilities, presets, controlPresets, controlPtzf, liveUnitId } = datum;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [startStreamData, setStartStreamData] = useState();\n const [checkInData, setCheckInData] = useState();\n const [streamingStatus, setStreamingStatus] = useState(StreamingStatus.Initial);\n const [fullScreen, setFullScreen] = useState(false);\n const [snapshot, setSnapshot] = useState();\n const [showCenterAnimation, setShowCenterAnimation] = useState();\n const [open, setOpen] = useState(false);\n\n const [addPreset] = useAddPresetMutation();\n const [updatePreset] = useUpdatePresetMutation();\n\n const [controlService, setControlService] = useState(controlServiceImpl(client, cameraId));\n const cameraStreamService = cameraStreamServiceImpl(client);\n\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.cameraStreamTile\" });\n const dimensions = useContext(MosaicItemDimensionsContext);\n const videoPreference = useSelector((state) => (state.user.videoPreference == \"html5\" ? \"html5\" : \"webrtc\"));\n const userPermissions = useSelector((state) => state.user.permissions);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const styles = useStyles();\n const centerAnimationRef = useRef(null) as MutableRefObject;\n const divRef = useRef(null);\n const dispatch = useDispatch();\n\n const homePreset = presets.find(p => p.isHome) ?? presets[0];\n const usingHtml5Player = !capabilities?.webrtc || videoPreference == \"html5\" || !DetectRTC.isWebRTCSupported;\n\n const allowClickToCenter = controlPtzf && capabilities.pan && capabilities.clickToCenter;\n const allowControlPresets = controlPresets && (capabilities.presets || capabilities.position);\n const allowPanTilt = controlPtzf && capabilities.pan;\n const allowSelfService = !!userPermissions?.selfService;\n const allowSnapshot = controlPtzf && capabilities.snapshot;\n const allowZoom = controlPtzf && capabilities.zoom;\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Action handlers ////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const startStream = (cameraId: number) => {\n return cameraStreamService.startStream(cameraId)\n .then((data) => setStartStreamData(data));\n };\n\n const checkIn = (cameraId: number, streamRecordId: number) => {\n cameraStreamService.checkIn(cameraId, streamRecordId)\n .then((res) => setCheckInData(res))\n .catch(() => {\n onAlertMessage({\n type: \"checkInFailed\",\n level: \"error\",\n message: t(\"errors.checkIn\"),\n });\n });\n };\n\n const handlePresetsMenu = () => {\n setAnchorEl(divRef.current);\n setOpen(!open);\n };\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Event handlers /////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const onAlertMessage = (alert: StreamAlert) => {\n closeSnackbar(alert.type);\n\n const AlertNotification = (\n \n {`${cameraName}: ${alert.message}`}\n \n );\n\n enqueueSnackbar(AlertNotification, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: alert.message,\n preventDuplicate: true,\n variant: alert.level,\n });\n };\n\n const onError = (e: any) => {\n console.log(\"Stream error\", e);\n };\n\n const onStatusChange = (status: StreamingStatus) => {\n // If this check is not present, the onIdle wake up will use stale streaming data\n if (status === StreamingStatus.Idle) setStartStreamData(undefined);\n\n setStreamingStatus(status);\n };\n\n const handleSnapshot = () => {\n controlService\n .takeSnapshot()\n .then(response => {\n setSnapshot(JSON.parse(response.data).image);\n })\n .catch(error => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `${t(\"errors.snapshot\")}: ${error.message}`,\n }),\n );\n });\n };\n\n const onClickHome = () => {\n if (!homePreset) return;\n\n setShowCenterAnimation(CenterAnimation.Home);\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.goToPreset(homePreset.id);\n };\n\n const onClickPreset = (presetId: number) => {\n setShowCenterAnimation(CenterAnimation.Home);\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.goToPreset(presetId);\n };\n\n const onClickPanTilt = (direction: PanTiltVal) => {\n switch (direction) {\n case PanTiltVal.Up:\n setShowCenterAnimation(CenterAnimation.Up);\n break;\n case PanTiltVal.Down:\n setShowCenterAnimation(CenterAnimation.Down);\n break;\n case PanTiltVal.Left:\n setShowCenterAnimation(CenterAnimation.Left);\n break;\n case PanTiltVal.Right:\n setShowCenterAnimation(CenterAnimation.Right);\n break;\n }\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.panTilt(direction);\n };\n\n const onClickZoom = (direction: ZoomVal) => {\n switch (direction) {\n case ZoomVal.In:\n setShowCenterAnimation(CenterAnimation.ZoomIn);\n break;\n case ZoomVal.Out:\n setShowCenterAnimation(CenterAnimation.ZoomOut);\n break;\n }\n\n if (centerAnimationRef.current) centerAnimationRef.current.goToAndPlay(0);\n\n controlService.zoom(direction);\n };\n\n const onAddPreset = (name: string) => {\n return addPreset({\n liveUnitId,\n cameraId,\n name,\n }).catch(error => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `${t(\"errors.addPreset\")}: ${error.message}`,\n }),\n );\n });\n };\n\n const onUpdatePreset = (presetId: number, name: string) => {\n return updatePreset({\n liveUnitId,\n presetId,\n name,\n }).catch(error => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `${t(\"errors.updatePreset\")}: ${error.message}`,\n }),\n );\n });\n };\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n //////////////////////////////////// Helper functions ///////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n const getCenterAnimation = () => {\n switch (showCenterAnimation) {\n case CenterAnimation.Up:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(styles.centerAnimation, styles.upArrow)}\n />\n );\n\n case CenterAnimation.Down:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(styles.centerAnimation, styles.downArrow)}\n />\n );\n\n case CenterAnimation.Left:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(styles.centerAnimation, styles.leftArrow)}\n />\n );\n\n case CenterAnimation.Right:\n return (\n setShowCenterAnimation(undefined)}\n className={clsx(styles.centerAnimation, styles.rightArrow)}\n />\n );\n\n case CenterAnimation.ZoomIn:\n return (\n setShowCenterAnimation(undefined)}\n className={styles.centerAnimation}\n />\n );\n\n case CenterAnimation.ZoomOut:\n return (\n setShowCenterAnimation(undefined)}\n className={styles.centerAnimation}\n />\n );\n\n default:\n return null;\n }\n };\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n ////////////////////////////////////// React hooks //////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////////////////////////////////////\n useEffect(() => {\n if (cameraId) {\n setControlService(controlServiceImpl(client, cameraId));\n setStreamingStatus(StreamingStatus.Initial);\n\n if (startStreamData && parseInt(startStreamData.camString) !== cameraId) {\n setStartStreamData(undefined);\n }\n }\n }, [cameraId, startStreamData]);\n\n return (\n \n \n {ctx => (\n <>\n {streamingStatus === StreamingStatus.Started &&\n \n }\n\n \n\n
    \n {showCenterAnimation !== undefined && getCenterAnimation()}\n\n {streamingStatus === StreamingStatus.Active &&\n <>\n setFullScreen(isFullScreen)}\n />\n\n {!hideControls &&\n <>\n
    \n {allowPanTilt &&\n \n }\n\n {allowZoom &&\n \n }\n
    \n\n {allowClickToCenter &&\n controlService.clickToCenter(positioning)}\n dimensions={ctx.videoDimensions}\n />\n }\n\n
    \n {allowSnapshot &&\n }\n image={snapshot}\n onClick={handleSnapshot}\n popoverText={t(\"actionButtons.snapshot\")}\n />\n }\n\n {allowControlPresets &&\n }\n localizationStrings={{\n newPreset: t(\"actionButtons.presets.newPreset\"),\n settings: t(\"actionButtons.presets.settings\"),\n title: t(\"actionButtons.presets.title\"),\n }}\n menuAnchor={anchorEl}\n onAdd={onAddPreset}\n onClick={handlePresetsMenu}\n onClickPreset={onClickPreset}\n onUpdate={onUpdatePreset}\n open={open}\n presets={presets}\n />\n }\n
    \n \n }\n \n }\n
    \n \n )}\n
    \n \n );\n};\n\nexport default CameraStreamTile;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nconst opacity = require(\"hex-color-opacity\");\n\n\nexport default makeStyles((theme) => ({\n divider: {\n padding: \"2px 0px\",\n },\n footer: {\n display: \"grid\",\n color: theme.palette.grey[\"600\"],\n alignItems: \"center\",\n gridTemplateColumns: \"fit-content(20em) min-content auto min-content\",\n },\n alertClipSelectedButton: {\n color: theme.palette.secondary.main,\n },\n alertClipButton: {\n border: \"none\",\n },\n alertClipButtonBackground: {\n backgroundColor: opacity(theme.palette.secondary.main, 0.2),\n },\n dashedLine: {\n height: 0,\n width: \"2em\",\n borderBottomStyle: \"dashed\",\n borderBottomWidth: 2,\n borderColor: theme.palette.grey[\"400\"],\n flexGrow: 1,\n },\n circle: {\n height: \"2em\",\n width: \"2em\",\n borderRadium: \"50%\",\n },\n alertTimelineButtons: {\n display: \"flex\",\n alignItems: \"center\",\n overflowX: \"auto\",\n scrollbarWidth: \"none\" /* Firefox */,\n \"&::-webkit-scrollbar\": {\n display: \"none\" /* Safari and Chrome */,\n },\n },\n alertTimelineConnector: {\n margin: \"0 -5px\",\n zIndex: 1,\n display: \"flex\",\n },\n alertButtonFlex: {\n flexShrink: 0,\n },\n alertDetails: {\n textTransform: \"capitalize\",\n },\n}));\n","import { Button, Divider, Typography } from \"@material-ui/core\";\nimport ImageIcon from \"@material-ui/icons/Image\";\nimport PlayArrowIcon from \"@material-ui/icons/PlayArrow\";\nimport clsx from \"clsx\";\nimport { FC, Fragment, useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AlertTimelineConnector } from \"@/common/components/SVG/Svg\";\nimport { AlertTileContext } from \"@/common/contexts/AlertTileContextType\";\nimport { AlertType, TimestampCameraMedia } from \"@/utilities/types/alert\";\n\nimport useStyles from \"./AlertFooter.Styles\";\n\n\ninterface AlertFooterProps {\n alertType?: AlertType;\n locationTimezone?: string;\n alertMedia: TimestampCameraMedia[];\n}\n\nexport const AlertFooter: FC = ({ alertType, locationTimezone, alertMedia }) => {\n const { t, i18n } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.alertFooter\" });\n const { currentAlertTimestamp, setCurrentAlertTimestamp } = useContext(AlertTileContext);\n const classes = useStyles();\n const dateString = alertMedia[0]?.timestamp;\n const alertDate = new Date(dateString);\n const dateFmt = new Intl.DateTimeFormat(i18n.language, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n timeZone: locationTimezone,\n timeZoneName: \"short\",\n });\n\n const timeFmt = new Intl.DateTimeFormat(i18n.language, { timeStyle: \"short\", timeZone: locationTimezone });\n\n const formattedAlertDate = dateFmt.format(alertDate);\n const tAlertType = t([`alertType.${alertType!}`, \"alertTypeDefault\"]);\n\n return (\n
    \n \n {tAlertType}: {formattedAlertDate}\n \n \n
    \n {alertMedia.map((media, index) => {\n return (\n \n : }\n variant=\"outlined\"\n onClick={() => {\n setCurrentAlertTimestamp(media.timestamp);\n }}\n >\n {timeFmt.format(new Date(media.timestamp))}\n \n {index + 1 !== alertMedia.length && (\n
    \n \n
    \n )}\n
    \n );\n })}\n
    \n\n \n
    \n );\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n buttonSkeleton: {\n height: 50,\n width: 50,\n marginRight: 16,\n },\n dot: {\n height: 8,\n width: 8,\n marginRight: 8,\n backgroundColor: theme.palette.error.main,\n borderRadius: \"50%\",\n },\n liveText: {\n fontWeight: \"bold\",\n color: theme.palette.error.main,\n },\n toolbar: {\n height: 76,\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: \"auto 7em\",\n },\n footerMiddle: {\n display: \"grid\",\n justifyContent: \"center\",\n paddingRight: \"1.5em\",\n gridTemplateColumns: \"auto 7em\",\n },\n footerRight: {\n minWidth: \"8em\",\n },\n goLive: {\n backgroundColor: theme.palette.error.main,\n color: theme.palette.primary.contrastText,\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n },\n link: {\n textDecoration: \"none\",\n },\n}));\n","import { Button, Toolbar } from \"@material-ui/core\";\nimport { FC, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link as LinkRouter, useParams } from \"react-router-dom\";\n\nimport { Alert, TimestampCameraMedia } from \"@/utilities/types/alert\";\nimport ResolveDialog from \"@/views/alerts/AlertsPage/ResolveDialog/ResolveDialog\";\nimport { LiveUnitMosaicPageParams } from \"@/views/liveUnitMosaic/LiveUnitMosaicPage\";\n\nimport { AlertFooter } from \"../AlertFooter/AlertFooter\";\nimport useStyles from \"./AlertTimelineFooter.styles\";\n\n\ninterface FooterProps {\n contextId: string,\n groupedAlertMedia?: TimestampCameraMedia[],\n alert?: Alert,\n setIsLive: (_: boolean) => void;\n}\n\nexport const AlertTimelineFooter: FC = ({ contextId, groupedAlertMedia: alertMedia, alert, setIsLive }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.alerts.alertTimelineFooter\" });\n const classes = useStyles();\n const { liveUnitId } = useParams();\n const [openDialog, setOpenDialog] = useState(false);\n\n return (\n \n
    \n {(alertMedia && alertMedia.length !== 0 && alert) &&\n \n }\n {alert &&\n <>\n { setOpenDialog(true); }}\n >\n {(alert.state === \"resolved\") ? t(\"resolved\") : t(\"resolve\")}\n \n \n \n }\n
    \n
    \n \n setIsLive(true)}\n >\n {t(\"goLive\")}\n \n \n
    \n \n );\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport interface StylesProps {\n maxHeight?: number;\n}\n\nexport default makeStyles((theme) => ({\n buttonIcon: {\n color: theme.palette.grey[700],\n cursor: \"pointer\",\n margin: \"0px 16px 4px 16px\",\n },\n close: {\n position: \"absolute\",\n top: 12,\n right: 12,\n color: theme.palette.grey[700],\n },\n header: {\n // fontFamily: \"Oswald\", // TODO: get the correct font\n fontWeight: 700,\n fontSize: 20,\n color: theme.palette.grey[900],\n textTransform: \"uppercase\",\n marginBottom: 12,\n },\n list: {\n maxHeight: ({ maxHeight }: StylesProps) => maxHeight ? maxHeight - 120 : undefined,\n marginBottom: ({ maxHeight }: StylesProps) => maxHeight ? 56 : 0,\n overflowY: \"scroll\",\n padding: 0,\n scrollbarWidth: \"none\", /* Firefox */\n \"&::-webkit-scrollbar\": {\n display: \"none\", /* Safari and Chrome */\n },\n },\n listFooter: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n backgroundColor: theme.palette.background.paper,\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 56,\n boxShadow: \"0px -8px 12px rgba(0, 0, 0, 0.1)\",\n borderRadius: \"0px 0px 12px 12px\",\n },\n popover: {\n maxHeight: ({ maxHeight }: StylesProps) => maxHeight,\n padding: 20,\n color: theme.palette.grey[700],\n boxShadow: \"0 0 12px rgba(0, 0, 0, 0.1)\",\n borderRadius: 12,\n width: 380,\n overflow: \"hidden\",\n },\n}));\n","import { Box, IconButton, Typography, Popover, Fade, SvgIcon } from \"@material-ui/core\";\nimport { List } from \"@material-ui/core\";\nimport { ArrowDownward, Close, EmojiObjects } from \"@material-ui/icons\";\nimport { FC, MutableRefObject } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { RelayAction } from \"@/api/streamMetadata\";\nimport LightsButtonItem from \"@/common/components/streaming/ActionButtons/LightsButton/LightsButtonItem\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useStyles from \"./LightsButton.styles\";\n\n\ninterface LightsButtonProps {\n /**\n * Function to open and close button menus within the footer\n * @param button Name of the button\n */\n handleMenu: (button: OpenButton) => void;\n /**\n * Deduped list of lights from all cameras on a live unit\n */\n lights: RelayAction[];\n open: boolean;\n menuRef: MutableRefObject;\n}\n\nconst LightsButton: FC = ({ lights, handleMenu, open, menuRef }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage.footer.buttons\" });\n\n const maxHeight = lights.length > 4 ? 340 : undefined;\n const classes = useStyles({ maxHeight });\n\n return (\n <>\n handleMenu(OpenButton.Lights)}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n >\n \n \n \n {t(\"lights\")}\n
    \n\n \n {/* Header */}\n handleMenu(OpenButton.None)} className={classes.close}>\n \n \n {t(\"lights\")}\n\n {/* Content */}\n \n {lights.map((light) => (\n \n ))}\n \n\n {/* Footer */}\n {maxHeight &&\n
    \n \n
    \n }\n \n \n );\n};\n\nexport default LightsButton;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport interface StylesProps {\n maxHeight?: number;\n}\n\nexport default makeStyles((theme) => ({\n buttonIcon: {\n color: theme.palette.grey[700],\n cursor: \"pointer\",\n margin: \"0px 16px 4px 16px\",\n },\n close: {\n position: \"absolute\",\n top: 12,\n right: 12,\n color: theme.palette.grey[700],\n },\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n // fontFamily: \"Oswald\", // TODO: get the correct font\n fontWeight: 700,\n fontSize: 20,\n color: theme.palette.grey[900],\n textTransform: \"uppercase\",\n marginBottom: 12,\n },\n iconArea: {\n position: \"absolute\",\n right: 4,\n minWidth: 0,\n },\n list: {\n maxHeight: ({ maxHeight }: StylesProps) => maxHeight ? maxHeight - 120 : undefined,\n marginBottom: ({ maxHeight }: StylesProps) => maxHeight ? 56 : 0,\n overflowY: \"scroll\",\n padding: 0,\n scrollbarWidth: \"none\", /* Firefox */\n \"&::-webkit-scrollbar\": {\n display: \"none\", /* Safari and Chrome */\n },\n },\n listFooter: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n backgroundColor: theme.palette.background.paper,\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 56,\n boxShadow: \"0px -8px 12px rgba(0, 0, 0, 0.1)\",\n borderRadius: \"0px 0px 12px 12px\",\n },\n playIcon: {\n fill: theme.palette.grey[700],\n },\n popover: {\n maxHeight: ({ maxHeight }: StylesProps) => maxHeight,\n padding: 20,\n color: theme.palette.grey[700],\n boxShadow: \"0 0 12px rgba(0, 0, 0, 0.1)\",\n borderRadius: 12,\n width: 380,\n overflow: \"hidden\",\n },\n soundAnimation: {\n width: 24,\n marginLeft: 8,\n },\n}));\n","import { controlServiceImpl } from \"@lvt/streaming\";\nimport { Box, IconButton, Typography, Popover, Fade, SvgIcon, List, ListItem, ListItemText, ListItemIcon } from \"@material-ui/core\";\nimport { ArrowDownward, Close, PlayCircleFilled } from \"@material-ui/icons\";\nimport Lottie from \"lottie-react\";\nimport { FC, useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport { SpeakerSound } from \"@/api/streamMetadata/types\";\nimport soundWaveAnimation from \"@/assets/animations/soundwave.json\";\nimport { Sounds } from \"@/common/components/SVG/Svg\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useStyles from \"./SoundsButton.styles\";\n\n\ninterface SoundsButtonProps {\n cameraId: number;\n handleMenu: (button: OpenButton) => void;\n onError?: (error: any) => void;\n open: boolean;\n speakerSounds: SpeakerSound[];\n}\n\nconst SoundsButton: FC = ({ handleMenu, open, speakerSounds, cameraId, onError }) => {\n const maxHeight = speakerSounds.length > 4 ? 340 : undefined;\n const classes = useStyles({ maxHeight });\n\n const [playingId, setPlayingId] = useState(null);\n\n const controlService = controlServiceImpl(client, cameraId);\n\n const handleClick = async (sound: SpeakerSound) => {\n setPlayingId(sound.id);\n\n try {\n await controlService.speakerSound(sound.id);\n } catch (e: any) {\n // TODO: Put back when edge stops returning errors every time\n // setPlayingId(null);\n\n if (onError) {\n onError(e.message);\n }\n }\n };\n\n return (\n <>\n \n handleMenu(OpenButton.Sounds)} className={classes.buttonIcon}>\n \n \n Sounds\n \n\n \n {/* Header */}\n handleMenu(OpenButton.None)}\n className={classes.close}\n >\n \n \n
    Sounds
    \n\n {/* Content */}\n \n {speakerSounds.map((sound) => (\n handleClick(sound)}\n disabled={playingId !== null && playingId !== sound.id}\n className={FullStory.names.classes.streaming.quickSound}\n disableGutters\n >\n {sound.label}\n \n {playingId !== sound.id ? (\n \n ) : (\n setPlayingId(null)}\n className={classes.soundAnimation}\n />\n )}\n \n \n ))}\n \n\n {/* Footer */}\n {maxHeight &&\n
    \n \n
    \n }\n \n \n );\n};\n\nexport default SoundsButton;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n avatarIcon: {\n backgroundColor: theme.palette.grey[300],\n marginRight: 16,\n \"& svg\": {\n color: theme.palette.grey[700],\n },\n },\n buttonIcon: {\n color: theme.palette.grey[700],\n cursor: \"pointer\",\n margin: \"0px 16px 4px 16px\",\n },\n redButton: {\n backgroundColor: theme.palette.error.main,\n color: \"#ffffff\",\n marginRight: 6,\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n flexGrow: 1,\n justifyContent: \"space-evenly\",\n },\n close: {\n position: \"absolute\",\n top: 12,\n right: 12,\n },\n header: {\n // fontFamily: \"Oswald\", // TODO: get the correct font\n fontWeight: 700,\n fontSize: 20,\n color: theme.palette.grey[900],\n textTransform: \"uppercase\",\n marginBottom: 12,\n },\n popover: {\n borderRadius: 12,\n width: 380,\n marginLeft: 12,\n boxShadow: \"0 0 12px rgba(0, 0, 0, 0.1)\",\n },\n talkdownMenu: {\n padding: 20,\n color: theme.palette.grey[700],\n },\n callMenu: {\n padding: 8,\n display: \"flex\",\n },\n}));\n","import { Avatar, Box, Button, List, ListItem, Typography, IconButton, SvgIcon, Popover, Fade } from \"@material-ui/core\";\nimport { CallEnd, Mic, MicOff, PhoneInTalk, Smartphone, Close } from \"@material-ui/icons\";\nimport { FC, useState, useEffect, useCallback } from \"react\";\nimport { useStopwatch } from \"react-timer-hook\";\n\nimport { useLazySpeakerTalkdownStartQuery } from \"@/api/speakerTalkdown/speakerTalkdownApi\";\nimport { useDispatch } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { Config, CallControls, startTwilioCall } from \"@/utilities/twilio\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport useStyles from \"./SpeakerTalkdownButton.styles\";\n\n\ninterface SipInfo {\n sipPhoneNumber: string | null;\n sipPin: string | null;\n clientPasscode: number | null;\n}\n\ninterface SpeakerTalkdownButtonProps {\n sipInfo: SipInfo,\n handleMenu: (button: OpenButton) => void;\n liveUnitId: number;\n open: boolean;\n}\n\nconst SpeakerTalkdownButton: FC = ({ sipInfo, liveUnitId, handleMenu, open }) => {\n const [isCallConnected, setIsCallConnected] = useState(false);\n const [isCallConnecting, setIsCallConnecting] = useState(false);\n const [selfMuted, setSelfMuted] = useState(false);\n const [callControls, setCallControls] = useState(null);\n // const [unitMuted, setUnitMuted] = useState(true);\n // const [isUnitMuteProcessing, setIsUnitMuteProcessing] = useState(false);\n const [startSpeakerTalkdown, startSpeakerTalkdownState] = useLazySpeakerTalkdownStartQuery(undefined);\n\n const dispatch = useDispatch();\n const classes = useStyles();\n const { seconds, minutes, start, reset } = useStopwatch({ autoStart: false });\n\n // Callbacks passed to the SIP handler\n const callConnected = useCallback(() => {\n setIsCallConnected(true);\n setIsCallConnecting(false);\n start(); // start call duration timer\n }, []);\n const callStoppedFailure = useCallback((error: string) => {\n console.log(\"Call Error\", error);\n setIsCallConnected(false);\n setCallControls(null);\n setSelfMuted(false);\n reset(); // reset call duration timer\n // setUnitMuted(true);\n\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: `Call failed: ${error}`,\n }),\n );\n }, [startSpeakerTalkdownState]);\n const callStoppedSuccess = useCallback(() => {\n setIsCallConnected(false);\n setCallControls(null);\n setSelfMuted(false);\n reset(); // reset call duration timer\n // setUnitMuted(true);\n }, [startSpeakerTalkdownState]);\n\n // Utilizing Speaker Talkdown endpoints\n const intiateTalkdown = () => {\n startSpeakerTalkdown(liveUnitId);\n setIsCallConnecting(true);\n };\n\n useEffect(() => {\n const { data, isSuccess, isFetching } = startSpeakerTalkdownState;\n\n if (data && isSuccess && !isFetching) {\n const config: Config = {\n token: data.data.token,\n lvtLiveUnitId: data.data.lvt_live_unit_id,\n callConnected,\n callStoppedFailure,\n callStoppedSuccess,\n };\n\n // The SIP handler passes up some functions to control the call, saved as callControls\n const callControls = startTwilioCall(config);\n\n setCallControls(callControls);\n }\n }, [startSpeakerTalkdownState]);\n\n // Utilizing callControls\n const hangupCall = () => {\n if (callControls) {\n callControls.hangup();\n }\n\n handleMenu(OpenButton.None);\n setIsCallConnecting(false);\n };\n const muteSelf = () => {\n if (callControls) {\n callControls.muteLocal();\n setSelfMuted(true);\n }\n };\n const unmuteSelf = () => {\n if (callControls) {\n callControls.unmuteLocal();\n setSelfMuted(false);\n }\n };\n\n return (\n <>\n \n handleMenu(OpenButton.SpeakerTalkDown)} className={classes.buttonIcon}>\n \n \n Call Unit\n \n\n {/* Two popovers are used due to a bug with dynamic content\n * https://github.com/mui/material-ui/issues/21561\n */}\n \n
    \n \n \n {isCallConnecting ?\n \"Calling...\"\n :\n {minutes.toString().padStart(2, \"0\")}:{seconds.toString().padStart(2, \"0\")} End Call\n }\n \n \n {selfMuted ? : }\n Mute your mic\n \n
    \n \n\n \n
    \n handleMenu(OpenButton.None)}\n className={classes.close}\n >\n \n \n Call Unit\n\n \n \n \n \n \n \n {sipInfo.sipPhoneNumber}\n EXT: {sipInfo.sipPin} | Pass: {sipInfo.clientPasscode}\n \n \n \n \n \n \n \n Call Through LVT\n \n \n \n
    \n \n \n );\n};\n\nexport default SpeakerTalkdownButton;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n buttonSkeleton: {\n height: 50,\n width: 50,\n marginRight: 16,\n },\n dot: {\n height: 8,\n width: 8,\n marginRight: 8,\n backgroundColor: theme.palette.error.main,\n borderRadius: \"50%\",\n },\n liveText: {\n fontWeight: \"bold\",\n color: theme.palette.error.main,\n },\n toolbar: {\n height: 76,\n position: \"relative\",\n margin: \"0px 24px\",\n },\n footerLeft: {\n position: \"absolute\",\n left: 0,\n display: \"flex\",\n alignItems: \"center\",\n },\n footerMiddle: {\n position: \"absolute\",\n left: \"50%\",\n transform: \"translate(-50%)\",\n display: \"flex\",\n alignItems: \"center\",\n },\n footerRight: {\n position: \"absolute\",\n right: 0,\n display: \"flex\",\n },\n goToAlert: {\n backgroundColor: theme.palette.info.main,\n color: theme.palette.primary.contrastText,\n \"&:hover\": {\n backgroundColor: theme.palette.info.dark,\n },\n },\n link: {\n textDecoration: \"none\",\n },\n}));\n","import { Button, Toolbar, Typography } from \"@material-ui/core\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\nimport { DateTime } from \"luxon\";\nimport { FC, useRef, useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link as LinkRouter } from \"react-router-dom\";\n\nimport { RelayAction } from \"@/api/streamMetadata\";\nimport { LiveUnitMosaicData } from \"@/utilities/types/mosaicData\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\nimport LightsButton from \"../LightsButton/LightsButton\";\nimport SoundsButton from \"../SoundsButton/SoundsButton\";\nimport SpeakerTalkdownButton from \"../SpeakerTalkdownButton/SpeakerTalkdownButton\";\nimport useStyles from \"./LiveStreamFooter.styles\";\n\n\ninterface FooterProps {\n mosaicData?: LiveUnitMosaicData;\n alertId?: string; //Change this to in container?\n setIsLive: (_: boolean) => void; //Remove\n\n /**\n * Flag to remove live unit controls from the footer\n */\n hideControls: boolean;\n allowSpeakerTalkdown?: boolean;\n allowLights?: boolean;\n allowSounds?: boolean;\n disableGoToAlertsButton: boolean;\n}\n\nexport const LiveStreamFooter: FC = ({ mosaicData, alertId, setIsLive, hideControls, allowSpeakerTalkdown, allowLights, allowSounds, disableGoToAlertsButton = true }) => {\n const [buttonState, setButtonState] = useState(OpenButton.None);\n const [clock, setClock] = useState();\n const ref = useRef(null);\n\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage.footer\" });\n const classes = useStyles();\n\n const { cameraId, liveUnitId, locationTimezone, capabilities } = mosaicData?.cameras[0] ?? {};\n const sounds = capabilities?.speakerSounds;\n\n const lights = mosaicData?.cameras.reduce((acc, camera) => {\n const relayNames = acc.map(ra => ra.relayName);\n const regex = new RegExp(/camera/);\n\n const dedupedLights: RelayAction[] = camera.capabilities.relayActions.flatMap(light => {\n if (regex.test(light.relayName)) {\n return {\n ...light,\n cameraId: camera.cameraId,\n uiLabel: `${camera.cameraName}: ${light.uiLabel}`,\n };\n } else if (!relayNames.includes(light.relayName)) {\n return {\n ...light,\n cameraId: camera.cameraId,\n };\n } else return [];\n });\n\n return [...acc, ...dedupedLights];\n }, []);\n\n const handleMenu = (button: OpenButton) => {\n button === buttonState ? setButtonState(OpenButton.None) : setButtonState(button);\n };\n\n const updateClock = () => {\n setClock(DateTime.now().setZone(locationTimezone!));\n };\n\n useEffect(() => {\n if (locationTimezone) {\n updateClock();\n\n const timer = setInterval(updateClock, 5000);\n\n return () => clearInterval(timer);\n }\n }, [locationTimezone]);\n\n return (\n \n
    \n {mosaicData ?\n <>\n {!hideControls &&\n <>\n {allowSounds && sounds?.length && cameraId &&\n \n }\n\n {allowSpeakerTalkdown && liveUnitId &&\n \n }\n\n {allowLights && lights &&\n \n }\n \n }\n \n :\n <>\n \n \n \n \n }\n
    \n\n
    \n {mosaicData && clock ?\n <>\n
    \n \n {t(\"live\")}: {clock.toLocaleString(DateTime.TIME_SIMPLE)}\n \n \n :\n \n }\n
    \n\n
    \n {(mosaicData && alertId) ?\n \n setIsLive(false)}\n >\n {t(\"goToAlerts\")}\n \n \n :\n \n {t(\"goToAlerts\")}\n \n }\n
    \n \n );\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n header: {\n backgroundColor: theme.palette.common.white,\n height: 68,\n },\n title: {\n flexGrow: 1,\n },\n}));\n","import { IconButton, Toolbar, Typography } from \"@material-ui/core\";\nimport KeyboardBackspaceIcon from \"@material-ui/icons/KeyboardBackspace\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\nimport { FC } from \"react\";\nimport { useHistory } from \"react-router\";\n\nimport useStyles from \"./Header.styles\";\n\n\ninterface HeaderProps {\n title?: string;\n}\n\nconst Header: FC = ({ title, children }) => {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n
    \n \n history.push(\"/alerts\")}\n >\n \n \n {title ?\n {title}\n :\n \n }\n {children}\n \n
    \n );\n};\n\nexport default Header;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n mosaic: {\n height: \"100%\",\n backgroundColor: theme.palette.grey[900],\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-evenly\",\n flexWrap: \"wrap\",\n },\n}));\n","import { FC } from \"react\";\n\nimport MosaicItem, { BaseMosaicItem } from \"@/common/components/liveUnitMosaic/Mosaic/MosaicItem/MosaicItem\";\n\nimport useStyles from \"./Mosaic.styles\";\n\n\n//General Mosaic component which takes in a list of data (should include cameraId) and the component which renders this data.\ninterface MosaicProps {\n data: T[];\n\n /**\n * Additional props that are passed to the tile\n */\n tileProps?: {[key: string]: any};\n TileComponent: FC;\n onClose?: (id: number | string) => void\n}\n\nexport const Mosaic = ({ data, tileProps, TileComponent, onClose }: MosaicProps) => {\n const styles = useStyles();\n\n return (\n
    \n {data.map((datum: T) => (\n \n onClose(datum.cameraId) : undefined}\n {...tileProps}\n />\n \n ))}\n
    \n );\n};\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n page: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100vh\",\n },\n realtimeEventsErrorBanner: {\n height: \"50px\",\n },\n mosaic: {\n backgroundColor: theme.palette.common.black,\n },\n loaderContainer: {\n display: \"flex\",\n position: \"absolute\",\n alignItems: \"center\",\n justifyContent: \"center\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n borderRadius: \"2.5rem\",\n padding: \"1rem 2.25rem\",\n backgroundColor: theme.palette.common.white,\n },\n loader: {\n width: \"2.25rem\",\n height: \"2.25rem\",\n marginRight: \"1rem\",\n },\n}));\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n cameraAccess: {\n backgroundColor: theme.palette.secondary.main,\n borderRadius: 12,\n boxShadow: \"none\",\n color: theme.palette.common.white,\n padding: \"4px 12px\",\n textAlign: \"center\",\n textTransform: \"none\",\n },\n listItem: {\n paddingTop: 16,\n },\n secondaryText: {\n display: \"flex\",\n color: theme.palette.grey[700],\n },\n viewOnly: {\n backgroundColor: theme.palette.grey[200],\n borderRadius: 12,\n boxShadow: \"none\",\n padding: \"4px 12px\",\n textAlign: \"center\",\n textTransform: \"none\",\n },\n}));\n","import { Box, ListItem } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport { useStopwatch } from \"react-timer-hook\";\n\nimport { Viewer } from \"@/utilities/types/viewer\";\n\nimport useStyles from \"./LiveUnitViewersItem.styles\";\n\n\nexport interface LiveUnitViewerItemProps {\n /**\n * Information about the current viewer\n */\n viewer: Viewer;\n}\n\nexport const LiveUnitViewersItem: React.FC = ({ viewer }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage.liveUnitViewers\" });\n\n const styles = useStyles();\n\n const getDuration = () => {\n const duration = Date.now() - new Date(viewer.joined).valueOf();\n\n return new Date(Date.now() + duration);\n };\n\n const { hours, minutes, seconds } = useStopwatch({ autoStart: true, offsetTimestamp: getDuration() });\n\n return (\n \n \n \n \n {viewer.name}\n
    \n |\n
    {`${hours.toString().padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")}:${seconds.toString().padStart(2, \"0\")}`}
    \n
    \n
    \n {viewer.viewOnlyAccess\n ?
    {t(\"accessTag.viewOnly\")}
    \n :
    {t(\"accessTag.cameraControl\")}
    \n }\n
    \n
    {viewer.username}
    \n
    \n
    \n );\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\n\n\nexport default makeStyles((theme) => ({\n close: {\n color: theme.palette.grey[700],\n height: 18,\n \"&:hover\": {\n cursor: \"pointer\",\n },\n },\n head: {\n alignItems: \"center\",\n display: \"flex\",\n fontSize: 16,\n justifyContent: \"space-between\",\n paddingBottom: 16,\n textTransform: \"uppercase\",\n },\n list: {\n maxHeight: 205,\n overflowY: \"auto\",\n },\n menu: {\n color: theme.palette.grey[900],\n cursor: \"default\",\n fontFamily: \"Source Sans Pro,Arial,sans-serif\",\n fontSize: 12,\n },\n popover: {\n borderRadius: 12,\n padding: 16,\n },\n viewersButton: {\n backgroundColor: \"transparent\",\n border: `1px solid ${theme.palette.primary.main}`,\n boxShadow: \"none\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n },\n viewersButtonEmphasized: {\n backgroundColor: theme.palette.error.main,\n boxShadow: \"none\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n },\n}));\n","import { Button, List, Popover } from \"@material-ui/core\";\nimport { Close, ExpandMore, SupervisorAccount } from \"@mui/icons-material\";\nimport { FC, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Viewer } from \"@/utilities/types/viewer\";\nimport { LiveUnitViewersItem } from \"@/views/liveUnitMosaic/LiveUnitViewers/LiveUnitViewersItem/LiveUnitViewersItem\";\n\nimport useStyles from \"./LiveUnitViewers.styles\";\n\n\nexport interface LiveUnitViewersProps {\n /**\n * Flag indicating if the user who is viewing the page has view only access\n */\n displayViewOnly: boolean;\n\n /**\n * A list of other viewers\n */\n viewers: Viewer[];\n}\n\nexport const LiveUnitViewers: FC = ({ displayViewOnly, viewers }) => {\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage.liveUnitViewers\" });\n\n const [open, setOpen] = useState(false);\n const anchor = useRef(null);\n const classes = useStyles();\n\n const onClick = () => setOpen(true);\n const onClose = () => setOpen(false);\n\n return (\n <>\n }\n endIcon={}\n className={displayViewOnly ? classes.viewersButtonEmphasized : classes.viewersButton}\n id=\"viewers-button\"\n onClick={onClick}\n >\n {viewers.length} {t(\"viewers\")} — {displayViewOnly ? t(\"accessMessage.viewOnly\") : t(\"accessMessage.cameraControl\")}\n \n \n
    \n
    \n {t(\"title\")}\n \n
    \n \n {viewers.map((viewer, i) => (\n \n ))}\n \n
    \n \n \n );\n};\n","import {\n RealtimeEventData,\n SecurityAlertMedia,\n SecurityAlertResolveInitiated,\n // SecurityAlertResolved,\n useSecurityAlertsNotifications,\n} from \"@lvt/security-alerts-notification-service-client\";\nimport { useViewNotification } from \"@lvt/view-notification-service-client\";\nimport { Box } from \"@material-ui/core\";\nimport { Alert as ToastAlert } from \"@material-ui/lab\";\nimport { Zoom } from \"@mui/material\";\nimport { useSnackbar } from \"notistack\";\nimport queryString from \"query-string\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\n\nimport { useLiveUnitMosaicDataQuery } from \"@/api/liveUnitMosaic/liveUnitMosaic\";\nimport { AlertService } from \"@/api/services/interfaces\";\nimport { AlertMediaTile } from \"@/common/components/liveUnitMosaic/AlertMediaTile/AlertMediaTile\";\nimport CameraStreamTile from \"@/common/components/liveUnitMosaic/CameraStreamTile/CameraStreamTile\";\nimport { AlertTimelineFooter } from \"@/common/components/liveUnitMosaic/Footer/AlertTimelineFooter/AlertTimelineFooter\";\nimport { LiveStreamFooter } from \"@/common/components/liveUnitMosaic/Footer/LiveStreamFooter/LiveStreamFooter\";\nimport Header from \"@/common/components/liveUnitMosaic/Header/Header\";\nimport { Mosaic } from \"@/common/components/liveUnitMosaic/Mosaic/Mosaic\";\nimport { Loading } from \"@/common/containers/Loading\";\nimport { AlertTileContext } from \"@/common/contexts/AlertTileContextType\";\nimport { useDispatch, useSelector } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { groupAlertsByTimestampCameraId } from \"@/utilities/alerts\";\nimport { Alert, raisedNotificationToMedia, TimestampCameraMedia } from \"@/utilities/types/alert\";\nimport { LiveUnitMosaicData } from \"@/utilities/types/mosaicData\";\nimport { Viewer } from \"@/utilities/types/viewer\";\n\nimport { DEFAULT_INITIAL_CONNECTION_TIME } from \"../alerts/AlertsPage/AlertsPage\";\nimport useStyles from \"./LiveUnitMosaicPage.styles\";\nimport { LiveUnitViewers } from \"./LiveUnitViewers/LiveUnitViewers\";\n\n\nexport interface LiveUnitMosaicPageParams {\n liveUnitId: string;\n}\n\nexport interface PageParams {\n contextId: string;\n alertId: string;\n}\n\ninterface LiveUnitMosaicPageProps {\n alertService: AlertService,\n /**\n * Determines how long to wait before showing the alert banner in ms (if the service still hasn't connected)\n */\n initialConnectionTime?: number;\n}\n\nexport type SetLiveUnitMosaicData = (value: (\n ((prevState: LiveUnitMosaicData | undefined) => LiveUnitMosaicData | undefined)\n | LiveUnitMosaicData\n | undefined\n)) => void;\n\nconst LiveUnitMosaicPage: FC = ({ alertService, initialConnectionTime = DEFAULT_INITIAL_CONNECTION_TIME }: LiveUnitMosaicPageProps) => {\n const { liveUnitId: liveUnitIdString } = useParams();\n const liveUnitId = parseInt(liveUnitIdString, 10); // Parse in base 10\n\n const urlLocation = useLocation();\n const { t } = useTranslation(\"translation\", { keyPrefix: \"components.liveUnitMosaicPage\" });\n const user = useSelector(state => state.user);\n\n const { data: mosaicData, isSuccess, error: getMosaicDataError } = useLiveUnitMosaicDataQuery(liveUnitId);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n //DISCUSS: Do we need the concept of contextId and alertId now that we know there's no timeline and we wouldnt be viewing any other alert (alert with diff id) from a current alert?\n\n const [alert, setAlert] = useState(undefined);\n const [isLive, setIsLive] = useState(true);\n\n const dispatch = useDispatch();\n const classes = useStyles();\n\n // Changes the media data sent to the alerts clips mosaic component and also shows the currently selected timestamp\n const [currentAlertTimestamp, setCurrentAlertTimestamp] = useState(\"\");\n const [shouldClipsPlay, setShouldClipsPlay] = useState(true);\n const [clipProgress, setClipProgress] = useState(0);\n const [isSeeking, setIsSeeking] = useState(false);\n\n const [liveUnitViewers] = useViewNotification(\"live-unit\", liveUnitIdString);\n\n const [viewers, setViewers] = useState([]);\n const getIsViewOnly = () => {\n // If the user doesn't exist from the store yet the user is view-only\n if (!user) return true;\n\n // If the user doesn't have a name the user is view-only\n if (!user.name) return true;\n\n // If there are other viewers the user is view-only\n if (viewers.length) {\n // If the current user's name is the same as the first viewer's name they are not view-only, return false\n // else the user is view-only\n return user.name !== viewers[0].name;\n } else {\n // If the user is the only viewer they are not view-only\n return false;\n }\n };\n const isViewOnly = getIsViewOnly();\n\n const alertId = alert?.alertId ? `${liveUnitIdString}.${alert.alertId}` : undefined;\n\n useViewNotification(\"alert\", alertId);\n\n const queryParsed = queryString.parse(urlLocation.search) as unknown as PageParams;\n\n // Flag representing if the initial connection time has expired\n const [isInitialConnection, setIsInitialConnection] = useState(true);\n\n const [securityAlertsCallbacks, securityAlertsConnectionState] = useSecurityAlertsNotifications();\n\n useEffect(() => {\n const updateViewers = () => {\n const luViewers: Viewer[] = liveUnitViewers.map(v => ({\n ...v,\n joined: new Date(v.joined),\n viewOnlyAccess: true,\n }));\n\n if (luViewers.length) luViewers[0].viewOnlyAccess = false;\n\n luViewers.sort((a, b) => a.joined.valueOf() - b.joined.valueOf());\n\n setViewers(luViewers);\n };\n\n updateViewers();\n }, [liveUnitViewers]);\n\n useEffect(() => {\n alertService.getAlert(queryParsed.contextId).then((res) => {\n setAlert(res);\n }).catch(() => {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: t(\"errors.getAlert\"),\n }),\n );\n });\n }, [queryParsed.contextId]);\n\n const groupedAlertMedia: TimestampCameraMedia[] | undefined = useMemo(() => {\n if (alert) {\n return groupAlertsByTimestampCameraId(alert.media);\n }\n }, [alert]);\n\n //Set first alert as primary alert. This can also be updated to be sent by the backend.\n const primaryAlertTimestamp = (groupedAlertMedia && groupedAlertMedia.length !== 0) ? groupedAlertMedia[0].timestamp : \"\";\n\n useEffect(() => {\n if (groupedAlertMedia?.length) {\n // Set current alert as the first)\n setCurrentAlertTimestamp(groupedAlertMedia[0].timestamp);\n }\n }, [groupedAlertMedia]);\n\n useEffect(() => {\n if (getMosaicDataError) {\n dispatch(\n addAlert({\n severity: Severity.Error,\n message: t(\"errors.getLiveUnitStreamData\"),\n }),\n );\n }\n }, [getMosaicDataError]);\n\n useEffect(() => {\n if (queryParsed?.contextId) {\n if (queryParsed?.alertId) {\n setIsLive(false);\n }\n }\n }, [queryParsed]);\n\n useEffect(() => {\n const registerHandlers = () => {\n securityAlertsCallbacks.onSecurityAlertMediaAvailable((media: RealtimeEventData) => {\n setAlert((previousAlert) => {\n if (previousAlert && previousAlert.alertId === media.payload.alertId) {\n previousAlert.media.push(raisedNotificationToMedia(media.payload));\n\n return { ...previousAlert };\n }\n\n return previousAlert;\n });\n });\n\n // For the UI, an alert can be removed from the list when resolution has been initiated.\n securityAlertsCallbacks.onSecurityAlertResolveInitiated((resolveInitiated: RealtimeEventData) => {\n setAlert((previousAlert) => {\n if (previousAlert && previousAlert.alertId === resolveInitiated.payload.alertId) {\n return { ...previousAlert, state: \"resolved\" };\n }\n\n return previousAlert;\n });\n });\n\n // TODO: Use this after mvp to show alert resolution notification\n // securityAlertsCallbacks.onSecurityAlertResolved((resolved: RealtimeEventData) => {});\n };\n\n registerHandlers();\n }, []);\n\n // Set a timeout to prevent the disconnect banner from showing up during initial connection\n useEffect(() => {\n const timeoutId = setTimeout(() => setIsInitialConnection(false), initialConnectionTime);\n\n return () => clearTimeout(timeoutId);\n }, []);\n\n //Get data with the selected timestamp for the Alerts grid\n const camAlertMediaList = useMemo(() => {\n const matchList = groupedAlertMedia?.filter((ele) => ele.timestamp === currentAlertTimestamp) || [];\n\n if (matchList.length === 0) {\n return [];\n }\n\n return matchList[0].cameraMediaList;\n }, [currentAlertTimestamp, groupedAlertMedia]);\n\n useEffect(() => {\n if (securityAlertsConnectionState === \"disconnected\" && !isInitialConnection) {\n const alert = (\n \n {t(\"errors.realtimeEvents\")}\n \n );\n\n const key = enqueueSnackbar(alert, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8_000,\n key: \"disconnected-alert-message\",\n onClick: () => closeSnackbar(key),\n preventDuplicate: true,\n variant: Severity.Error,\n });\n }\n }, [securityAlertsConnectionState, isInitialConnection]);\n\n const mosaicHeight = \"calc(100vh - 68px - 76px)\"; // view - header - footer\n const history = useHistory();\n\n if (alert && alert.state === \"resolved\") history.push(\"/alerts\");\n\n return (\n \n
    \n
    \n 1}>\n {/* Zoom requires this box to have a ref to hold on to */}\n {viewers.length > 1 && }\n \n \n
    \n {isLive ?\n <>\n
    \n {mosaicData && isSuccess ?\n \n :\n // TODO: add case for isError for useLiveUnitMosaicDataQuery\n \n }\n
    \n \n \n :\n <>\n {alert ? <>\n \n {groupedAlertMedia ?\n \n :\n \n }\n
    \n \n : }\n \n }\n
    \n \n );\n};\n\nexport default LiveUnitMosaicPage;\n","import { makeStyles } from \"@material-ui/core\";\n\n\nexport default makeStyles((theme) => ({\n actionButtons: {\n flexWrap: \"nowrap\",\n width: \"auto\",\n position: \"absolute\",\n zIndex: 4,\n bottom: 0,\n right: 0,\n padding: 10,\n },\n closeButton: {\n position: \"absolute\",\n top: 12,\n left: 10,\n padding: 8,\n height: 40,\n width: 40,\n zIndex: 4,\n color: theme.palette.common.white,\n backgroundColor: \"rgba(51, 51, 51, 0.65)\",\n \"&:hover\": {\n color: theme.palette.secondary.light,\n backgroundColor: \"rgba(51, 51, 51, 0.45)\",\n },\n },\n camerasContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-evenly\",\n flexWrap: \"wrap\",\n height: \"100%\",\n width: \"100%\",\n },\n fadeControls: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n opacity: 0.2,\n transition: \"opacity 0.15s linear 0.5s\",\n \"&:hover\": {\n opacity: 1,\n transitionDelay: \"0s\",\n },\n },\n fullScreenButton: {\n position: \"absolute\",\n top: 0,\n right: 0,\n padding: 10,\n zIndex: 4,\n backgroundColor: \"rgba(51, 51, 51, 0.65)\",\n \"&:hover\": {\n color: theme.palette.secondary.light,\n backgroundColor: \"rgba(51, 51, 51, 0.45)\",\n },\n },\n hoverOverlayContent: {\n position: \"absolute\",\n width: \"100%\",\n bottom: 0,\n left: 0,\n background: \"linear-gradient(0deg, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.5) 50%, rgba(0,0,0,0) 100%)\",\n zIndex: 4,\n },\n item: {\n backgroundColor: theme.palette.primary.dark,\n position: \"relative\",\n \"& video\": {\n objectFit: \"contain\",\n },\n \"& image\": {\n objectFit: \"contain\",\n },\n },\n overlayText: {\n display: \"inline-block\",\n \"& a\": {\n color: theme.palette.common.white,\n },\n padding: 10,\n },\n header: {\n backgroundColor: theme.palette.common.white,\n height: \"auto\",\n },\n title: {\n flexGrow: 1,\n },\n body: {\n backgroundColor: theme.palette.common.black,\n },\n footer: {\n height: \"auto\",\n bottom: 0,\n position: \"absolute\",\n },\n}));\n","import { Alert as StreamAlert, CameraStream, CameraStreamContext, cameraStreamServiceImpl, CheckInResponse, DimensionsOptions, FullScreen, StartStreamResponse, StreamingStatus } from \"@lvt/streaming\";\nimport { Box, Grid, IconButton, Link, Typography } from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { Alert } from \"@material-ui/lab\";\nimport DetectRTC from \"detectrtc\";\nimport { useSnackbar } from \"notistack\";\nimport { FC, useCallback, useEffect, useRef, useState } from \"react\";\n\nimport client from \"@/api/client\";\nimport useStyles from \"@/common/components/LegacyMosaic/Mosaic.styles\";\nimport PresetsButton from \"@/common/components/streaming/ActionButtons/PresetsButton/PresetsButton\";\nimport { useSelector } from \"@/store\";\nimport CameraStreamData from \"@/utilities/types/cameraStreamData\";\nimport { OpenButton } from \"@/utilities/types/streaming\";\n\n\ninterface MosaicItemProps {\n camera: CameraStreamData;\n streams: number;\n onClose?: () => void;\n isLandscape: boolean;\n liveUnitId: number;\n}\n\nconst MosaicItem: FC = ({ camera, streams, onClose = undefined, isLandscape, liveUnitId }) => {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [buttonState, setButtonState] = useState(OpenButton.None);\n const [anchorEl, setAnchorEl] = useState(null);\n const [height, setHeight] = useState(50);\n const [width, setWidth] = useState(50);\n const [dimensions, setDimensions] = useState();\n const [startStreamData, setStartStreamData] = useState();\n const [checkInData, setCheckInData] = useState();\n const [streamingStatus, setStreamingStatus] = useState(StreamingStatus.Initial);\n const [fullScreen, setFullScreen] = useState(false);\n const classes = useStyles();\n const divRef = useRef(null);\n const refObserver = useRef();\n const videoPreference = useSelector((state) => (state.user.videoPreference == \"html5\" ? \"html5\" : \"webrtc\"));\n\n const cameraStreamService = cameraStreamServiceImpl(client);\n\n const handleMenu = (button: OpenButton) => {\n setAnchorEl(divRef.current);\n button === buttonState ? setButtonState(OpenButton.None) : setButtonState(button);\n };\n\n const onAlertMessage = (alert: StreamAlert) => {\n closeSnackbar(alert.type);\n\n const AlertNotification = (\n \n {`${camera.cameraName}: ${alert.message}`}\n \n );\n\n enqueueSnackbar(AlertNotification, {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n autoHideDuration: 8000,\n key: alert.message,\n preventDuplicate: true,\n variant: alert.level,\n });\n };\n\n const onError = (e: any) => {\n console.log(\"Stream error\", e);\n };\n\n const onStatusChange = (status: StreamingStatus) => {\n // If this check is not present, the onIdle wake up will use stale streaming data\n if (status === StreamingStatus.Idle) setStartStreamData(undefined);\n\n setStreamingStatus(status);\n };\n\n const startStream = (cameraId: number) => {\n return cameraStreamService.startStream(cameraId)\n .then((data) => setStartStreamData(data));\n };\n\n const checkIn = (cameraId: number, streamRecordId: number) => {\n cameraStreamService.checkIn(cameraId, streamRecordId)\n .then((res) => setCheckInData(res))\n .catch(() => {\n onAlertMessage({\n type: \"checkInFailed\",\n level: \"error\",\n message: \"Check-in failed\",\n });\n });\n };\n\n useEffect(() => {\n if (isLandscape) {\n setHeight(100 / Math.floor((Math.sqrt(streams))));\n setWidth(100 / Math.ceil((Math.sqrt(streams))));\n } else {\n setHeight(100 / (streams / 3));\n setWidth(100 / 3);\n }\n }, [streams]);\n\n const refStreamContainerCb = useCallback((node: HTMLDivElement | null) => {\n if (refObserver.current) {\n refObserver.current.disconnect();\n }\n\n if (node) {\n const resize = () => {\n const streamBox = node?.getBoundingClientRect();\n\n setDimensions({ width: streamBox?.width, height: streamBox?.height });\n };\n\n refObserver.current = new ResizeObserver(resize);\n\n refObserver.current.observe(node);\n resize();\n }\n }, [streams]);\n\n const usingHtml5Player = !camera.capabilities?.webrtc || videoPreference == \"html5\" || !DetectRTC.isWebRTCSupported;\n\n return (\n
    \n
    \n \n \n {ctx =>\n (
    \n\n {onClose && \n \n }\n\n \n \n \n {camera.liveUnitName}\n {camera.cameraName}\n \n \n \n\n {streamingStatus === StreamingStatus.Active &&\n <>\n setFullScreen(isFullScreen)}\n />\n\n \n \n \n {camera.liveUnitName}\n {camera.cameraName}\n \n \n\n \n {\n \n }\n \n \n \n }\n
    )\n }\n
    \n \n
    \n
    \n\n );\n};\n\nexport default MosaicItem;\n","import { FC } from \"react\";\n\nimport useStyles from \"@/common/components/LegacyMosaic/Mosaic.styles\";\nimport MosaicItem from \"@/common/components/LegacyMosaic/MosaicItem\";\nimport CameraStreamData from \"@/utilities/types/cameraStreamData\";\n\n\ninterface MosaicProps {\n cameras: CameraStreamData[];\n onCloseCamera?: (cameraId: number) => void;\n liveUnitId: number;\n}\n\nconst Mosaic: FC = ({ cameras, onCloseCamera, liveUnitId }) => {\n const classes = useStyles();\n\n const isLandscape = window.innerWidth > window.innerHeight;\n\n return (\n
    \n {cameras\n .map((camera: CameraStreamData, index) => (\n onCloseCamera(camera.cameraId) : undefined}\n isLandscape={isLandscape}\n liveUnitId={liveUnitId}\n />\n ))\n }\n
    \n );\n};\n\nexport default Mosaic;\n","import globals from \"@lvt/globals\";\nimport { IconButton, Toolbar, Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport KeyboardBackspaceIcon from \"@material-ui/icons/KeyboardBackspace\";\nimport { FC, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { useParams } from \"react-router-dom\";\n\nimport client from \"@/api/client\";\nimport Mosaic from \"@/common/components/LegacyMosaic/Mosaic\";\nimport { MosaicData } from \"@/utilities/types/mosaicData\";\n\n\ninterface MosaicPageParams {\n mosaicId: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.white,\n flexGrow: 1,\n },\n title: {\n flexGrow: 1,\n },\n}));\n\nconst MosaicPage: FC = () => {\n const [mosaicData, setMosaicData] = useState(null);\n const { mosaicId: mosaicIdString } = useParams();\n const mosaicId = parseInt(mosaicIdString, 10); // Parse in base 10\n const history = useHistory();\n const classes = useStyles();\n\n const onClickBackArrow = () => history.push(\"/\");\n\n const onCloseCamera = (cameraId: number) => {\n if (!mosaicData?.cameras) return;\n\n const index = mosaicData.cameras.findIndex(c => c.cameraId === cameraId);\n\n if (index != null && index >= 0) {\n mosaicData.cameras.splice(index, 1);\n setMosaicData({ ...mosaicData });\n }\n };\n\n useEffect(() => {\n const getMosaicData = async () => {\n client.get(`${globals.userdashboard.proxyUrl}/api/vms/mosaic/${mosaicId}`)\n .then((res) => {\n setMosaicData(res.data.data as MosaicData);\n });\n };\n\n if (mosaicId) {\n getMosaicData();\n }\n }, [mosaicId]);\n\n\n return (\n <>\n {/*TODO: Add loading*/}\n
    \n \n \n \n \n \n {mosaicData?.name ?? \"loading...\"}\n \n \n
    \n\n {mosaicData &&\n
    \n camera.presets.length)}\n onCloseCamera={onCloseCamera}\n liveUnitId={parseInt(mosaicData.id, 10)}\n />\n
    \n }\n \n );\n};\n\nexport default MosaicPage;\n","import LuxonAdapter from \"@date-io/luxon\";\nimport { authServiceImpl, ExpiredSessionModal } from \"@lvt/expired-session-modal\";\nimport globals from \"@lvt/globals\";\nimport { theme } from \"@lvt/material\";\nimport {\n SecurityAlertsNotificationContextWrapper,\n SecurityAlertsNotificationService,\n SocketIOSecurityAlertsNotificationService,\n} from \"@lvt/security-alerts-notification-service-client\";\nimport {\n SocketIOViewNotificationService,\n ViewNotificationContextWrapper,\n ViewNotificationService,\n} from \"@lvt/view-notification-service-client\";\nimport { CssBaseline } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport { SnackbarProvider } from \"notistack\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Provider } from \"react-redux\";\nimport { Route, Switch } from \"react-router-dom\";\n\nimport client from \"@/api/client\";\nimport { fetchClients } from \"@/api/clients\";\nimport { archiveMetadataService, presetImagesService, videoRetrievalService } from \"@/api/services/implementations\";\nimport { alertService } from \"@/api/services/implementations/alert\";\nimport { fetchUserIdentity, fetchUserInfo, UserInfo } from \"@/api/user\";\nimport { FeatureHubProvider } from \"@/common/components/Featurehub\";\nimport EmptyLayout from \"@/common/containers/EmptyLayout\";\nimport SideNavLayout from \"@/common/containers/SideNavLayout\";\nimport { ArchiveMetadataContextWrapper } from \"@/common/contexts/ArchiveMetadataContext\";\nimport { PresetImagesContextWrapper } from \"@/common/contexts/PresetImagesContext\";\nimport { VideoRetrievalContextWrapper } from \"@/common/contexts/VideoRetrievalContext\";\nimport { i18nInit } from \"@/i18n\";\nimport { createStore } from \"@/store\";\nimport { addAlert, Severity } from \"@/store/alerts/slice\";\nimport { setUserIdentity, setUserSession } from \"@/store/user/slice\";\nimport { OnFeatureFlag } from \"@/utilities/OnFeatureFlag\";\nimport { useFullStory } from \"@/utilities/hooks/fullstory\";\nimport LvtUrls from \"@/utilities/types/lvtUrls\";\nimport { MapLandingPage } from \"@/views\";\nimport AlertsPage from \"@/views/alerts/AlertsPage/AlertsPage\";\nimport { LiveUnitPage } from \"@/views/liveUnit/LiveUnitPage\";\nimport LiveUnitMosaicPage from \"@/views/liveUnitMosaic/LiveUnitMosaicPage\";\nimport MosaicPage from \"@/views/mosaic/MosaicPage\";\n\nimport ProductEntitlementsProvider from \"../contexts/productEntitlementsContext\";\n\n\ninterface AppProps {\n d3Url: string;\n portalUrl: string;\n selfServiceUrl: string;\n tokenUrl: string;\n vmsUrl: string;\n nextAppUrl: string;\n realtimeEventsUrl: string;\n walkMeScript: string;\n}\n\nexport const store = createStore();\n\nstore.dispatch(fetchClients());\n\n// start loading i18n before app renders.\nconst loadI18n = i18nInit();\n\nconst usePageStyles = makeStyles(() =>\n createStyles({\n snackBarError: {\n marginRight: \"5em\",\n backgroundColor: \"#FDECEA\",\n padding: \"0 13px 0 0\",\n },\n snackBarWarning: {\n marginRight: \"5em\",\n backgroundColor: \"#FFF4E5\",\n padding: \"0 13px 0 0\",\n },\n snackBarSuccess: {\n marginRight: \"5em\",\n backgroundColor: \"#EDF7ED\",\n padding: \"0 13px 0 0\",\n },\n }),\n);\n\nexport const App: React.FC = ({\n tokenUrl,\n portalUrl,\n d3Url,\n selfServiceUrl,\n vmsUrl,\n nextAppUrl,\n realtimeEventsUrl,\n walkMeScript,\n}) => {\n const FullStory = useFullStory();\n const pageClasses = usePageStyles();\n const [isAuthenticated, setIsAuthenticated] = useState(true);\n const authService = authServiceImpl(client);\n const [i18nLoaded, seti18nLoaded] = useState(false);\n\n const securityAlertsServiceRef = useRef(null);\n const getSecurityAlertsService = (): SecurityAlertsNotificationService => {\n if (!securityAlertsServiceRef.current) {\n // React suggests this pattern: https://react.dev/reference/react/useRef#avoiding-recreating-the-ref-contents\n securityAlertsServiceRef.current = new SocketIOSecurityAlertsNotificationService(\n `${realtimeEventsUrl}/security_alerts`,\n );\n }\n\n return securityAlertsServiceRef.current;\n };\n\n const viewServiceRef = useRef(null);\n const getViewService = (): ViewNotificationService => {\n if (!viewServiceRef.current) {\n // React suggests this pattern: https://react.dev/reference/react/useRef#avoiding-recreating-the-ref-contents\n viewServiceRef.current = new SocketIOViewNotificationService(`${realtimeEventsUrl}/view`);\n }\n\n return viewServiceRef.current;\n };\n\n const onAuthCheck = async () => {\n const isAuthed = await authService.authCheck();\n\n setIsAuthenticated(isAuthed);\n };\n\n useEffect(() => {\n fetchUserIdentity(tokenUrl)\n .then((userIdentity) => {\n loadWalkMe(userIdentity.userId);\n store.dispatch(setUserIdentity(userIdentity));\n store.dispatch(setUserSession());\n getSecurityAlertsService().setAuthToken(userIdentity.userToken);\n getViewService().setAuthToken(userIdentity.userToken);\n })\n .catch(() => {\n window.location.href = \"/auth/redirect\";\n });\n\n loadI18n.then(() => seti18nLoaded(true)).catch((e) => console.error(\"failed to load i18n\", e));\n\n store\n .dispatch(fetchUserInfo())\n .unwrap()\n .then((userInfo: UserInfo) => {\n FullStory.identify(userInfo.id.toString(), {\n displayName: userInfo.name,\n email: userInfo.username,\n });\n })\n .catch((error) => {\n console.log(error);\n store.dispatch(\n addAlert({\n severity: Severity.Error,\n message: \"Failed to retrieve user info\",\n }),\n );\n });\n }, []);\n\n const lvtUrls: LvtUrls = {\n portal: portalUrl,\n d3: d3Url,\n vms: vmsUrl,\n selfService: selfServiceUrl,\n nextApp: nextAppUrl,\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {i18nLoaded && (\n <>\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n );\n\n function loadWalkMe(userId: number) {\n try {\n /* @ts-ignore: Provide global UUID for WalkME to scrape */\n window.USERID = userId;\n\n // Add WalkME script tag\n const walkme = document.createElement(\"script\");\n\n walkme.type = \"text/javascript\";\n walkme.async = true;\n walkme.src = walkMeScript;\n\n const s = document.getElementsByTagName(\"script\")[0];\n\n s?.parentNode?.insertBefore(walkme, s);\n /* @ts-ignore */\n window._walkmeConfig = { smartLoad: true };\n } catch (e) {\n console.log(\"error loading WalkME\", e);\n }\n }\n};\n","import globals from \"@lvt/globals\";\nimport { BrowserTracing } from \"@sentry/browser\";\nimport * as Sentry from \"@sentry/react\";\nimport { createBrowserHistory } from \"history\";\nimport ReactDOM from \"react-dom\";\nimport { Router } from \"react-router-dom\";\n\nimport client from \"@/api/client\";\nimport \"@fontsource/montserrat\";\nimport \"@fontsource/rajdhani\";\nimport \"@fontsource/source-sans-pro\";\nimport { FeatureFlagServiceImpl } from \"@/api/services/implementations/featureFlag\";\nimport { App } from \"@/common/containers\";\nimport \"@/styles\";\nimport { FeatureFlagContextWrapper } from \"@/common/contexts/FeatureFlagContext\";\nimport * as FullStory from \"@/utilities/hooks/fullstory\";\n\n\nconst featureFlagService = FeatureFlagServiceImpl(client);\nconst history = createBrowserHistory();\n\n// sentry configuration\nif (globals.sentry.dsn) {\n Sentry.init({\n dsn: globals.sentry.dsn,\n environment: globals.sentry.environment,\n integrations: [\n new BrowserTracing({\n routingInstrumentation: Sentry.reactRouterV5Instrumentation(history),\n }),\n new Sentry.Replay(),\n ],\n normalizeDepth: 3,\n replaysOnErrorSampleRate: 0.1,\n replaysSessionSampleRate: 0.05,\n tracesSampleRate: globals.sentry.sampleRate,\n });\n}\n\n// Note this our lib, not the fullstory api. See: \"utilities/hooks/fullstory.ts\"\nconst fullStoryContext = FullStory.setup(globals.fullStory);\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\"),\n);\n\n/* PROJECT_NAME:removed */\n\n/* [prod:start] */\n// production message\nconsole.log(\n \"%c[PRODUCTION]\",\n \"background-color: #4287f5; color: #ffffff; font-weight: bold; padding: 4px 8px; border-radius: 4px;\",\n);\n/* [prod:end] */\n","import { AxiosInstance } from \"axios\";\n\nimport { FeatureFlagService } from \"../interfaces/FeatureFlag\";\n\n\nexport const FeatureFlagServiceImpl = (client: AxiosInstance): FeatureFlagService => {\n const getFeatureFlags = async () => {\n const res = await client.get(\"/api/feature_flags\");\n\n if (res.status !== 200) {\n console.error(\"Could not fetch feature flags\");\n\n return [];\n }\n\n return res.data.flags;\n };\n\n return { getFeatureFlags };\n};\n","(function(root){var bundle=function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]BACKOFF_CONFIG.maxDelay){_this._log.info(\"Exceeded max ICE retries\");return _this._mediaHandler.onerror(MEDIA_DISCONNECT_ERROR)}try{_this._mediaReconnectBackoff.backoff()}catch(error){if(!(error.message&&error.message===\"Backoff in progress.\")){throw error}}}return}var pc=_this._mediaHandler.version.pc;var isIceDisconnected=pc&&pc.iceConnectionState===\"disconnected\";var hasLowBytesWarning=_this._monitor.hasActiveWarning(\"bytesSent\",\"min\")||_this._monitor.hasActiveWarning(\"bytesReceived\",\"min\");if(type===LowBytes&&isIceDisconnected||type===ConnectionDisconnected&&hasLowBytesWarning||isEndOfIceCycle){var mediaReconnectionError=new errors_1.MediaErrors.ConnectionError(\"Media connection failed.\");_this._log.warn(\"ICE Connection disconnected.\");_this._publisher.warn(\"connection\",\"error\",mediaReconnectionError,_this);_this._publisher.info(\"connection\",\"reconnecting\",null,_this);_this._mediaReconnectStartTime=Date.now();_this._status=Call.State.Reconnecting;_this._mediaStatus=Call.State.Reconnecting;_this._mediaReconnectBackoff.reset();_this._mediaReconnectBackoff.backoff();_this.emit(\"reconnecting\",mediaReconnectionError)}};_this._onMediaReconnected=function(){if(_this._mediaStatus!==Call.State.Reconnecting){return}_this._log.info(\"ICE Connection reestablished.\");_this._mediaStatus=Call.State.Open;if(_this._signalingStatus===Call.State.Open){_this._publisher.info(\"connection\",\"reconnected\",null,_this);_this.emit(\"reconnected\");_this._status=Call.State.Open}};_this._onRinging=function(payload){_this._setCallSid(payload);if(_this._status!==Call.State.Connecting&&_this._status!==Call.State.Ringing){return}var hasEarlyMedia=!!payload.sdp;_this._status=Call.State.Ringing;_this._publisher.info(\"connection\",\"outgoing-ringing\",{hasEarlyMedia:hasEarlyMedia},_this);_this.emit(\"ringing\",hasEarlyMedia)};_this._onRTCSample=function(sample){var callMetrics=__assign(__assign({},sample),{inputVolume:_this._latestInputVolume,outputVolume:_this._latestOutputVolume});_this._codec=callMetrics.codecName;_this._metricsSamples.push(callMetrics);if(_this._metricsSamples.length>=METRICS_BATCH_SIZE){_this._publishMetrics()}_this.emit(\"sample\",sample)};_this._onSignalingReconnected=function(){if(_this._signalingStatus!==Call.State.Reconnecting){return}_this._log.info(\"Signaling Connection reestablished.\");_this._signalingStatus=Call.State.Open;if(_this._mediaStatus===Call.State.Open){_this._publisher.info(\"connection\",\"reconnected\",null,_this);_this.emit(\"reconnected\");_this._status=Call.State.Open}};_this._onTransportClose=function(){_this._log.error(\"Received transportClose from pstream\");_this.emit(\"transportClose\");if(_this._signalingReconnectToken){_this._status=Call.State.Reconnecting;_this._signalingStatus=Call.State.Reconnecting;_this.emit(\"reconnecting\",new errors_1.SignalingErrors.ConnectionDisconnected)}else{_this._status=Call.State.Closed;_this._signalingStatus=Call.State.Closed}};_this._reemitWarning=function(warningData,wasCleared){var groupPrefix=/^audio/.test(warningData.name)?\"audio-level-\":\"network-quality-\";var warningPrefix=WARNING_PREFIXES[warningData.threshold.name];var warningName;if(warningData.name in MULTIPLE_THRESHOLD_WARNING_NAMES){warningName=MULTIPLE_THRESHOLD_WARNING_NAMES[warningData.name][warningData.threshold.name]}else if(warningData.name in WARNING_NAMES){warningName=WARNING_NAMES[warningData.name]}var warning=warningPrefix+warningName;_this._emitWarning(groupPrefix,warning,warningData.threshold.value,warningData.values||warningData.value,wasCleared,warningData)};_this._reemitWarningCleared=function(warningData){_this._reemitWarning(warningData,true)};_this._isUnifiedPlanDefault=config.isUnifiedPlanDefault;_this._soundcache=config.soundcache;var message=options&&options.twimlParams||{};_this.customParameters=new Map(Object.entries(message).map(function(_a){var key=_a[0],val=_a[1];return[key,String(val)]}));Object.assign(_this._options,options);if(_this._options.callParameters){_this.parameters=_this._options.callParameters}if(_this._options.reconnectToken){_this._signalingReconnectToken=_this._options.reconnectToken}_this._direction=_this.parameters.CallSid?Call.CallDirection.Incoming:Call.CallDirection.Outgoing;if(_this._direction===Call.CallDirection.Incoming&&_this.parameters){_this.callerInfo=_this.parameters.StirStatus?{isVerified:_this.parameters.StirStatus===\"TN-Validation-Passed-A\"}:null}else{_this.callerInfo=null}_this._mediaReconnectBackoff=Backoff.exponential(BACKOFF_CONFIG);_this._mediaReconnectBackoff.on(\"ready\",function(){return _this._mediaHandler.iceRestart()});_this.outboundConnectionId=generateTempCallSid();var publisher=_this._publisher=config.publisher;if(_this._direction===Call.CallDirection.Incoming){publisher.info(\"connection\",\"incoming\",null,_this)}else{publisher.info(\"connection\",\"outgoing\",{preflight:_this._options.preflight},_this)}var monitor=_this._monitor=new(_this._options.StatsMonitor||statsMonitor_1.default);monitor.on(\"sample\",_this._onRTCSample);monitor.disableWarnings();setTimeout(function(){return monitor.enableWarnings()},METRICS_DELAY);monitor.on(\"warning\",function(data,wasCleared){if(data.name===\"bytesSent\"||data.name===\"bytesReceived\"){_this._onMediaFailure(Call.MediaFailure.LowBytes)}_this._reemitWarning(data,wasCleared)});monitor.on(\"warning-cleared\",function(data){_this._reemitWarningCleared(data)});_this._mediaHandler=new _this._options.MediaHandler(config.audioHelper,config.pstream,config.getUserMedia,{codecPreferences:_this._options.codecPreferences,dscp:_this._options.dscp,forceAggressiveIceNomination:_this._options.forceAggressiveIceNomination,isUnifiedPlan:_this._isUnifiedPlanDefault,maxAverageBitrate:_this._options.maxAverageBitrate,preflight:_this._options.preflight});_this.on(\"volume\",function(inputVolume,outputVolume){_this._inputVolumeStreak=_this._checkVolume(inputVolume,_this._inputVolumeStreak,_this._latestInputVolume,\"input\");_this._outputVolumeStreak=_this._checkVolume(outputVolume,_this._outputVolumeStreak,_this._latestOutputVolume,\"output\");_this._latestInputVolume=inputVolume;_this._latestOutputVolume=outputVolume});_this._mediaHandler.onvolume=function(inputVolume,outputVolume,internalInputVolume,internalOutputVolume){monitor.addVolumes(internalInputVolume/255*32767,internalOutputVolume/255*32767);_this.emit(\"volume\",inputVolume,outputVolume)};_this._mediaHandler.ondtlstransportstatechange=function(state){var level=state===\"failed\"?\"error\":\"debug\";_this._publisher.post(level,\"dtls-transport-state\",state,null,_this)};_this._mediaHandler.onpcconnectionstatechange=function(state){var level=\"debug\";var dtlsTransport=_this._mediaHandler.getRTCDtlsTransport();if(state===\"failed\"){level=dtlsTransport&&dtlsTransport.state===\"failed\"?\"error\":\"warning\"}_this._publisher.post(level,\"pc-connection-state\",state,null,_this)};_this._mediaHandler.onicecandidate=function(candidate){var payload=new icecandidate_1.IceCandidate(candidate).toPayload();_this._publisher.debug(\"ice-candidate\",\"ice-candidate\",payload,_this)};_this._mediaHandler.onselectedcandidatepairchange=function(pair){var localCandidatePayload=new icecandidate_1.IceCandidate(pair.local).toPayload();var remoteCandidatePayload=new icecandidate_1.IceCandidate(pair.remote,true).toPayload();_this._publisher.debug(\"ice-candidate\",\"selected-ice-candidate-pair\",{local_candidate:localCandidatePayload,remote_candidate:remoteCandidatePayload},_this)};_this._mediaHandler.oniceconnectionstatechange=function(state){var level=state===\"failed\"?\"error\":\"debug\";_this._publisher.post(level,\"ice-connection-state\",state,null,_this)};_this._mediaHandler.onicegatheringfailure=function(type){_this._publisher.warn(\"ice-gathering-state\",type,null,_this);_this._onMediaFailure(Call.MediaFailure.IceGatheringFailed)};_this._mediaHandler.onicegatheringstatechange=function(state){_this._publisher.debug(\"ice-gathering-state\",state,null,_this)};_this._mediaHandler.onsignalingstatechange=function(state){_this._publisher.debug(\"signaling-state\",state,null,_this)};_this._mediaHandler.ondisconnected=function(msg){_this._log.info(msg);_this._publisher.warn(\"network-quality-warning-raised\",\"ice-connectivity-lost\",{message:msg},_this);_this.emit(\"warning\",\"ice-connectivity-lost\");_this._onMediaFailure(Call.MediaFailure.ConnectionDisconnected)};_this._mediaHandler.onfailed=function(msg){_this._onMediaFailure(Call.MediaFailure.ConnectionFailed)};_this._mediaHandler.onconnected=function(){if(_this._status===Call.State.Reconnecting){_this._onMediaReconnected()}};_this._mediaHandler.onreconnected=function(msg){_this._log.info(msg);_this._publisher.info(\"network-quality-warning-cleared\",\"ice-connectivity-lost\",{message:msg},_this);_this.emit(\"warning-cleared\",\"ice-connectivity-lost\");_this._onMediaReconnected()};_this._mediaHandler.onerror=function(e){if(e.disconnect===true){_this._disconnect(e.info&&e.info.message)}var error=e.info.twilioError||new errors_1.GeneralErrors.UnknownError(e.info.message);_this._log.error(\"Received an error from MediaStream:\",e);_this.emit(\"error\",error)};_this._mediaHandler.onopen=function(){if(_this._status===Call.State.Open||_this._status===Call.State.Reconnecting){return}else if(_this._status===Call.State.Ringing||_this._status===Call.State.Connecting){_this.mute(false);_this._mediaStatus=Call.State.Open;_this._maybeTransitionToOpen()}else{_this._mediaHandler.close()}};_this._mediaHandler.onclose=function(){_this._status=Call.State.Closed;if(_this._options.shouldPlayDisconnect&&_this._options.shouldPlayDisconnect()&&!_this._isCancelled){_this._soundcache.get(device_1.default.SoundName.Disconnect).play()}monitor.disable();_this._publishMetrics();if(!_this._isCancelled){_this.emit(\"disconnect\",_this)}};_this._pstream=config.pstream;_this._pstream.on(\"cancel\",_this._onCancel);_this._pstream.on(\"ringing\",_this._onRinging);_this._pstream.on(\"transportClose\",_this._onTransportClose);_this._pstream.on(\"connected\",_this._onConnected);_this.on(\"error\",function(error){_this._publisher.error(\"connection\",\"error\",{code:error.code,message:error.message},_this);if(_this._pstream&&_this._pstream.status===\"disconnected\"){_this._cleanupEventListeners()}});_this.on(\"disconnect\",function(){_this._cleanupEventListeners()});return _this}Object.defineProperty(Call.prototype,\"direction\",{get:function(){return this._direction},enumerable:true,configurable:true});Object.defineProperty(Call.prototype,\"codec\",{get:function(){return this._codec},enumerable:true,configurable:true});Call.prototype._setInputTracksFromStream=function(stream){return this._mediaHandler.setInputTracksFromStream(stream)};Call.prototype._setSinkIds=function(sinkIds){return this._mediaHandler._setSinkIds(sinkIds)};Call.prototype.accept=function(options){var _this=this;if(this._status!==Call.State.Pending){return}options=options||{};var rtcConfiguration=options.rtcConfiguration||this._options.rtcConfiguration;var rtcConstraints=options.rtcConstraints||this._options.rtcConstraints||{};var audioConstraints=rtcConstraints.audio||{audio:true};this._status=Call.State.Connecting;var connect=function(){if(_this._status!==Call.State.Connecting){_this._cleanupEventListeners();_this._mediaHandler.close();return}var onAnswer=function(pc,reconnectToken){var eventName=_this._direction===Call.CallDirection.Incoming?\"accepted-by-local\":\"accepted-by-remote\";_this._publisher.info(\"connection\",eventName,null,_this);if(typeof reconnectToken===\"string\"){_this._signalingReconnectToken=reconnectToken}var _a=getPreferredCodecInfo(_this._mediaHandler.version.getSDP()),codecName=_a.codecName,codecParams=_a.codecParams;_this._publisher.info(\"settings\",\"codec\",{codec_params:codecParams,selected_codec:codecName},_this);_this._monitor.enable(pc)};var sinkIds=typeof _this._options.getSinkIds===\"function\"&&_this._options.getSinkIds();if(Array.isArray(sinkIds)){_this._mediaHandler._setSinkIds(sinkIds).catch(function(){})}_this._pstream.addListener(\"hangup\",_this._onHangup);if(_this._direction===Call.CallDirection.Incoming){_this._isAnswered=true;_this._pstream.on(\"answer\",_this._onAnswer.bind(_this));_this._mediaHandler.answerIncomingCall(_this.parameters.CallSid,_this._options.offerSdp,rtcConstraints,rtcConfiguration,onAnswer)}else{var params=Array.from(_this.customParameters.entries()).map(function(pair){return encodeURIComponent(pair[0])+\"=\"+encodeURIComponent(pair[1])}).join(\"&\");_this._pstream.on(\"answer\",_this._onAnswer.bind(_this));_this._mediaHandler.makeOutgoingCall(_this._pstream.token,params,_this.outboundConnectionId,rtcConstraints,rtcConfiguration,onAnswer)}};if(this._options.beforeAccept){this._options.beforeAccept(this)}var inputStream=typeof this._options.getInputStream===\"function\"&&this._options.getInputStream();var promise=inputStream?this._mediaHandler.setInputTracksFromStream(inputStream):this._mediaHandler.openWithConstraints(audioConstraints);promise.then(function(){_this._publisher.info(\"get-user-media\",\"succeeded\",{data:{audioConstraints:audioConstraints}},_this);connect()},function(error){var twilioError;if(error.code===31208||[\"PermissionDeniedError\",\"NotAllowedError\"].indexOf(error.name)!==-1){twilioError=new errors_1.UserMediaErrors.PermissionDeniedError;_this._publisher.error(\"get-user-media\",\"denied\",{data:{audioConstraints:audioConstraints,error:error}},_this)}else{twilioError=new errors_1.UserMediaErrors.AcquisitionFailedError;_this._publisher.error(\"get-user-media\",\"failed\",{data:{audioConstraints:audioConstraints,error:error}},_this)}_this._disconnect();_this.emit(\"error\",twilioError)})};Call.prototype.disconnect=function(){this._disconnect()};Call.prototype.getLocalStream=function(){return this._mediaHandler&&this._mediaHandler.stream};Call.prototype.getRemoteStream=function(){return this._mediaHandler&&this._mediaHandler._remoteStream};Call.prototype.ignore=function(){if(this._status!==Call.State.Pending){return}this._status=Call.State.Closed;this._mediaHandler.ignore(this.parameters.CallSid);this._publisher.info(\"connection\",\"ignored-by-local\",null,this)};Call.prototype.isMuted=function(){return this._mediaHandler.isMuted};Call.prototype.mute=function(shouldMute){if(shouldMute===void 0){shouldMute=true}var wasMuted=this._mediaHandler.isMuted;this._mediaHandler.mute(shouldMute);var isMuted=this._mediaHandler.isMuted;if(wasMuted!==isMuted){this._publisher.info(\"connection\",isMuted?\"muted\":\"unmuted\",null,this);this.emit(\"mute\",isMuted,this)}};Call.prototype.postFeedback=function(score,issue){if(typeof score===\"undefined\"||score===null){return this._postFeedbackDeclined()}if(!Object.values(Call.FeedbackScore).includes(score)){throw new errors_1.InvalidArgumentError(\"Feedback score must be one of: \"+Object.values(Call.FeedbackScore))}if(typeof issue!==\"undefined\"&&issue!==null&&!Object.values(Call.FeedbackIssue).includes(issue)){throw new errors_1.InvalidArgumentError(\"Feedback issue must be one of: \"+Object.values(Call.FeedbackIssue))}return this._publisher.info(\"feedback\",\"received\",{issue_name:issue,quality_score:score},this,true)};Call.prototype.reject=function(){if(this._status!==Call.State.Pending){return}this._pstream.reject(this.parameters.CallSid);this._status=Call.State.Closed;this.emit(\"reject\");this._mediaHandler.reject(this.parameters.CallSid);this._publisher.info(\"connection\",\"rejected-by-local\",null,this)};Call.prototype.sendDigits=function(digits){if(digits.match(/[^0-9*#w]/)){throw new errors_1.InvalidArgumentError(\"Illegal character passed into sendDigits\")}var sequence=[];digits.split(\"\").forEach(function(digit){var dtmf=digit!==\"w\"?\"dtmf\"+digit:\"\";if(dtmf===\"dtmf*\"){dtmf=\"dtmfs\"}if(dtmf===\"dtmf#\"){dtmf=\"dtmfh\"}sequence.push(dtmf)});(function playNextDigit(soundCache,dialtonePlayer){var digit=sequence.shift();if(digit){if(dialtonePlayer){dialtonePlayer.play(digit)}else{soundCache.get(digit).play()}}if(sequence.length){setTimeout(playNextDigit.bind(null,soundCache),200)}})(this._soundcache,this._options.dialtonePlayer);var dtmfSender=this._mediaHandler.getOrCreateDTMFSender();function insertDTMF(dtmfs){if(!dtmfs.length){return}var dtmf=dtmfs.shift();if(dtmf&&dtmf.length){dtmfSender.insertDTMF(dtmf,DTMF_TONE_DURATION,DTMF_INTER_TONE_GAP)}setTimeout(insertDTMF.bind(null,dtmfs),DTMF_PAUSE_DURATION)}if(dtmfSender){if(!(\"canInsertDTMF\"in dtmfSender)||dtmfSender.canInsertDTMF){this._log.info(\"Sending digits using RTCDTMFSender\");insertDTMF(digits.split(\"w\"));return}this._log.info(\"RTCDTMFSender cannot insert DTMF\")}this._log.info(\"Sending digits over PStream\");if(this._pstream!==null&&this._pstream.status!==\"disconnected\"){this._pstream.dtmf(this.parameters.CallSid,digits)}else{var error=new errors_1.GeneralErrors.ConnectionError(\"Could not send DTMF: Signaling channel is disconnected\");this.emit(\"error\",error)}};Call.prototype.status=function(){return this._status};Call.prototype._checkVolume=function(currentVolume,currentStreak,lastValue,direction){var wasWarningRaised=currentStreak>=10;var newStreak=0;if(lastValue===currentVolume){newStreak=currentStreak}if(newStreak>=10){this._emitWarning(\"audio-level-\",\"constant-audio-\"+direction+\"-level\",10,newStreak,false)}else if(wasWarningRaised){this._emitWarning(\"audio-level-\",\"constant-audio-\"+direction+\"-level\",10,newStreak,true)}return newStreak};Call.prototype._cleanupEventListeners=function(){var _this=this;var cleanup=function(){if(!_this._pstream){return}_this._pstream.removeListener(\"answer\",_this._onAnswer);_this._pstream.removeListener(\"cancel\",_this._onCancel);_this._pstream.removeListener(\"hangup\",_this._onHangup);_this._pstream.removeListener(\"ringing\",_this._onRinging);_this._pstream.removeListener(\"transportClose\",_this._onTransportClose);_this._pstream.removeListener(\"connected\",_this._onConnected)};cleanup();setTimeout(cleanup,0)};Call.prototype._createMetricPayload=function(){var payload={call_sid:this.parameters.CallSid,dscp:!!this._options.dscp,sdk_version:C.RELEASE_VERSION,selected_region:this._options.selectedRegion};if(this._options.gateway){payload.gateway=this._options.gateway}if(this._options.region){payload.region=this._options.region}payload.direction=this._direction;return payload};Call.prototype._disconnect=function(message,wasRemote){message=typeof message===\"string\"?message:null;if(this._status!==Call.State.Open&&this._status!==Call.State.Connecting&&this._status!==Call.State.Reconnecting&&this._status!==Call.State.Ringing){return}this._log.info(\"Disconnecting...\");if(this._pstream!==null&&this._pstream.status!==\"disconnected\"&&this._shouldSendHangup){var callsid=this.parameters.CallSid||this.outboundConnectionId;if(callsid){this._pstream.hangup(callsid,message)}}this._cleanupEventListeners();this._mediaHandler.close();if(!wasRemote){this._publisher.info(\"connection\",\"disconnected-by-local\",null,this)}};Call.prototype._maybeTransitionToOpen=function(){var wasConnected=this._wasConnected;if(this._isAnswered){this._onSignalingReconnected();this._signalingStatus=Call.State.Open;if(this._mediaHandler&&this._mediaHandler.status===\"open\"){this._status=Call.State.Open;if(!this._wasConnected){this._wasConnected=true;this.emit(\"accept\",this)}}}};Call.prototype._postFeedbackDeclined=function(){return this._publisher.info(\"feedback\",\"received-none\",null,this,true)};Call.prototype._publishMetrics=function(){var _this=this;if(this._metricsSamples.length===0){return}this._publisher.postMetrics(\"quality-metrics-samples\",\"metrics-sample\",this._metricsSamples.splice(0),this._createMetricPayload(),this).catch(function(e){_this._log.warn(\"Unable to post metrics to Insights. Received error:\",e)})};Call.prototype._setCallSid=function(payload){var callSid=payload.callsid;if(!callSid){return}this.parameters.CallSid=callSid;this._mediaHandler.callSid=callSid};Call.toString=function(){return\"[Twilio.Call class]\"};return Call}(events_1.EventEmitter);(function(Call){var State;(function(State){State[\"Closed\"]=\"closed\";State[\"Connecting\"]=\"connecting\";State[\"Open\"]=\"open\";State[\"Pending\"]=\"pending\";State[\"Reconnecting\"]=\"reconnecting\";State[\"Ringing\"]=\"ringing\"})(State=Call.State||(Call.State={}));var FeedbackIssue;(function(FeedbackIssue){FeedbackIssue[\"AudioLatency\"]=\"audio-latency\";FeedbackIssue[\"ChoppyAudio\"]=\"choppy-audio\";FeedbackIssue[\"DroppedCall\"]=\"dropped-call\";FeedbackIssue[\"Echo\"]=\"echo\";FeedbackIssue[\"NoisyCall\"]=\"noisy-call\";FeedbackIssue[\"OneWayAudio\"]=\"one-way-audio\"})(FeedbackIssue=Call.FeedbackIssue||(Call.FeedbackIssue={}));var FeedbackScore;(function(FeedbackScore){FeedbackScore[FeedbackScore[\"One\"]=1]=\"One\";FeedbackScore[FeedbackScore[\"Two\"]=2]=\"Two\";FeedbackScore[FeedbackScore[\"Three\"]=3]=\"Three\";FeedbackScore[FeedbackScore[\"Four\"]=4]=\"Four\";FeedbackScore[FeedbackScore[\"Five\"]=5]=\"Five\"})(FeedbackScore=Call.FeedbackScore||(Call.FeedbackScore={}));var CallDirection;(function(CallDirection){CallDirection[\"Incoming\"]=\"INCOMING\";CallDirection[\"Outgoing\"]=\"OUTGOING\"})(CallDirection=Call.CallDirection||(Call.CallDirection={}));var Codec;(function(Codec){Codec[\"Opus\"]=\"opus\";Codec[\"PCMU\"]=\"pcmu\"})(Codec=Call.Codec||(Call.Codec={}));var IceGatheringFailureReason;(function(IceGatheringFailureReason){IceGatheringFailureReason[\"None\"]=\"none\";IceGatheringFailureReason[\"Timeout\"]=\"timeout\"})(IceGatheringFailureReason=Call.IceGatheringFailureReason||(Call.IceGatheringFailureReason={}));var MediaFailure;(function(MediaFailure){MediaFailure[\"ConnectionDisconnected\"]=\"ConnectionDisconnected\";MediaFailure[\"ConnectionFailed\"]=\"ConnectionFailed\";MediaFailure[\"IceGatheringFailed\"]=\"IceGatheringFailed\";MediaFailure[\"LowBytes\"]=\"LowBytes\"})(MediaFailure=Call.MediaFailure||(Call.MediaFailure={}))})(Call||(Call={}));function generateTempCallSid(){return\"TJSxxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(c){var r=Math.random()*16|0;var v=c===\"x\"?r:r&3|8;return v.toString(16)})}exports.default=Call},{\"./constants\":7,\"./device\":9,\"./errors\":12,\"./log\":15,\"./rtc\":23,\"./rtc/icecandidate\":22,\"./rtc/sdp\":28,\"./statsMonitor\":34,\"./util\":35,backoff:42,events:48}],7:[function(require,module,exports){var PACKAGE_NAME=\"@twilio/voice-sdk\";var RELEASE_VERSION=\"2.1.0\";var SOUNDS_BASE_URL=\"https://sdk.twilio.com/js/client/sounds/releases/1.0.0\";module.exports.COWBELL_AUDIO_URL=SOUNDS_BASE_URL+\"/cowbell.mp3?cache=\"+RELEASE_VERSION;module.exports.ECHO_TEST_DURATION=2e4;module.exports.PACKAGE_NAME=PACKAGE_NAME;module.exports.RELEASE_VERSION=RELEASE_VERSION;module.exports.SOUNDS_BASE_URL=SOUNDS_BASE_URL;module.exports.USED_ERRORS=[\"AuthorizationErrors.AccessTokenExpired\",\"AuthorizationErrors.AccessTokenInvalid\",\"AuthorizationErrors.AuthenticationFailed\",\"ClientErrors.BadRequest\",\"GeneralErrors.CallCancelledError\",\"GeneralErrors.ConnectionError\",\"GeneralErrors.TransportError\",\"GeneralErrors.UnknownError\",\"MediaErrors.ClientLocalDescFailed\",\"MediaErrors.ClientRemoteDescFailed\",\"MediaErrors.ConnectionError\",\"SignalingErrors.ConnectionDisconnected\",\"SignalingErrors.ConnectionError\",\"UserMediaErrors.PermissionDeniedError\",\"UserMediaErrors.AcquisitionFailedError\"]},{}],8:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var Deferred=function(){function Deferred(){var _this=this;this._promise=new Promise(function(resolve,reject){_this._resolve=resolve;_this._reject=reject})}Object.defineProperty(Deferred.prototype,\"promise\",{get:function(){return this._promise},enumerable:true,configurable:true});Deferred.prototype.reject=function(reason){this._reject(reason)};Deferred.prototype.resolve=function(value){this._resolve(value)};return Deferred}();exports.default=Deferred},{}],9:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]0){var preferredURI=preferredURIs[0];_this._preferredURI=regions_1.createSignalingEndpointURL(preferredURI)}else{_this._log.info(\"Could not parse a preferred URI from the stream#connected event.\")}if(_this._shouldReRegister){_this.register()}};_this._onSignalingError=function(payload){if(typeof payload!==\"object\"){return}var originalError=payload.error,callsid=payload.callsid;if(typeof originalError!==\"object\"){return}var call=typeof callsid===\"string\"&&_this._findCall(callsid)||undefined;var code=originalError.code,customMessage=originalError.message;var twilioError=originalError.twilioError;if(typeof code===\"number\"){if(code===31201){twilioError=new errors_1.AuthorizationErrors.AuthenticationFailed(originalError)}else if(code===31204){twilioError=new errors_1.AuthorizationErrors.AccessTokenInvalid(originalError)}else if(code===31205){_this._stopRegistrationTimer();twilioError=new errors_1.AuthorizationErrors.AccessTokenExpired(originalError)}else if(errors_1.hasErrorByCode(code)){twilioError=new(errors_1.getErrorByCode(code))(originalError)}}if(!twilioError){_this._log.error(\"Unknown signaling error: \",originalError);twilioError=new errors_1.GeneralErrors.UnknownError(customMessage,originalError)}_this._log.info(\"Received error: \",twilioError);_this.emit(Device.EventName.Error,twilioError,call)};_this._onSignalingInvite=function(payload){return __awaiter(_this,void 0,void 0,function(){var wasBusy,callParameters,customParameters,call,play;var _this=this;return __generator(this,function(_a){switch(_a.label){case 0:wasBusy=!!this._activeCall;if(wasBusy&&!this._options.allowIncomingWhileBusy){this._log.info(\"Device busy; ignoring incoming invite\");return[2]}if(!payload.callsid||!payload.sdp){this.emit(Device.EventName.Error,new errors_1.ClientErrors.BadRequest(\"Malformed invite from gateway\"));return[2]}callParameters=payload.parameters||{};callParameters.CallSid=callParameters.CallSid||payload.callsid;customParameters=Object.assign({},util_1.queryToJson(callParameters.Params));return[4,this._makeCall(customParameters,{callParameters:callParameters,offerSdp:payload.sdp,reconnectToken:payload.reconnect})];case 1:call=_a.sent();this._calls.push(call);call.once(\"accept\",function(){_this._soundcache.get(Device.SoundName.Incoming).stop();_this._publishNetworkChange()});play=this._enabledSounds.incoming&&!wasBusy?function(){return _this._soundcache.get(Device.SoundName.Incoming).play()}:function(){return Promise.resolve()};this._showIncomingCall(call,play);return[2]}})})};_this._onSignalingOffline=function(){_this._log.info(\"Stream is offline\");_this._edge=null;_this._region=null;_this._shouldReRegister=_this.state!==Device.State.Unregistered;_this._setState(Device.State.Unregistered)};_this._onSignalingReady=function(){_this._log.info(\"Stream is ready\");_this._setState(Device.State.Registered)};_this._publishNetworkChange=function(){if(!_this._activeCall){return}if(_this._networkInformation){_this._publisher.info(\"network-information\",\"network-change\",{connection_type:_this._networkInformation.type,downlink:_this._networkInformation.downlink,downlinkMax:_this._networkInformation.downlinkMax,effective_type:_this._networkInformation.effectiveType,rtt:_this._networkInformation.rtt},_this._activeCall)}};_this._updateInputStream=function(inputStream){var call=_this._activeCall;if(call&&!inputStream){return Promise.reject(new errors_1.InvalidStateError(\"Cannot unset input device while a call is in progress.\"))}_this._callInputStream=inputStream;return call?call._setInputTracksFromStream(inputStream):Promise.resolve()};_this._updateSinkIds=function(type,sinkIds){var promise=type===\"ringtone\"?_this._updateRingtoneSinkIds(sinkIds):_this._updateSpeakerSinkIds(sinkIds);return promise.then(function(){_this._publisher.info(\"audio\",type+\"-devices-set\",{audio_device_ids:sinkIds},_this._activeCall)},function(error){_this._publisher.error(\"audio\",type+\"-devices-set-failed\",{audio_device_ids:sinkIds,message:error.message},_this._activeCall);throw error})};_this.updateToken(token);if(util_1.isLegacyEdge()){throw new errors_1.NotSupportedError(\"Microsoft Edge Legacy (https://support.microsoft.com/en-us/help/4533505/what-is-microsoft-edge-legacy) \"+\"is deprecated and will not be able to connect to Twilio to make or receive calls after September 1st, 2020. \"+\"Please see this documentation for a list of supported browsers \"+\"https://www.twilio.com/docs/voice/client/javascript#supported-browsers\")}if(!Device.isSupported&&options.ignoreBrowserSupport){if(window&&window.location&&window.location.protocol===\"http:\"){throw new errors_1.NotSupportedError(\"twilio.js wasn't able to find WebRTC browser support. This is most likely because this page is served over http rather than https, which does not support WebRTC in many browsers. Please load this page over https and try again.\")}throw new errors_1.NotSupportedError(\"twilio.js 1.3+ SDKs require WebRTC browser support. For more information, see . If you have any questions about this announcement, please contact Twilio Support at .\")}if(window){var root=window;var browser=root.msBrowser||root.browser||root.chrome;_this._isBrowserExtension=!!browser&&!!browser.runtime&&!!browser.runtime.id||!!root.safari&&!!root.safari.extension}if(_this._isBrowserExtension){_this._log.info(\"Running as browser extension.\")}if(navigator){var n=navigator;_this._networkInformation=n.connection||n.mozConnection||n.webkitConnection}if(_this._networkInformation&&typeof _this._networkInformation.addEventListener===\"function\"){_this._networkInformation.addEventListener(\"change\",_this._publishNetworkChange)}Device._getOrCreateAudioContext();if(Device._audioContext){if(!Device._dialtonePlayer){Device._dialtonePlayer=new dialtonePlayer_1.default(Device._audioContext)}}if(typeof Device._isUnifiedPlanDefault===\"undefined\"){Device._isUnifiedPlanDefault=typeof window!==\"undefined\"&&typeof RTCPeerConnection!==\"undefined\"&&typeof RTCRtpTransceiver!==\"undefined\"?util_1.isUnifiedPlanDefault(window,window.navigator,RTCPeerConnection,RTCRtpTransceiver):false}_this._boundDestroy=_this.destroy.bind(_this);_this._boundConfirmClose=_this._confirmClose.bind(_this);if(typeof window!==\"undefined\"&&window.addEventListener){window.addEventListener(\"unload\",_this._boundDestroy);window.addEventListener(\"pagehide\",_this._boundDestroy)}_this.updateOptions(options);return _this}Object.defineProperty(Device,\"audioContext\",{get:function(){return Device._audioContext},enumerable:true,configurable:true});Object.defineProperty(Device,\"extension\",{get:function(){var a=typeof document!==\"undefined\"?document.createElement(\"audio\"):{canPlayType:false};var canPlayMp3;try{canPlayMp3=a.canPlayType&&!!a.canPlayType(\"audio/mpeg\").replace(/no/,\"\")}catch(e){canPlayMp3=false}var canPlayVorbis;try{canPlayVorbis=a.canPlayType&&!!a.canPlayType(\"audio/ogg;codecs='vorbis'\").replace(/no/,\"\")}catch(e){canPlayVorbis=false}return canPlayVorbis&&!canPlayMp3?\"ogg\":\"mp3\"},enumerable:true,configurable:true});Object.defineProperty(Device,\"isSupported\",{get:function(){return rtc.enabled()},enumerable:true,configurable:true});Object.defineProperty(Device,\"packageName\",{get:function(){return C.PACKAGE_NAME},enumerable:true,configurable:true});Device.runPreflight=function(token,options){return new preflight_1.PreflightTest(token,__assign({audioContext:Device._getOrCreateAudioContext()},options))};Device.toString=function(){return\"[Twilio.Device class]\"};Object.defineProperty(Device,\"version\",{get:function(){return C.RELEASE_VERSION},enumerable:true,configurable:true});Device._getOrCreateAudioContext=function(){if(!Device._audioContext){if(typeof AudioContext!==\"undefined\"){Device._audioContext=new AudioContext}else if(typeof webkitAudioContext!==\"undefined\"){Device._audioContext=new webkitAudioContext}}return Device._audioContext};Object.defineProperty(Device.prototype,\"audio\",{get:function(){return this._audio},enumerable:true,configurable:true});Device.prototype.connect=function(options){if(options===void 0){options={}}return __awaiter(this,void 0,void 0,function(){var activeCall,_a;return __generator(this,function(_b){switch(_b.label){case 0:this._throwIfDestroyed();if(this._activeCall){throw new errors_1.InvalidStateError(\"A Call is already active\")}_a=this;return[4,this._makeCall(options.params||{},{rtcConfiguration:options.rtcConfiguration})];case 1:activeCall=_a._activeCall=_b.sent();this._calls.splice(0).forEach(function(call){return call.ignore()});this._soundcache.get(Device.SoundName.Incoming).stop();activeCall.accept({rtcConstraints:options.rtcConstraints});this._publishNetworkChange();return[2,activeCall]}})})};Object.defineProperty(Device.prototype,\"calls\",{get:function(){return this._calls},enumerable:true,configurable:true});Device.prototype.destroy=function(){this.disconnectAll();this._stopRegistrationTimer();if(this._audio){this._audio._unbind()}this._destroyStream();this._destroyPublisher();this._destroyAudioHelper();if(this._networkInformation&&typeof this._networkInformation.removeEventListener===\"function\"){this._networkInformation.removeEventListener(\"change\",this._publishNetworkChange)}if(typeof window!==\"undefined\"&&window.removeEventListener){window.removeEventListener(\"beforeunload\",this._boundConfirmClose);window.removeEventListener(\"unload\",this._boundDestroy);window.removeEventListener(\"pagehide\",this._boundDestroy)}this._setState(Device.State.Destroyed);events_1.EventEmitter.prototype.removeAllListeners.call(this)};Device.prototype.disconnectAll=function(){var calls=this._calls.splice(0);calls.forEach(function(call){return call.disconnect()});if(this._activeCall){this._activeCall.disconnect()}};Object.defineProperty(Device.prototype,\"edge\",{get:function(){return this._edge},enumerable:true,configurable:true});Object.defineProperty(Device.prototype,\"home\",{get:function(){return this._home},enumerable:true,configurable:true});Object.defineProperty(Device.prototype,\"identity\",{get:function(){return this._identity},enumerable:true,configurable:true});Object.defineProperty(Device.prototype,\"isBusy\",{get:function(){return!!this._activeCall},enumerable:true,configurable:true});Device.prototype.register=function(){return __awaiter(this,void 0,void 0,function(){var stream,streamReadyPromise;var _this=this;return __generator(this,function(_a){switch(_a.label){case 0:if(this.state!==Device.State.Unregistered){throw new errors_1.InvalidStateError('Attempt to register when device is in state \"'+this.state+'\". '+('Must be \"'+Device.State.Unregistered+'\".'))}this._setState(Device.State.Registering);return[4,this._streamConnectedPromise||this._setupStream()];case 1:stream=_a.sent();streamReadyPromise=new Promise(function(resolve){_this.once(Device.State.Registered,resolve)});return[4,this._sendPresence(true)];case 2:_a.sent();return[4,streamReadyPromise];case 3:_a.sent();return[2]}})})};Object.defineProperty(Device.prototype,\"state\",{get:function(){return this._state},enumerable:true,configurable:true});Object.defineProperty(Device.prototype,\"token\",{get:function(){return this._token},enumerable:true,configurable:true});Device.prototype.toString=function(){return\"[Twilio.Device instance]\"};Device.prototype.unregister=function(){return __awaiter(this,void 0,void 0,function(){var stream,streamOfflinePromise;return __generator(this,function(_a){switch(_a.label){case 0:if(this.state!==Device.State.Registered){throw new errors_1.InvalidStateError('Attempt to unregister when device is in state \"'+this.state+'\". '+('Must be \"'+Device.State.Registered+'\".'))}this._shouldReRegister=false;return[4,this._streamConnectedPromise];case 1:stream=_a.sent();streamOfflinePromise=new Promise(function(resolve){stream.on(\"offline\",resolve)});return[4,this._sendPresence(false)];case 2:_a.sent();return[4,streamOfflinePromise];case 3:_a.sent();return[2]}})})};Device.prototype.updateOptions=function(options){if(options===void 0){options={}}if(this.state===Device.State.Destroyed){throw new errors_1.InvalidStateError('Attempt to \"updateOptions\" when device is in state \"'+this.state+'\".')}this._options=__assign(__assign(__assign({},this._defaultOptions),this._options),options);var originalChunderURIs=new Set(this._chunderURIs);var chunderw=typeof this._options.chunderw===\"string\"?[this._options.chunderw]:Array.isArray(this._options.chunderw)&&this._options.chunderw;var newChunderURIs=this._chunderURIs=(chunderw||regions_1.getChunderURIs(this._options.edge,undefined,this._log.warn.bind(this._log))).map(regions_1.createSignalingEndpointURL);var hasChunderURIsChanged=originalChunderURIs.size!==newChunderURIs.length;if(!hasChunderURIsChanged){for(var _i=0,newChunderURIs_1=newChunderURIs;_i=0;i--){if(call===this._calls[i]){this._calls.splice(i,1)}}};Device.prototype._sendPresence=function(presence){return __awaiter(this,void 0,void 0,function(){var stream;return __generator(this,function(_a){switch(_a.label){case 0:return[4,this._streamConnectedPromise];case 1:stream=_a.sent();if(!stream){return[2]}stream.register({audio:presence});if(presence){this._startRegistrationTimer()}else{this._stopRegistrationTimer()}return[2]}})})};Device.prototype._setState=function(state){if(state===this.state){return}this._state=state;this.emit(this._stateEventMapping[state])};Device.prototype._setupAudioHelper=function(){var _this=this;if(this._audio){this._log.info(\"Found existing audio helper; destroying...\");this._destroyAudioHelper()}this._audio=new(this._options.AudioHelper||audiohelper_1.default)(this._updateSinkIds,this._updateInputStream,getUserMedia,{audioContext:Device.audioContext,enabledSounds:this._enabledSounds});this._audio.on(\"deviceChange\",function(lostActiveDevices){var activeCall=_this._activeCall;var deviceIds=lostActiveDevices.map(function(device){return device.deviceId});_this._publisher.info(\"audio\",\"device-change\",{lost_active_device_ids:deviceIds},activeCall);if(activeCall){activeCall[\"_mediaHandler\"]._onInputDevicesChanged()}})};Device.prototype._setupPublisher=function(){var _this=this;if(this._publisher){this._log.info(\"Found existing publisher; destroying...\");this._destroyPublisher()}var publisherOptions={defaultPayload:this._createDefaultPayload,log:this._log,metadata:{app_name:this._options.appName,app_version:this._options.appVersion}};if(this._options.eventgw){publisherOptions.host=this._options.eventgw}this._publisher=(this._options.Publisher||Publisher)(PUBLISHER_PRODUCT_NAME,this.token,publisherOptions);if(this._options.publishEvents===false){this._publisher.disable()}else{this._publisher.on(\"error\",function(error){_this._log.warn(\"Cannot connect to insights.\",error)})}return this._publisher};Device.prototype._setupStream=function(){var _this=this;if(this._stream){this._log.info(\"Found existing stream; destroying...\");this._destroyStream()}this._log.info(\"Setting up VSP\");this._stream=(this._options.PStream||PStream)(this.token,this._chunderURIs,{backoffMaxMs:this._options.backoffMaxMs,maxPreferredDurationMs:this._options.maxCallSignalingTimeoutMs});this._stream.addListener(\"close\",this._onSignalingClose);this._stream.addListener(\"connected\",this._onSignalingConnected);this._stream.addListener(\"error\",this._onSignalingError);this._stream.addListener(\"invite\",this._onSignalingInvite);this._stream.addListener(\"offline\",this._onSignalingOffline);this._stream.addListener(\"ready\",this._onSignalingReady);return this._streamConnectedPromise=new Promise(function(resolve){return _this._stream.once(\"connected\",function(){resolve(_this._stream)})})};Device.prototype._showIncomingCall=function(call,play){var _this=this;var timeout;return Promise.race([play(),new Promise(function(resolve,reject){timeout=setTimeout(function(){var msg=\"Playing incoming ringtone took too long; it might not play. Continuing execution...\";reject(new Error(msg))},RINGTONE_PLAY_TIMEOUT)})]).catch(function(reason){_this._log.info(reason.message)}).then(function(){clearTimeout(timeout);_this.emit(Device.EventName.Incoming,call)})};Device.prototype._startRegistrationTimer=function(){var _this=this;this._stopRegistrationTimer();this._regTimer=setTimeout(function(){_this._sendPresence(true)},REGISTRATION_INTERVAL)};Device.prototype._stopRegistrationTimer=function(){if(this._regTimer){clearTimeout(this._regTimer)}};Device.prototype._throwIfDestroyed=function(){if(this.state===Device.State.Destroyed){throw new errors_1.InvalidStateError(\"Device has been destroyed.\")}};Device.prototype._updateRingtoneSinkIds=function(sinkIds){return Promise.resolve(this._soundcache.get(Device.SoundName.Incoming).setSinkIds(sinkIds))};Device.prototype._updateSpeakerSinkIds=function(sinkIds){Array.from(this._soundcache.entries()).filter(function(entry){return entry[0]!==Device.SoundName.Incoming}).forEach(function(entry){return entry[1].setSinkIds(sinkIds)});this._callSinkIds=sinkIds;var call=this._activeCall;return call?call._setSinkIds(sinkIds):Promise.resolve()};Device._defaultSounds={disconnect:{filename:\"disconnect\",maxDuration:3e3},dtmf0:{filename:\"dtmf-0\",maxDuration:1e3},dtmf1:{filename:\"dtmf-1\",maxDuration:1e3},dtmf2:{filename:\"dtmf-2\",maxDuration:1e3},dtmf3:{filename:\"dtmf-3\",maxDuration:1e3},dtmf4:{filename:\"dtmf-4\",maxDuration:1e3},dtmf5:{filename:\"dtmf-5\",maxDuration:1e3},dtmf6:{filename:\"dtmf-6\",maxDuration:1e3},dtmf7:{filename:\"dtmf-7\",maxDuration:1e3},dtmf8:{filename:\"dtmf-8\",maxDuration:1e3},dtmf9:{filename:\"dtmf-9\",maxDuration:1e3},dtmfh:{filename:\"dtmf-hash\",maxDuration:1e3},dtmfs:{filename:\"dtmf-star\",maxDuration:1e3},incoming:{filename:\"incoming\",shouldLoop:true},outgoing:{filename:\"outgoing\",maxDuration:3e3}};return Device}(events_1.EventEmitter);(function(Device){var EventName;(function(EventName){EventName[\"Error\"]=\"error\";EventName[\"Incoming\"]=\"incoming\";EventName[\"Destroyed\"]=\"destroyed\";EventName[\"Unregistered\"]=\"unregistered\";EventName[\"Registering\"]=\"registering\";EventName[\"Registered\"]=\"registered\";EventName[\"TokenWillExpire\"]=\"tokenWillExpire\"})(EventName=Device.EventName||(Device.EventName={}));var State;(function(State){State[\"Destroyed\"]=\"destroyed\";State[\"Unregistered\"]=\"unregistered\";State[\"Registering\"]=\"registering\";State[\"Registered\"]=\"registered\"})(State=Device.State||(Device.State={}));var SoundName;(function(SoundName){SoundName[\"Incoming\"]=\"incoming\";SoundName[\"Outgoing\"]=\"outgoing\";SoundName[\"Disconnect\"]=\"disconnect\";SoundName[\"Dtmf0\"]=\"dtmf0\";SoundName[\"Dtmf1\"]=\"dtmf1\";SoundName[\"Dtmf2\"]=\"dtmf2\";SoundName[\"Dtmf3\"]=\"dtmf3\";SoundName[\"Dtmf4\"]=\"dtmf4\";SoundName[\"Dtmf5\"]=\"dtmf5\";SoundName[\"Dtmf6\"]=\"dtmf6\";SoundName[\"Dtmf7\"]=\"dtmf7\";SoundName[\"Dtmf8\"]=\"dtmf8\";SoundName[\"Dtmf9\"]=\"dtmf9\";SoundName[\"DtmfS\"]=\"dtmfs\";SoundName[\"DtmfH\"]=\"dtmfh\"})(SoundName=Device.SoundName||(Device.SoundName={}))})(Device||(Device={}));exports.default=Device},{\"./audiohelper\":5,\"./call\":6,\"./constants\":7,\"./dialtonePlayer\":10,\"./errors\":12,\"./eventpublisher\":14,\"./log\":15,\"./preflight/preflight\":17,\"./pstream\":18,\"./regions\":19,\"./rtc\":23,\"./rtc/getusermedia\":21,\"./sound\":33,\"./util\":35,events:48,loglevel:49}],10:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var errors_1=require(\"./errors\");var bandFrequencies={dtmf0:[1360,960],dtmf1:[1230,720],dtmf2:[1360,720],dtmf3:[1480,720],dtmf4:[1230,790],dtmf5:[1360,790],dtmf6:[1480,790],dtmf7:[1230,870],dtmf8:[1360,870],dtmf9:[1480,870],dtmfh:[1480,960],dtmfs:[1230,960]};var DialtonePlayer=function(){function DialtonePlayer(_context){var _this=this;this._context=_context;this._gainNodes=[];this._gainNodes=[this._context.createGain(),this._context.createGain()];this._gainNodes.forEach(function(gainNode){gainNode.connect(_this._context.destination);gainNode.gain.value=.1;_this._gainNodes.push(gainNode)})}DialtonePlayer.prototype.cleanup=function(){this._gainNodes.forEach(function(gainNode){gainNode.disconnect()})};DialtonePlayer.prototype.play=function(sound){var _this=this;var frequencies=bandFrequencies[sound];if(!frequencies){throw new errors_1.InvalidArgumentError(\"Invalid DTMF sound name\")}var oscillators=[this._context.createOscillator(),this._context.createOscillator()];oscillators.forEach(function(oscillator,i){oscillator.type=\"sine\";oscillator.frequency.value=frequencies[i];oscillator.connect(_this._gainNodes[i]);oscillator.start();oscillator.stop(_this._context.currentTime+.1);oscillator.addEventListener(\"ended\",function(){return oscillator.disconnect()})})};return DialtonePlayer}();exports.default=DialtonePlayer},{\"./errors\":12}],11:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,\"__esModule\",{value:true});var twilioError_1=require(\"./twilioError\");exports.TwilioError=twilioError_1.default;var AuthorizationErrors;(function(AuthorizationErrors){var AccessTokenInvalid=function(_super){__extends(AccessTokenInvalid,_super);function AccessTokenInvalid(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=20101;_this.description=\"Invalid access token\";_this.explanation=\"Twilio was unable to validate your Access Token\";_this.name=\"AccessTokenInvalid\";_this.solutions=[];Object.setPrototypeOf(_this,AuthorizationErrors.AccessTokenInvalid.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return AccessTokenInvalid}(twilioError_1.default);AuthorizationErrors.AccessTokenInvalid=AccessTokenInvalid;var AccessTokenExpired=function(_super){__extends(AccessTokenExpired,_super);function AccessTokenExpired(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=20104;_this.description=\"Access token expired or expiration date invalid\";_this.explanation=\"The Access Token provided to the Twilio API has expired, the expiration time specified in the token was invalid, or the expiration time specified was too far in the future\";_this.name=\"AccessTokenExpired\";_this.solutions=[];Object.setPrototypeOf(_this,AuthorizationErrors.AccessTokenExpired.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return AccessTokenExpired}(twilioError_1.default);AuthorizationErrors.AccessTokenExpired=AccessTokenExpired;var AuthenticationFailed=function(_super){__extends(AuthenticationFailed,_super);function AuthenticationFailed(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=20151;_this.description=\"Authentication Failed\";_this.explanation=\"The Authentication with the provided JWT failed\";_this.name=\"AuthenticationFailed\";_this.solutions=[];Object.setPrototypeOf(_this,AuthorizationErrors.AuthenticationFailed.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return AuthenticationFailed}(twilioError_1.default);AuthorizationErrors.AuthenticationFailed=AuthenticationFailed})(AuthorizationErrors=exports.AuthorizationErrors||(exports.AuthorizationErrors={}));var ClientErrors;(function(ClientErrors){var BadRequest=function(_super){__extends(BadRequest,_super);function BadRequest(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=31400;_this.description=\"Bad Request (HTTP/SIP)\";_this.explanation=\"The request could not be understood due to malformed syntax.\";_this.name=\"BadRequest\";_this.solutions=[];Object.setPrototypeOf(_this,ClientErrors.BadRequest.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return BadRequest}(twilioError_1.default);ClientErrors.BadRequest=BadRequest})(ClientErrors=exports.ClientErrors||(exports.ClientErrors={}));var GeneralErrors;(function(GeneralErrors){var UnknownError=function(_super){__extends(UnknownError,_super);function UnknownError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=31e3;_this.description=\"Unknown Error\";_this.explanation=\"An unknown error has occurred. See error details for more information.\";_this.name=\"UnknownError\";_this.solutions=[];Object.setPrototypeOf(_this,GeneralErrors.UnknownError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return UnknownError}(twilioError_1.default);GeneralErrors.UnknownError=UnknownError;var ConnectionError=function(_super){__extends(ConnectionError,_super);function ConnectionError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=31005;_this.description=\"Connection error\";_this.explanation=\"A connection error occurred during the call\";_this.name=\"ConnectionError\";_this.solutions=[];Object.setPrototypeOf(_this,GeneralErrors.ConnectionError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ConnectionError}(twilioError_1.default);GeneralErrors.ConnectionError=ConnectionError;var CallCancelledError=function(_super){__extends(CallCancelledError,_super);function CallCancelledError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The incoming call was cancelled because it was not answered in time or it was accepted/rejected by another application instance registered with the same identity.\"];_this.code=31008;_this.description=\"Call cancelled\";_this.explanation=\"Unable to answer because the call has ended\";_this.name=\"CallCancelledError\";_this.solutions=[];Object.setPrototypeOf(_this,GeneralErrors.CallCancelledError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return CallCancelledError}(twilioError_1.default);GeneralErrors.CallCancelledError=CallCancelledError;var TransportError=function(_super){__extends(TransportError,_super);function TransportError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=31009;_this.description=\"Transport error\";_this.explanation=\"No transport available to send or receive messages\";_this.name=\"TransportError\";_this.solutions=[];Object.setPrototypeOf(_this,GeneralErrors.TransportError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return TransportError}(twilioError_1.default);GeneralErrors.TransportError=TransportError})(GeneralErrors=exports.GeneralErrors||(exports.GeneralErrors={}));var UserMediaErrors;(function(UserMediaErrors){var PermissionDeniedError=function(_super){__extends(PermissionDeniedError,_super);function PermissionDeniedError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The user denied the getUserMedia request.\",\"The browser denied the getUserMedia request.\"];_this.code=31401;_this.description=\"UserMedia Permission Denied Error\";_this.explanation=\"The browser or end-user denied permissions to user media. Therefore we were unable to acquire input audio.\";_this.name=\"PermissionDeniedError\";_this.solutions=[\"The user should accept the request next time prompted. If the browser saved the deny, the user should change that permission in their browser.\",\"The user should to verify that the browser has permission to access the microphone at this address.\"];Object.setPrototypeOf(_this,UserMediaErrors.PermissionDeniedError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return PermissionDeniedError}(twilioError_1.default);UserMediaErrors.PermissionDeniedError=PermissionDeniedError;var AcquisitionFailedError=function(_super){__extends(AcquisitionFailedError,_super);function AcquisitionFailedError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"NotFoundError - The deviceID specified was not found.\",\"The getUserMedia constraints were overconstrained and no devices matched.\"];_this.code=31402;_this.description=\"UserMedia Acquisition Failed Error\";_this.explanation=\"The browser and end-user allowed permissions, however getting the media failed. Usually this is due to bad constraints, but can sometimes fail due to browser, OS or hardware issues.\";_this.name=\"AcquisitionFailedError\";_this.solutions=[\"Ensure the deviceID being specified exists.\",\"Try acquiring media with fewer constraints.\"];Object.setPrototypeOf(_this,UserMediaErrors.AcquisitionFailedError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return AcquisitionFailedError}(twilioError_1.default);UserMediaErrors.AcquisitionFailedError=AcquisitionFailedError})(UserMediaErrors=exports.UserMediaErrors||(exports.UserMediaErrors={}));var SignalingErrors;(function(SignalingErrors){var ConnectionError=function(_super){__extends(ConnectionError,_super);function ConnectionError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[];_this.code=53e3;_this.description=\"Signaling connection error\";_this.explanation=\"Raised whenever a signaling connection error occurs that is not covered by a more specific error code.\";_this.name=\"ConnectionError\";_this.solutions=[];Object.setPrototypeOf(_this,SignalingErrors.ConnectionError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ConnectionError}(twilioError_1.default);SignalingErrors.ConnectionError=ConnectionError;var ConnectionDisconnected=function(_super){__extends(ConnectionDisconnected,_super);function ConnectionDisconnected(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The device running your application lost its Internet connection.\"];_this.code=53001;_this.description=\"Signaling connection disconnected\";_this.explanation=\"Raised whenever the signaling connection is unexpectedly disconnected.\";_this.name=\"ConnectionDisconnected\";_this.solutions=[\"Ensure the device running your application has access to a stable Internet connection.\"];Object.setPrototypeOf(_this,SignalingErrors.ConnectionDisconnected.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ConnectionDisconnected}(twilioError_1.default);SignalingErrors.ConnectionDisconnected=ConnectionDisconnected})(SignalingErrors=exports.SignalingErrors||(exports.SignalingErrors={}));var MediaErrors;(function(MediaErrors){var ClientLocalDescFailed=function(_super){__extends(ClientLocalDescFailed,_super);function ClientLocalDescFailed(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The Client may not be using a supported WebRTC implementation.\",\"The Client may not have the necessary resources to create or apply a new media description.\"];_this.code=53400;_this.description=\"Client is unable to create or apply a local media description\";_this.explanation=\"Raised whenever a Client is unable to create or apply a local media description.\";_this.name=\"ClientLocalDescFailed\";_this.solutions=[\"If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.\"];Object.setPrototypeOf(_this,MediaErrors.ClientLocalDescFailed.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ClientLocalDescFailed}(twilioError_1.default);MediaErrors.ClientLocalDescFailed=ClientLocalDescFailed;var ClientRemoteDescFailed=function(_super){__extends(ClientRemoteDescFailed,_super);function ClientRemoteDescFailed(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The Client may not be using a supported WebRTC implementation.\",\"The Client may be connecting peer-to-peer with another Participant that is not using a supported WebRTC implementation.\",\"The Client may not have the necessary resources to apply a new media description.\"];_this.code=53402;_this.description=\"Client is unable to apply a remote media description\";_this.explanation=\"Raised whenever the Client receives a remote media description but is unable to apply it.\";_this.name=\"ClientRemoteDescFailed\";_this.solutions=[\"If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.\"];Object.setPrototypeOf(_this,MediaErrors.ClientRemoteDescFailed.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ClientRemoteDescFailed}(twilioError_1.default);MediaErrors.ClientRemoteDescFailed=ClientRemoteDescFailed;var ConnectionError=function(_super){__extends(ConnectionError,_super);function ConnectionError(messageOrError,error){var _this=_super.call(this,messageOrError,error)||this;_this.causes=[\"The Client was unable to establish a media connection.\",\"A media connection which was active failed liveliness checks.\"];_this.code=53405;_this.description=\"Media connection failed\";_this.explanation=\"Raised by the Client or Server whenever a media connection fails.\";_this.name=\"ConnectionError\";_this.solutions=[\"If the problem persists, try connecting to another region.\",\"Check your Client's network connectivity.\",\"If you've provided custom ICE Servers then ensure that the URLs and credentials are valid.\"];Object.setPrototypeOf(_this,MediaErrors.ConnectionError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return ConnectionError}(twilioError_1.default);MediaErrors.ConnectionError=ConnectionError})(MediaErrors=exports.MediaErrors||(exports.MediaErrors={}));exports.errorsByCode=new Map([[20101,AuthorizationErrors.AccessTokenInvalid],[20104,AuthorizationErrors.AccessTokenExpired],[20151,AuthorizationErrors.AuthenticationFailed],[31400,ClientErrors.BadRequest],[31e3,GeneralErrors.UnknownError],[31005,GeneralErrors.ConnectionError],[31008,GeneralErrors.CallCancelledError],[31009,GeneralErrors.TransportError],[31401,UserMediaErrors.PermissionDeniedError],[31402,UserMediaErrors.AcquisitionFailedError],[53e3,SignalingErrors.ConnectionError],[53001,SignalingErrors.ConnectionDisconnected],[53400,MediaErrors.ClientLocalDescFailed],[53402,MediaErrors.ClientRemoteDescFailed],[53405,MediaErrors.ConnectionError]]);Object.freeze(exports.errorsByCode)},{\"./twilioError\":13}],12:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,\"__esModule\",{value:true});var generated_1=require(\"./generated\");exports.AuthorizationErrors=generated_1.AuthorizationErrors;exports.ClientErrors=generated_1.ClientErrors;exports.GeneralErrors=generated_1.GeneralErrors;exports.MediaErrors=generated_1.MediaErrors;exports.SignalingErrors=generated_1.SignalingErrors;exports.TwilioError=generated_1.TwilioError;exports.UserMediaErrors=generated_1.UserMediaErrors;var InvalidArgumentError=function(_super){__extends(InvalidArgumentError,_super);function InvalidArgumentError(message){var _this=_super.call(this,message)||this;_this.name=\"InvalidArgumentError\";return _this}return InvalidArgumentError}(Error);exports.InvalidArgumentError=InvalidArgumentError;var InvalidStateError=function(_super){__extends(InvalidStateError,_super);function InvalidStateError(message){var _this=_super.call(this,message)||this;_this.name=\"InvalidStateError\";return _this}return InvalidStateError}(Error);exports.InvalidStateError=InvalidStateError;var NotSupportedError=function(_super){__extends(NotSupportedError,_super);function NotSupportedError(message){var _this=_super.call(this,message)||this;_this.name=\"NotSupportedError\";return _this}return NotSupportedError}(Error);exports.NotSupportedError=NotSupportedError;function getErrorByCode(code){var error=generated_1.errorsByCode.get(code);if(!error){throw new InvalidArgumentError(\"Error code \"+code+\" not found\")}return error}exports.getErrorByCode=getErrorByCode;function hasErrorByCode(code){return generated_1.errorsByCode.has(code)}exports.hasErrorByCode=hasErrorByCode},{\"./generated\":11}],13:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,\"__esModule\",{value:true});var TwilioError=function(_super){__extends(TwilioError,_super);function TwilioError(messageOrError,error){var _this=_super.call(this)||this;Object.setPrototypeOf(_this,TwilioError.prototype);var message=typeof messageOrError===\"string\"?messageOrError:_this.explanation;var originalError=typeof messageOrError===\"object\"?messageOrError:error;_this.message=_this.name+\" (\"+_this.code+\"): \"+message;_this.originalError=originalError;return _this}return TwilioError}(Error);exports.default=TwilioError},{}],14:[function(require,module,exports){\"use strict\";var EventEmitter=require(\"events\").EventEmitter;var request=require(\"./request\");var util=require(\"util\");function EventPublisher(productName,token,options){if(!(this instanceof EventPublisher)){return new EventPublisher(productName,token,options)}options=Object.assign({defaultPayload:function defaultPayload(){return{}}},options);var defaultPayload=options.defaultPayload;if(typeof defaultPayload!==\"function\"){defaultPayload=function defaultPayload(){return Object.assign({},options.defaultPayload)}}var isEnabled=true;var metadata=Object.assign({app_name:undefined,app_version:undefined},options.metadata);Object.defineProperties(this,{_defaultPayload:{value:defaultPayload},_isEnabled:{get:function get(){return isEnabled},set:function set(_isEnabled){isEnabled=_isEnabled}},_host:{value:options.host,writable:true},_log:{value:options.log},_request:{value:options.request||request,writable:true},_token:{value:token,writable:true},isEnabled:{enumerable:true,get:function get(){return isEnabled}},metadata:{enumerable:true,get:function get(){return metadata}},productName:{enumerable:true,value:productName},token:{enumerable:true,get:function get(){return this._token}}})}util.inherits(EventPublisher,EventEmitter);EventPublisher.prototype._post=function _post(endpointName,level,group,name,payload,connection,force){var _this=this;if(!this.isEnabled&&!force||!this._host){return Promise.resolve()}if(!connection||(!connection.parameters||!connection.parameters.CallSid)&&!connection.outboundConnectionId){return Promise.resolve()}var event={publisher:this.productName,group:group,name:name,timestamp:(new Date).toISOString(),level:level.toUpperCase(),payload_type:\"application/json\",private:false,payload:payload&&payload.forEach?payload.slice(0):Object.assign(this._defaultPayload(connection),payload)};if(this.metadata){event.publisher_metadata=this.metadata}var requestParams={url:\"https://\"+this._host+\"/v4/\"+endpointName,body:event,headers:{\"Content-Type\":\"application/json\",\"X-Twilio-Token\":this.token}};return new Promise(function(resolve,reject){_this._request.post(requestParams,function(err){if(err){_this.emit(\"error\",err);reject(err)}else{resolve()}})}).catch(function(e){_this._log.warn(\"Unable to post \"+group+\" \"+name+\" event to Insights. Received error: \"+e)})};EventPublisher.prototype.post=function post(level,group,name,payload,connection,force){return this._post(\"EndpointEvents\",level,group,name,payload,connection,force)};EventPublisher.prototype.debug=function debug(group,name,payload,connection){return this.post(\"debug\",group,name,payload,connection)};EventPublisher.prototype.info=function info(group,name,payload,connection){return this.post(\"info\",group,name,payload,connection)};EventPublisher.prototype.warn=function warn(group,name,payload,connection){return this.post(\"warning\",group,name,payload,connection)};EventPublisher.prototype.error=function error(group,name,payload,connection){return this.post(\"error\",group,name,payload,connection)};EventPublisher.prototype.postMetrics=function postMetrics(group,name,metrics,customFields,connection){var _this2=this;return new Promise(function(resolve){var samples=metrics.map(formatMetric).map(function(sample){return Object.assign(sample,customFields)});resolve(_this2._post(\"EndpointMetrics\",\"info\",group,name,samples,connection))})};EventPublisher.prototype.setHost=function setHost(host){this._host=host};EventPublisher.prototype.setToken=function setToken(token){this._token=token};EventPublisher.prototype.enable=function enable(){this._isEnabled=true};EventPublisher.prototype.disable=function disable(){this._isEnabled=false};function formatMetric(sample){return{timestamp:new Date(sample.timestamp).toISOString(),total_packets_received:sample.totals.packetsReceived,total_packets_lost:sample.totals.packetsLost,total_packets_sent:sample.totals.packetsSent,total_bytes_received:sample.totals.bytesReceived,total_bytes_sent:sample.totals.bytesSent,packets_received:sample.packetsReceived,packets_lost:sample.packetsLost,packets_lost_fraction:sample.packetsLostFraction&&Math.round(sample.packetsLostFraction*100)/100,bytes_received:sample.bytesReceived,bytes_sent:sample.bytesSent,audio_codec:sample.codecName,audio_level_in:sample.audioInputLevel,audio_level_out:sample.audioOutputLevel,call_volume_input:sample.inputVolume,call_volume_output:sample.outputVolume,jitter:sample.jitter,rtt:sample.rtt,mos:sample.mos&&Math.round(sample.mos*100)/100}}module.exports=EventPublisher},{\"./request\":20,events:48,util:60}],15:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var LogLevelModule=require(\"loglevel\");var constants_1=require(\"./constants\");var Log=function(){function Log(options){this._log=(options&&options.LogLevelModule?options.LogLevelModule:LogLevelModule).getLogger(constants_1.PACKAGE_NAME)}Log.getInstance=function(){if(!Log.instance){Log.instance=new Log}return Log.instance};Log.prototype.debug=function(){var _a;var args=[];for(var _i=0;_i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]4.2){return PreflightTest.CallQuality.Excellent}else if(mos>=4.1&&mos<=4.2){return PreflightTest.CallQuality.Great}else if(mos>=3.7&&mos<=4){return PreflightTest.CallQuality.Good}else if(mos>=3.1&&mos<=3.6){return PreflightTest.CallQuality.Fair}else{return PreflightTest.CallQuality.Degraded}};PreflightTest.prototype._getReport=function(){var stats=this._getRTCStats();var testTiming={start:this._startTime};if(this._endTime){testTiming.end=this._endTime;testTiming.duration=this._endTime-this._startTime}var report={callSid:this._callSid,edge:this._edge,iceCandidateStats:this._rtcIceCandidateStatsReport.iceCandidateStats,networkTiming:this._networkTiming,samples:this._samples,selectedEdge:this._options.edge,stats:stats,testTiming:testTiming,totals:this._getRTCSampleTotals(),warnings:this._warnings};var selectedIceCandidatePairStats=this._rtcIceCandidateStatsReport.selectedIceCandidatePairStats;if(selectedIceCandidatePairStats){report.selectedIceCandidatePairStats=selectedIceCandidatePairStats;report.isTurnRequired=selectedIceCandidatePairStats.localCandidate.candidateType===\"relay\"||selectedIceCandidatePairStats.remoteCandidate.candidateType===\"relay\"}if(stats){report.callQuality=this._getCallQuality(stats.mos.average)}return report};PreflightTest.prototype._getRTCSampleTotals=function(){if(!this._latestSample){return}return __assign({},this._latestSample.totals)};PreflightTest.prototype._getRTCStats=function(){var firstMosSampleIdx=this._samples.findIndex(function(sample){return typeof sample.mos===\"number\"&&sample.mos>0});var samples=firstMosSampleIdx>=0?this._samples.slice(firstMosSampleIdx):[];if(!samples||!samples.length){return}return[\"jitter\",\"mos\",\"rtt\"].reduce(function(statObj,stat){var _a;var values=samples.map(function(s){return s[stat]});return __assign(__assign({},statObj),(_a={},_a[stat]={average:Number((values.reduce(function(total,value){return total+value})/values.length).toPrecision(5)),max:Math.max.apply(Math,values),min:Math.min.apply(Math,values)},_a))},{})};PreflightTest.prototype._getStreamFromFile=function(){var audioContext=this._options.audioContext;if(!audioContext){throw new errors_1.NotSupportedError(\"Cannot fake input audio stream: AudioContext is not supported by this browser.\")}var audioEl=new Audio(COWBELL_AUDIO_URL);audioEl.addEventListener(\"canplaythrough\",function(){return audioEl.play()});if(typeof audioEl.setAttribute===\"function\"){audioEl.setAttribute(\"crossorigin\",\"anonymous\")}var src=audioContext.createMediaElementSource(audioEl);var dest=audioContext.createMediaStreamDestination();src.connect(dest);return dest.stream};PreflightTest.prototype._initDevice=function(token,options){var _this=this;try{this._device=new(options.deviceFactory||device_1.default)(token,{codecPreferences:options.codecPreferences,edge:options.edge,fileInputStream:options.fileInputStream,logLevel:options.logLevel,preflight:true});this._device.once(device_1.default.EventName.Registered,function(){_this._onDeviceRegistered()});this._device.once(device_1.default.EventName.Error,function(error){_this._onDeviceError(error)});this._device.register()}catch(error){setTimeout(function(){_this._onFailed(error)});return}this._signalingTimeoutTimer=setTimeout(function(){_this._onDeviceError(new errors_1.SignalingErrors.ConnectionError(\"WebSocket Connection Timeout\"))},options.signalingTimeoutMs)};PreflightTest.prototype._onDeviceError=function(error){this._device.destroy();this._onFailed(error)};PreflightTest.prototype._onDeviceRegistered=function(){return __awaiter(this,void 0,void 0,function(){var _a,audio,publisher;var _this=this;return __generator(this,function(_b){switch(_b.label){case 0:clearTimeout(this._echoTimer);clearTimeout(this._signalingTimeoutTimer);_a=this;return[4,this._device.connect({rtcConfiguration:this._options.rtcConfiguration})];case 1:_a._call=_b.sent();this._networkTiming.signaling={start:Date.now()};this._setupCallHandlers(this._call);this._edge=this._device.edge||undefined;if(this._options.fakeMicInput){this._echoTimer=setTimeout(function(){return _this._device.disconnectAll()},ECHO_TEST_DURATION);audio=this._device.audio;if(audio){audio.disconnect(false);audio.outgoing(false)}}this._call.once(\"disconnect\",function(){_this._device.once(device_1.default.EventName.Unregistered,function(){return _this._onUnregistered()});_this._device.destroy()});publisher=this._call[\"_publisher\"];publisher.on(\"error\",function(){if(!_this._hasInsightsErrored){_this._emitWarning(\"insights-connection-error\",\"Received an error when attempting to connect to Insights gateway\")}_this._hasInsightsErrored=true});return[2]}})})};PreflightTest.prototype._onFailed=function(error){clearTimeout(this._echoTimer);clearTimeout(this._signalingTimeoutTimer);this._releaseHandlers();this._endTime=Date.now();this._status=PreflightTest.Status.Failed;this.emit(PreflightTest.Events.Failed,error)};PreflightTest.prototype._onUnregistered=function(){var _this=this;setTimeout(function(){if(_this._status===PreflightTest.Status.Failed){return}clearTimeout(_this._echoTimer);clearTimeout(_this._signalingTimeoutTimer);_this._releaseHandlers();_this._endTime=Date.now();_this._status=PreflightTest.Status.Completed;_this._report=_this._getReport();_this.emit(PreflightTest.Events.Completed,_this._report)},10)};PreflightTest.prototype._releaseHandlers=function(){[this._device,this._call].forEach(function(emitter){if(emitter){emitter.eventNames().forEach(function(name){return emitter.removeAllListeners(name)})}})};PreflightTest.prototype._setupCallHandlers=function(call){var _this=this;if(this._options.fakeMicInput){call.once(\"volume\",function(){call[\"_mediaHandler\"].outputs.forEach(function(output){return output.audio.muted=true})})}call.on(\"warning\",function(name,data){_this._emitWarning(name,\"Received an RTCWarning. See .rtcWarning for the RTCWarning\",data)});call.once(\"accept\",function(){_this._callSid=call[\"_mediaHandler\"].callSid;_this._status=PreflightTest.Status.Connected;_this.emit(PreflightTest.Events.Connected)});call.on(\"sample\",function(sample){return __awaiter(_this,void 0,void 0,function(){var _a;return __generator(this,function(_b){switch(_b.label){case 0:if(!!this._latestSample)return[3,2];_a=this;return[4,(this._options.getRTCIceCandidateStatsReport||stats_1.getRTCIceCandidateStatsReport)(call[\"_mediaHandler\"].version.pc)];case 1:_a._rtcIceCandidateStatsReport=_b.sent();_b.label=2;case 2:this._latestSample=sample;this._samples.push(sample);this.emit(PreflightTest.Events.Sample,sample);return[2]}})})});[{reportLabel:\"peerConnection\",type:\"pcconnection\"},{reportLabel:\"ice\",type:\"iceconnection\"},{reportLabel:\"dtls\",type:\"dtlstransport\"},{reportLabel:\"signaling\",type:\"signaling\"}].forEach(function(_a){var type=_a.type,reportLabel=_a.reportLabel;var handlerName=\"on\"+type+\"statechange\";var originalHandler=call[\"_mediaHandler\"][handlerName];call[\"_mediaHandler\"][handlerName]=function(state){var timing=_this._networkTiming[reportLabel]=_this._networkTiming[reportLabel]||{start:0};if(state===\"connecting\"||state===\"checking\"){timing.start=Date.now()}else if((state===\"connected\"||state===\"stable\")&&!timing.duration){timing.end=Date.now();timing.duration=timing.end-timing.start}originalHandler(state)}})};Object.defineProperty(PreflightTest.prototype,\"callSid\",{get:function(){return this._callSid},enumerable:true,configurable:true});Object.defineProperty(PreflightTest.prototype,\"endTime\",{get:function(){return this._endTime},enumerable:true,configurable:true});Object.defineProperty(PreflightTest.prototype,\"latestSample\",{get:function(){return this._latestSample},enumerable:true,configurable:true});Object.defineProperty(PreflightTest.prototype,\"report\",{get:function(){return this._report},enumerable:true,configurable:true});Object.defineProperty(PreflightTest.prototype,\"startTime\",{get:function(){return this._startTime},enumerable:true,configurable:true});Object.defineProperty(PreflightTest.prototype,\"status\",{get:function(){return this._status},enumerable:true,configurable:true});return PreflightTest}(events_1.EventEmitter);exports.PreflightTest=PreflightTest;(function(PreflightTest){var CallQuality;(function(CallQuality){CallQuality[\"Excellent\"]=\"excellent\";CallQuality[\"Great\"]=\"great\";CallQuality[\"Good\"]=\"good\";CallQuality[\"Fair\"]=\"fair\";CallQuality[\"Degraded\"]=\"degraded\"})(CallQuality=PreflightTest.CallQuality||(PreflightTest.CallQuality={}));var Events;(function(Events){Events[\"Completed\"]=\"completed\";Events[\"Connected\"]=\"connected\";Events[\"Failed\"]=\"failed\";Events[\"Sample\"]=\"sample\";Events[\"Warning\"]=\"warning\"})(Events=PreflightTest.Events||(PreflightTest.Events={}));var Status;(function(Status){Status[\"Connecting\"]=\"connecting\";Status[\"Connected\"]=\"connected\";Status[\"Completed\"]=\"completed\";Status[\"Failed\"]=\"failed\"})(Status=PreflightTest.Status||(PreflightTest.Status={}))})(PreflightTest=exports.PreflightTest||(exports.PreflightTest={}));exports.PreflightTest=PreflightTest},{\"../call\":6,\"../constants\":7,\"../device\":9,\"../errors\":12,\"../rtc/stats\":29,events:48}],18:[function(require,module,exports){\"use strict\";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i=0}exports.isNonNegativeNumber=isNonNegativeNumber;exports.default={calculate:calculate,isNonNegativeNumber:isNonNegativeNumber}},{}],26:[function(require,module,exports){\"use strict\";var _require=require(\"../errors\"),InvalidArgumentError=_require.InvalidArgumentError,MediaErrors=_require.MediaErrors,NotSupportedError=_require.NotSupportedError,SignalingErrors=_require.SignalingErrors;var Log=require(\"../log\").default;var util=require(\"../util\");var RTCPC=require(\"./rtcpc\");var _require2=require(\"./sdp\"),setIceAggressiveNomination=_require2.setIceAggressiveNomination;var ICE_GATHERING_TIMEOUT=15e3;var ICE_GATHERING_FAIL_NONE=\"none\";var ICE_GATHERING_FAIL_TIMEOUT=\"timeout\";var INITIAL_ICE_CONNECTION_STATE=\"new\";var VOLUME_INTERVAL_MS=50;function PeerConnection(audioHelper,pstream,getUserMedia,options){if(!audioHelper||!pstream||!getUserMedia){throw new InvalidArgumentError(\"Audiohelper, pstream and getUserMedia are required arguments\")}if(!(this instanceof PeerConnection)){return new PeerConnection(audioHelper,pstream,getUserMedia,options)}function noop(){}this.onopen=noop;this.onerror=noop;this.onclose=noop;this.ondisconnected=noop;this.onfailed=noop;this.onconnected=noop;this.onreconnected=noop;this.onsignalingstatechange=noop;this.ondtlstransportstatechange=noop;this.onicegatheringfailure=noop;this.onicegatheringstatechange=noop;this.oniceconnectionstatechange=noop;this.onpcconnectionstatechange=noop;this.onicecandidate=noop;this.onselectedcandidatepairchange=noop;this.onvolume=noop;this.version=null;this.pstream=pstream;this.stream=null;this.sinkIds=new Set([\"default\"]);this.outputs=new Map;this.status=\"connecting\";this.callSid=null;this.isMuted=false;this.getUserMedia=getUserMedia;var AudioContext=typeof window!==\"undefined\"&&(window.AudioContext||window.webkitAudioContext);this._isSinkSupported=!!AudioContext&&typeof HTMLAudioElement!==\"undefined\"&&HTMLAudioElement.prototype.setSinkId;this._audioContext=AudioContext&&audioHelper._audioContext;this._hasIceCandidates=false;this._hasIceGatheringFailures=false;this._iceGatheringTimeoutId=null;this._masterAudio=null;this._masterAudioDeviceId=null;this._mediaStreamSource=null;this._dtmfSender=null;this._dtmfSenderUnsupported=false;this._callEvents=[];this._nextTimeToPublish=Date.now();this._onAnswerOrRinging=noop;this._onHangup=noop;this._remoteStream=null;this._shouldManageStream=true;this._iceState=INITIAL_ICE_CONNECTION_STATE;this._isUnifiedPlan=options.isUnifiedPlan;this.options=options=options||{};this.navigator=options.navigator||(typeof navigator!==\"undefined\"?navigator:null);this.util=options.util||util;this.codecPreferences=options.codecPreferences;this._log=Log.getInstance();return this}PeerConnection.prototype.uri=function(){return this._uri};PeerConnection.prototype.openWithConstraints=function(constraints){return this.getUserMedia({audio:constraints}).then(this._setInputTracksFromStream.bind(this,false))};PeerConnection.prototype.setInputTracksFromStream=function(stream){var self=this;return this._setInputTracksFromStream(true,stream).then(function(){self._shouldManageStream=false})};PeerConnection.prototype._createAnalyser=function(audioContext,options){options=Object.assign({fftSize:32,smoothingTimeConstant:.3},options);var analyser=audioContext.createAnalyser();for(var field in options){analyser[field]=options[field]}return analyser};PeerConnection.prototype._setVolumeHandler=function(handler){this.onvolume=handler};PeerConnection.prototype._startPollingVolume=function(){if(!this._audioContext||!this.stream||!this._remoteStream){return}var audioContext=this._audioContext;var inputAnalyser=this._inputAnalyser=this._createAnalyser(audioContext);var inputBufferLength=inputAnalyser.frequencyBinCount;var inputDataArray=new Uint8Array(inputBufferLength);this._inputAnalyser2=this._createAnalyser(audioContext,{minDecibels:-127,maxDecibels:0,smoothingTimeConstant:0});var outputAnalyser=this._outputAnalyser=this._createAnalyser(audioContext);var outputBufferLength=outputAnalyser.frequencyBinCount;var outputDataArray=new Uint8Array(outputBufferLength);this._outputAnalyser2=this._createAnalyser(audioContext,{minDecibels:-127,maxDecibels:0,smoothingTimeConstant:0});this._updateInputStreamSource(this.stream);this._updateOutputStreamSource(this._remoteStream);var self=this;setTimeout(function emitVolume(){if(!self._audioContext){return}else if(self.status===\"closed\"){self._inputAnalyser.disconnect();self._outputAnalyser.disconnect();self._inputAnalyser2.disconnect();self._outputAnalyser2.disconnect();return}self._inputAnalyser.getByteFrequencyData(inputDataArray);var inputVolume=self.util.average(inputDataArray);self._inputAnalyser2.getByteFrequencyData(inputDataArray);var inputVolume2=self.util.average(inputDataArray);self._outputAnalyser.getByteFrequencyData(outputDataArray);var outputVolume=self.util.average(outputDataArray);self._outputAnalyser2.getByteFrequencyData(outputDataArray);var outputVolume2=self.util.average(outputDataArray);self.onvolume(inputVolume/255,outputVolume/255,inputVolume2,outputVolume2);setTimeout(emitVolume,VOLUME_INTERVAL_MS)},VOLUME_INTERVAL_MS)};PeerConnection.prototype._stopStream=function _stopStream(stream){if(!this._shouldManageStream){return}if(typeof MediaStreamTrack.prototype.stop===\"function\"){var audioTracks=typeof stream.getAudioTracks===\"function\"?stream.getAudioTracks():stream.audioTracks;audioTracks.forEach(function(track){track.stop()})}else{stream.stop()}};PeerConnection.prototype._updateInputStreamSource=function(stream){if(this._inputStreamSource){this._inputStreamSource.disconnect()}this._inputStreamSource=this._audioContext.createMediaStreamSource(stream);this._inputStreamSource.connect(this._inputAnalyser);this._inputStreamSource.connect(this._inputAnalyser2)};PeerConnection.prototype._updateOutputStreamSource=function(stream){if(this._outputStreamSource){this._outputStreamSource.disconnect()}this._outputStreamSource=this._audioContext.createMediaStreamSource(stream);this._outputStreamSource.connect(this._outputAnalyser);this._outputStreamSource.connect(this._outputAnalyser2)};PeerConnection.prototype._setInputTracksFromStream=function(shouldClone,newStream){return this._isUnifiedPlan?this._setInputTracksForUnifiedPlan(shouldClone,newStream):this._setInputTracksForPlanB(shouldClone,newStream)};PeerConnection.prototype._setInputTracksForPlanB=function(shouldClone,newStream){var _this=this;if(!newStream){return Promise.reject(new InvalidArgumentError(\"Can not set input stream to null while in a call\"))}if(!newStream.getAudioTracks().length){return Promise.reject(new InvalidArgumentError(\"Supplied input stream has no audio tracks\"))}var localStream=this.stream;if(!localStream){this.stream=shouldClone?cloneStream(newStream):newStream}else{this._stopStream(localStream);removeStream(this.version.pc,localStream);localStream.getAudioTracks().forEach(localStream.removeTrack,localStream);newStream.getAudioTracks().forEach(localStream.addTrack,localStream);addStream(this.version.pc,newStream);this._updateInputStreamSource(this.stream)}this.mute(this.isMuted);if(!this.version){return Promise.resolve(this.stream)}return new Promise(function(resolve,reject){_this.version.createOffer(_this.options.maxAverageBitrate,_this.codecPreferences,{audio:true},function(){_this.version.processAnswer(_this.codecPreferences,_this._answerSdp,function(){resolve(_this.stream)},reject)},reject)})};PeerConnection.prototype._setInputTracksForUnifiedPlan=function(shouldClone,newStream){var _this2=this;if(!newStream){return Promise.reject(new InvalidArgumentError(\"Can not set input stream to null while in a call\"))}if(!newStream.getAudioTracks().length){return Promise.reject(new InvalidArgumentError(\"Supplied input stream has no audio tracks\"))}var localStream=this.stream;var getStreamPromise=function getStreamPromise(){_this2.mute(_this2.isMuted);return Promise.resolve(_this2.stream)};if(!localStream){this.stream=shouldClone?cloneStream(newStream):newStream}else{if(this._shouldManageStream){this._stopStream(localStream)}if(!this._sender){this._sender=this.version.pc.getSenders()[0]}return this._sender.replaceTrack(newStream.getAudioTracks()[0]).then(function(){_this2._updateInputStreamSource(newStream);return getStreamPromise()})}return getStreamPromise()};PeerConnection.prototype._onInputDevicesChanged=function(){if(!this.stream){return}var activeInputWasLost=this.stream.getAudioTracks().every(function(track){return track.readyState===\"ended\"});if(activeInputWasLost&&this._shouldManageStream){this.openWithConstraints(true)}};PeerConnection.prototype._onIceGatheringFailure=function(type){this._hasIceGatheringFailures=true;this.onicegatheringfailure(type)};PeerConnection.prototype._onMediaConnectionStateChange=function(newState){var previousState=this._iceState;if(previousState===newState||newState!==\"connected\"&&newState!==\"disconnected\"&&newState!==\"failed\"){return}this._iceState=newState;var message=void 0;switch(newState){case\"connected\":if(previousState===\"disconnected\"||previousState===\"failed\"){message=\"ICE liveliness check succeeded. Connection with Twilio restored\";this._log.info(message);this.onreconnected(message)}else{message=\"Media connection established.\";this._log.info(message);this.onconnected(message)}this._stopIceGatheringTimeout();this._hasIceGatheringFailures=false;break;case\"disconnected\":message=\"ICE liveliness check failed. May be having trouble connecting to Twilio\";this._log.info(message);this.ondisconnected(message);break;case\"failed\":message=\"Connection with Twilio was interrupted.\";this._log.info(message);this.onfailed(message);break}};PeerConnection.prototype._setSinkIds=function(sinkIds){if(!this._isSinkSupported){return Promise.reject(new NotSupportedError(\"Audio output selection is not supported by this browser\"))}this.sinkIds=new Set(sinkIds.forEach?sinkIds:[sinkIds]);return this.version?this._updateAudioOutputs():Promise.resolve()};PeerConnection.prototype._startIceGatheringTimeout=function startIceGatheringTimeout(){var _this3=this;this._stopIceGatheringTimeout();this._iceGatheringTimeoutId=setTimeout(function(){_this3._onIceGatheringFailure(ICE_GATHERING_FAIL_TIMEOUT)},ICE_GATHERING_TIMEOUT)};PeerConnection.prototype._stopIceGatheringTimeout=function stopIceGatheringTimeout(){clearInterval(this._iceGatheringTimeoutId)};PeerConnection.prototype._updateAudioOutputs=function updateAudioOutputs(){var addedOutputIds=Array.from(this.sinkIds).filter(function(id){return!this.outputs.has(id)},this);var removedOutputIds=Array.from(this.outputs.keys()).filter(function(id){return!this.sinkIds.has(id)},this);var self=this;var createOutputPromises=addedOutputIds.map(this._createAudioOutput,this);return Promise.all(createOutputPromises).then(function(){return Promise.all(removedOutputIds.map(self._removeAudioOutput,self))})};PeerConnection.prototype._createAudio=function createAudio(arr){return new Audio(arr)};PeerConnection.prototype._createAudioOutput=function createAudioOutput(id){var dest=this._audioContext.createMediaStreamDestination();this._mediaStreamSource.connect(dest);var audio=this._createAudio();setAudioSource(audio,dest.stream);var self=this;return audio.setSinkId(id).then(function(){return audio.play()}).then(function(){self.outputs.set(id,{audio:audio,dest:dest})})};PeerConnection.prototype._removeAudioOutputs=function removeAudioOutputs(){if(this._masterAudio&&typeof this._masterAudioDeviceId!==\"undefined\"){this._disableOutput(this,this._masterAudioDeviceId);this.outputs.delete(this._masterAudioDeviceId);this._masterAudioDeviceId=null;if(!this._masterAudio.paused){this._masterAudio.pause()}if(typeof this._masterAudio.srcObject!==\"undefined\"){this._masterAudio.srcObject=null}else{this._masterAudio.src=\"\"}this._masterAudio=null}return Array.from(this.outputs.keys()).map(this._removeAudioOutput,this)};PeerConnection.prototype._disableOutput=function disableOutput(pc,id){var output=pc.outputs.get(id);if(!output){return}if(output.audio){output.audio.pause();output.audio.src=\"\"}if(output.dest){output.dest.disconnect()}};PeerConnection.prototype._reassignMasterOutput=function reassignMasterOutput(pc,masterId){var masterOutput=pc.outputs.get(masterId);pc.outputs.delete(masterId);var self=this;var idToReplace=Array.from(pc.outputs.keys())[0]||\"default\";return masterOutput.audio.setSinkId(idToReplace).then(function(){self._disableOutput(pc,idToReplace);pc.outputs.set(idToReplace,masterOutput);pc._masterAudioDeviceId=idToReplace}).catch(function rollback(){pc.outputs.set(masterId,masterOutput);self._log.info(\"Could not reassign master output. Attempted to roll back.\")})};PeerConnection.prototype._removeAudioOutput=function removeAudioOutput(id){if(this._masterAudioDeviceId===id){return this._reassignMasterOutput(this,id)}this._disableOutput(this,id);this.outputs.delete(id);return Promise.resolve()};PeerConnection.prototype._onAddTrack=function onAddTrack(pc,stream){var audio=pc._masterAudio=this._createAudio();setAudioSource(audio,stream);audio.play();var deviceId=Array.from(pc.outputs.keys())[0]||\"default\";pc._masterAudioDeviceId=deviceId;pc.outputs.set(deviceId,{audio:audio});pc._mediaStreamSource=pc._audioContext.createMediaStreamSource(stream);pc.pcStream=stream;pc._updateAudioOutputs()};PeerConnection.prototype._fallbackOnAddTrack=function fallbackOnAddTrack(pc,stream){var audio=document&&document.createElement(\"audio\");audio.autoplay=true;if(!setAudioSource(audio,stream)){pc._log.info(\"Error attaching stream to element.\")}pc.outputs.set(\"default\",{audio:audio})};PeerConnection.prototype._setEncodingParameters=function(enableDscp){if(!enableDscp||!this._sender||typeof this._sender.getParameters!==\"function\"||typeof this._sender.setParameters!==\"function\"){return}var params=this._sender.getParameters();if(!params.priority&&!(params.encodings&¶ms.encodings.length)){return}params.priority=\"high\";if(params.encodings&¶ms.encodings.length){params.encodings.forEach(function(encoding){encoding.priority=\"high\";encoding.networkPriority=\"high\"})}this._sender.setParameters(params)};PeerConnection.prototype._setupPeerConnection=function(rtcConstraints,rtcConfiguration){var _this4=this;var self=this;var version=new(this.options.rtcpcFactory||RTCPC);version.create(rtcConstraints,rtcConfiguration);addStream(version.pc,this.stream);var eventName=\"ontrack\"in version.pc?\"ontrack\":\"onaddstream\";version.pc[eventName]=function(event){var stream=self._remoteStream=event.stream||event.streams[0];if(typeof version.pc.getSenders===\"function\"){_this4._sender=version.pc.getSenders()[0]}if(self._isSinkSupported){self._onAddTrack(self,stream)}else{self._fallbackOnAddTrack(self,stream)}self._startPollingVolume()};return version};PeerConnection.prototype._maybeSetIceAggressiveNomination=function(sdp){return this.options.forceAggressiveIceNomination?setIceAggressiveNomination(sdp):sdp};PeerConnection.prototype._setupChannel=function(){var _this5=this;var pc=this.version.pc;this.version.pc.onopen=function(){_this5.status=\"open\";_this5.onopen()};this.version.pc.onstatechange=function(){if(_this5.version.pc&&_this5.version.pc.readyState===\"stable\"){_this5.status=\"open\";_this5.onopen()}};this.version.pc.onsignalingstatechange=function(){var state=pc.signalingState;_this5._log.info('signalingState is \"'+state+'\"');if(_this5.version.pc&&_this5.version.pc.signalingState===\"stable\"){_this5.status=\"open\";_this5.onopen()}_this5.onsignalingstatechange(pc.signalingState)};pc.onconnectionstatechange=function(){_this5._log.info('pc.connectionState is \"'+pc.connectionState+'\"');_this5.onpcconnectionstatechange(pc.connectionState);_this5._onMediaConnectionStateChange(pc.connectionState)};pc.onicecandidate=function(event){var candidate=event.candidate;if(candidate){_this5._hasIceCandidates=true;_this5.onicecandidate(candidate);_this5._setupRTCIceTransportListener()}_this5._log.info(\"ICE Candidate: \"+JSON.stringify(candidate))};pc.onicegatheringstatechange=function(){var state=pc.iceGatheringState;if(state===\"gathering\"){_this5._startIceGatheringTimeout()}else if(state===\"complete\"){_this5._stopIceGatheringTimeout();if(!_this5._hasIceCandidates){_this5._onIceGatheringFailure(ICE_GATHERING_FAIL_NONE)}if(_this5._hasIceCandidates&&_this5._hasIceGatheringFailures){_this5._startIceGatheringTimeout()}}_this5._log.info('pc.iceGatheringState is \"'+pc.iceGatheringState+'\"');_this5.onicegatheringstatechange(state)};pc.oniceconnectionstatechange=function(){_this5._log.info('pc.iceConnectionState is \"'+pc.iceConnectionState+'\"');_this5.oniceconnectionstatechange(pc.iceConnectionState);_this5._onMediaConnectionStateChange(pc.iceConnectionState)}};PeerConnection.prototype._initializeMediaStream=function(rtcConstraints,rtcConfiguration){if(this.status===\"open\"){return false}if(this.pstream.status===\"disconnected\"){this.onerror({info:{code:31e3,message:\"Cannot establish connection. Client is disconnected\",twilioError:new SignalingErrors.ConnectionDisconnected}});this.close();return false}this.version=this._setupPeerConnection(rtcConstraints,rtcConfiguration);this._setupChannel();return true};PeerConnection.prototype._removeReconnectionListeners=function(){if(this.pstream){this.pstream.removeListener(\"answer\",this._onAnswerOrRinging);this.pstream.removeListener(\"hangup\",this._onHangup)}};PeerConnection.prototype._setupRTCDtlsTransportListener=function(){var _this6=this;var dtlsTransport=this.getRTCDtlsTransport();if(!dtlsTransport||dtlsTransport.onstatechange){return}var handler=function handler(){_this6._log.info('dtlsTransportState is \"'+dtlsTransport.state+'\"');_this6.ondtlstransportstatechange(dtlsTransport.state)};handler();dtlsTransport.onstatechange=handler};PeerConnection.prototype._setupRTCIceTransportListener=function(){var _this7=this;var iceTransport=this._getRTCIceTransport();if(!iceTransport||iceTransport.onselectedcandidatepairchange){return}iceTransport.onselectedcandidatepairchange=function(){return _this7.onselectedcandidatepairchange(iceTransport.getSelectedCandidatePair())}};PeerConnection.prototype.iceRestart=function(){var _this8=this;this._log.info(\"Attempting to restart ICE...\");this._hasIceCandidates=false;this.version.createOffer(this.options.maxAverageBitrate,this.codecPreferences,{iceRestart:true}).then(function(){_this8._removeReconnectionListeners();_this8._onAnswerOrRinging=function(payload){_this8._removeReconnectionListeners();if(!payload.sdp||_this8.version.pc.signalingState!==\"have-local-offer\"){var message=\"Invalid state or param during ICE Restart:\"+(\"hasSdp:\"+!!payload.sdp+\", signalingState:\"+_this8.version.pc.signalingState);_this8._log.info(message);return}var sdp=_this8._maybeSetIceAggressiveNomination(payload.sdp);_this8._answerSdp=sdp;if(_this8.status!==\"closed\"){_this8.version.processAnswer(_this8.codecPreferences,sdp,null,function(err){var message=err&&err.message?err.message:err;_this8._log.info(\"Failed to process answer during ICE Restart. Error: \"+message)})}};_this8._onHangup=function(){_this8._log.info(\"Received hangup during ICE Restart\");_this8._removeReconnectionListeners()};_this8.pstream.on(\"answer\",_this8._onAnswerOrRinging);_this8.pstream.on(\"hangup\",_this8._onHangup);_this8.pstream.reinvite(_this8.version.getSDP(),_this8.callSid)}).catch(function(err){var message=err&&err.message?err.message:err;_this8._log.info(\"Failed to createOffer during ICE Restart. Error: \"+message);_this8.onfailed(message)})};PeerConnection.prototype.makeOutgoingCall=function(token,params,callsid,rtcConstraints,rtcConfiguration,onMediaStarted){var _this9=this;if(!this._initializeMediaStream(rtcConstraints,rtcConfiguration)){return}var self=this;this.callSid=callsid;function onAnswerSuccess(){if(self.options){self._setEncodingParameters(self.options.dscp)}onMediaStarted(self.version.pc)}function onAnswerError(err){var errMsg=err.message||err;self.onerror({info:{code:31e3,message:\"Error processing answer: \"+errMsg,twilioError:new MediaErrors.ClientRemoteDescFailed}})}this._onAnswerOrRinging=function(payload){if(!payload.sdp){return}var sdp=_this9._maybeSetIceAggressiveNomination(payload.sdp);self._answerSdp=sdp;if(self.status!==\"closed\"){self.version.processAnswer(_this9.codecPreferences,sdp,onAnswerSuccess,onAnswerError)}self.pstream.removeListener(\"answer\",self._onAnswerOrRinging);self.pstream.removeListener(\"ringing\",self._onAnswerOrRinging)};this.pstream.on(\"answer\",this._onAnswerOrRinging);this.pstream.on(\"ringing\",this._onAnswerOrRinging);function onOfferSuccess(){if(self.status!==\"closed\"){self.pstream.invite(self.version.getSDP(),self.callSid,self.options.preflight,params);self._setupRTCDtlsTransportListener()}}function onOfferError(err){var errMsg=err.message||err;self.onerror({info:{code:31e3,message:\"Error creating the offer: \"+errMsg,twilioError:new MediaErrors.ClientLocalDescFailed}})}this.version.createOffer(this.options.maxAverageBitrate,this.codecPreferences,{audio:true},onOfferSuccess,onOfferError)};PeerConnection.prototype.answerIncomingCall=function(callSid,sdp,rtcConstraints,rtcConfiguration,onMediaStarted){if(!this._initializeMediaStream(rtcConstraints,rtcConfiguration)){return}sdp=this._maybeSetIceAggressiveNomination(sdp);this._answerSdp=sdp.replace(/^a=setup:actpass$/gm,\"a=setup:passive\");this.callSid=callSid;var self=this;function onAnswerSuccess(){if(self.status!==\"closed\"){self.pstream.answer(self.version.getSDP(),callSid);if(self.options){self._setEncodingParameters(self.options.dscp)}onMediaStarted(self.version.pc);self._setupRTCDtlsTransportListener()}}function onAnswerError(err){var errMsg=err.message||err;self.onerror({info:{code:31e3,message:\"Error creating the answer: \"+errMsg,twilioError:new MediaErrors.ClientRemoteDescFailed}})}this.version.processSDP(this.options.maxAverageBitrate,this.codecPreferences,sdp,{audio:true},onAnswerSuccess,onAnswerError)};PeerConnection.prototype.close=function(){if(this.version&&this.version.pc){if(this.version.pc.signalingState!==\"closed\"){this.version.pc.close()}this.version.pc=null}if(this.stream){this.mute(false);this._stopStream(this.stream)}this.stream=null;this._removeReconnectionListeners();this._stopIceGatheringTimeout();Promise.all(this._removeAudioOutputs()).catch(function(){});if(this._mediaStreamSource){this._mediaStreamSource.disconnect()}if(this._inputAnalyser){this._inputAnalyser.disconnect()}if(this._outputAnalyser){this._outputAnalyser.disconnect()}if(this._inputAnalyser2){this._inputAnalyser2.disconnect()}if(this._outputAnalyser2){this._outputAnalyser2.disconnect()}this.status=\"closed\";this.onclose()};PeerConnection.prototype.reject=function(callSid){this.callSid=callSid};PeerConnection.prototype.ignore=function(callSid){this.callSid=callSid};PeerConnection.prototype.mute=function(shouldMute){this.isMuted=shouldMute;if(!this.stream){return}if(this._sender&&this._sender.track){this._sender.track.enabled=!shouldMute}else{var audioTracks=typeof this.stream.getAudioTracks===\"function\"?this.stream.getAudioTracks():this.stream.audioTracks;audioTracks.forEach(function(track){track.enabled=!shouldMute})}};PeerConnection.prototype.getOrCreateDTMFSender=function getOrCreateDTMFSender(){if(this._dtmfSender||this._dtmfSenderUnsupported){return this._dtmfSender||null}var self=this;var pc=this.version.pc;if(!pc){this._log.info(\"No RTCPeerConnection available to call createDTMFSender on\");return null}if(typeof pc.getSenders===\"function\"&&(typeof RTCDTMFSender===\"function\"||typeof RTCDtmfSender===\"function\")){var chosenSender=pc.getSenders().find(function(sender){return sender.dtmf});if(chosenSender){this._log.info(\"Using RTCRtpSender#dtmf\");this._dtmfSender=chosenSender.dtmf;return this._dtmfSender}}if(typeof pc.createDTMFSender===\"function\"&&typeof pc.getLocalStreams===\"function\"){var track=pc.getLocalStreams().map(function(stream){var tracks=self._getAudioTracks(stream);return tracks&&tracks[0]})[0];if(!track){this._log.info(\"No local audio MediaStreamTrack available on the RTCPeerConnection to pass to createDTMFSender\");return null}this._log.info(\"Creating RTCDTMFSender\");this._dtmfSender=pc.createDTMFSender(track);return this._dtmfSender}this._log.info(\"RTCPeerConnection does not support RTCDTMFSender\");this._dtmfSenderUnsupported=true;return null};PeerConnection.prototype.getRTCDtlsTransport=function getRTCDtlsTransport(){var sender=this.version&&this.version.pc&&typeof this.version.pc.getSenders===\"function\"&&this.version.pc.getSenders()[0];return sender&&sender.transport||null};PeerConnection.prototype._canStopMediaStreamTrack=function(){return typeof MediaStreamTrack.prototype.stop===\"function\"};PeerConnection.prototype._getAudioTracks=function(stream){return typeof stream.getAudioTracks===\"function\"?stream.getAudioTracks():stream.audioTracks};PeerConnection.prototype._getRTCIceTransport=function _getRTCIceTransport(){var dtlsTransport=this.getRTCDtlsTransport();return dtlsTransport&&dtlsTransport.iceTransport||null};PeerConnection.protocol=function(){return RTCPC.test()?new RTCPC:null}();function addStream(pc,stream){if(typeof pc.addTrack===\"function\"){stream.getAudioTracks().forEach(function(track){pc.addTrack(track,stream)})}else{pc.addStream(stream)}}function cloneStream(oldStream){var newStream=typeof MediaStream!==\"undefined\"?new MediaStream:new webkitMediaStream;oldStream.getAudioTracks().forEach(newStream.addTrack,newStream);return newStream}function removeStream(pc,stream){if(typeof pc.removeTrack===\"function\"){pc.getSenders().forEach(function(sender){pc.removeTrack(sender)})}else{pc.removeStream(stream)}}function setAudioSource(audio,stream){if(typeof audio.srcObject!==\"undefined\"){audio.srcObject=stream}else if(typeof audio.mozSrcObject!==\"undefined\"){audio.mozSrcObject=stream}else if(typeof audio.src!==\"undefined\"){var _window=audio.options.window||window;audio.src=(_window.URL||_window.webkitURL).createObjectURL(stream)}else{return false}return true}PeerConnection.enabled=RTCPC.test();module.exports=PeerConnection},{\"../errors\":12,\"../log\":15,\"../util\":35,\"./rtcpc\":27,\"./sdp\":28}],27:[function(require,module,exports){(function(global){(function(){\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj};var RTCPeerConnectionShim=require(\"rtcpeerconnection-shim\");var Log=require(\"../log\").default;var _require=require(\"./sdp\"),setCodecPreferences=_require.setCodecPreferences,setMaxAverageBitrate=_require.setMaxAverageBitrate;var util=require(\"../util\");function RTCPC(){if(typeof window===\"undefined\"){this.log.info(\"No RTCPeerConnection implementation available. The window object was not found.\");return}if(util.isLegacyEdge()){this.RTCPeerConnection=new RTCPeerConnectionShim(typeof window!==\"undefined\"?window:global)}else if(typeof window.RTCPeerConnection===\"function\"){this.RTCPeerConnection=window.RTCPeerConnection}else if(typeof window.webkitRTCPeerConnection===\"function\"){this.RTCPeerConnection=webkitRTCPeerConnection}else if(typeof window.mozRTCPeerConnection===\"function\"){this.RTCPeerConnection=mozRTCPeerConnection;window.RTCSessionDescription=mozRTCSessionDescription;window.RTCIceCandidate=mozRTCIceCandidate}else{this.log.info(\"No RTCPeerConnection implementation available\")}}RTCPC.prototype.create=function(rtcConstraints,rtcConfiguration){this.log=Log.getInstance();this.pc=new this.RTCPeerConnection(rtcConfiguration,rtcConstraints)};RTCPC.prototype.createModernConstraints=function(c){if(typeof c===\"undefined\"){return null}var nc=Object.assign({},c);if(typeof webkitRTCPeerConnection!==\"undefined\"&&!util.isLegacyEdge()){nc.mandatory={};if(typeof c.audio!==\"undefined\"){nc.mandatory.OfferToReceiveAudio=c.audio}if(typeof c.video!==\"undefined\"){nc.mandatory.OfferToReceiveVideo=c.video}}else{if(typeof c.audio!==\"undefined\"){nc.offerToReceiveAudio=c.audio}if(typeof c.video!==\"undefined\"){nc.offerToReceiveVideo=c.video}}delete nc.audio;delete nc.video;return nc};RTCPC.prototype.createOffer=function(maxAverageBitrate,codecPreferences,constraints,onSuccess,onError){var _this=this;constraints=this.createModernConstraints(constraints);return promisifyCreate(this.pc.createOffer,this.pc)(constraints).then(function(offer){if(!_this.pc){return Promise.resolve()}var sdp=setMaxAverageBitrate(offer.sdp,maxAverageBitrate);return promisifySet(_this.pc.setLocalDescription,_this.pc)(new RTCSessionDescription({type:\"offer\",sdp:setCodecPreferences(sdp,codecPreferences)}))}).then(onSuccess,onError)};RTCPC.prototype.createAnswer=function(maxAverageBitrate,codecPreferences,constraints,onSuccess,onError){var _this2=this;constraints=this.createModernConstraints(constraints);return promisifyCreate(this.pc.createAnswer,this.pc)(constraints).then(function(answer){if(!_this2.pc){return Promise.resolve()}var sdp=setMaxAverageBitrate(answer.sdp,maxAverageBitrate);return promisifySet(_this2.pc.setLocalDescription,_this2.pc)(new RTCSessionDescription({type:\"answer\",sdp:setCodecPreferences(sdp,codecPreferences)}))}).then(onSuccess,onError)};RTCPC.prototype.processSDP=function(maxAverageBitrate,codecPreferences,sdp,constraints,onSuccess,onError){var _this3=this;sdp=setCodecPreferences(sdp,codecPreferences);var desc=new RTCSessionDescription({sdp:sdp,type:\"offer\"});return promisifySet(this.pc.setRemoteDescription,this.pc)(desc).then(function(){_this3.createAnswer(maxAverageBitrate,codecPreferences,constraints,onSuccess,onError)})};RTCPC.prototype.getSDP=function(){return this.pc.localDescription.sdp};RTCPC.prototype.processAnswer=function(codecPreferences,sdp,onSuccess,onError){if(!this.pc){return Promise.resolve()}sdp=setCodecPreferences(sdp,codecPreferences);return promisifySet(this.pc.setRemoteDescription,this.pc)(new RTCSessionDescription({sdp:sdp,type:\"answer\"})).then(onSuccess,onError)};RTCPC.test=function(){if((typeof navigator===\"undefined\"?\"undefined\":_typeof(navigator))===\"object\"){var getUserMedia=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.getUserMedia;if(util.isLegacyEdge(navigator)){return false}if(getUserMedia&&typeof window.RTCPeerConnection===\"function\"){return true}else if(getUserMedia&&typeof window.webkitRTCPeerConnection===\"function\"){return true}else if(getUserMedia&&typeof window.mozRTCPeerConnection===\"function\"){try{var test=new window.mozRTCPeerConnection;if(typeof test.getLocalStreams!==\"function\")return false}catch(e){return false}return true}else if(typeof RTCIceGatherer!==\"undefined\"){return true}}return false};function promisify(fn,ctx,areCallbacksFirst){return function(){var args=Array.prototype.slice.call(arguments);return new Promise(function(resolve){resolve(fn.apply(ctx,args))}).catch(function(){return new Promise(function(resolve,reject){fn.apply(ctx,areCallbacksFirst?[resolve,reject].concat(args):args.concat([resolve,reject]))})})}}function promisifyCreate(fn,ctx){return promisify(fn,ctx,true)}function promisifySet(fn,ctx){return promisify(fn,ctx,false)}module.exports=RTCPC}).call(this)}).call(this,typeof global!==\"undefined\"?global:typeof self!==\"undefined\"?self:typeof window!==\"undefined\"?window:{})},{\"../log\":15,\"../util\":35,\"./sdp\":28,\"rtcpeerconnection-shim\":56}],28:[function(require,module,exports){\"use strict\";var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i[\"return\"])_i[\"return\"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr)){return arr}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i)}else{throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}}();var util=require(\"../util\");var ptToFixedBitrateAudioCodecName={0:\"PCMU\",8:\"PCMA\"};var defaultOpusId=111;var BITRATE_MAX=51e4;var BITRATE_MIN=6e3;function getPreferredCodecInfo(sdp){var _ref=/a=rtpmap:(\\d+) (\\S+)/m.exec(sdp)||[null,\"\",\"\"],_ref2=_slicedToArray(_ref,3),codecId=_ref2[1],codecName=_ref2[2];var regex=new RegExp(\"a=fmtp:\"+codecId+\" (\\\\S+)\",\"m\");var _ref3=regex.exec(sdp)||[null,\"\"],_ref4=_slicedToArray(_ref3,2),codecParams=_ref4[1];return{codecName:codecName,codecParams:codecParams}}function setIceAggressiveNomination(sdp){if(!util.isChrome(window,window.navigator)){return sdp}return sdp.split(\"\\n\").filter(function(line){return line.indexOf(\"a=ice-lite\")===-1}).join(\"\\n\")}function setMaxAverageBitrate(sdp,maxAverageBitrate){if(typeof maxAverageBitrate!==\"number\"||maxAverageBitrateBITRATE_MAX){return sdp}var matches=/a=rtpmap:(\\d+) opus/m.exec(sdp);var opusId=matches&&matches.length?matches[1]:defaultOpusId;var regex=new RegExp(\"a=fmtp:\"+opusId);var lines=sdp.split(\"\\n\").map(function(line){return regex.test(line)?line+(\";maxaveragebitrate=\"+maxAverageBitrate):line});return lines.join(\"\\n\")}function setCodecPreferences(sdp,preferredCodecs){var mediaSections=getMediaSections(sdp);var session=sdp.split(\"\\r\\nm=\")[0];return[session].concat(mediaSections.map(function(section){if(!/^m=(audio|video)/.test(section)){return section}var kind=section.match(/^m=(audio|video)/)[1];var codecMap=createCodecMapForMediaSection(section);var payloadTypes=getReorderedPayloadTypes(codecMap,preferredCodecs);var newSection=setPayloadTypesInMediaSection(payloadTypes,section);var pcmaPayloadTypes=codecMap.get(\"pcma\")||[];var pcmuPayloadTypes=codecMap.get(\"pcmu\")||[];var fixedBitratePayloadTypes=kind===\"audio\"?new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes)):new Set;return fixedBitratePayloadTypes.has(payloadTypes[0])?newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g,\"\"):newSection})).join(\"\\r\\n\")}function getMediaSections(sdp,kind,direction){return sdp.replace(/\\r\\n\\r\\n$/,\"\\r\\n\").split(\"\\r\\nm=\").slice(1).map(function(mediaSection){return\"m=\"+mediaSection}).filter(function(mediaSection){var kindPattern=new RegExp(\"m=\"+(kind||\".*\"),\"gm\");var directionPattern=new RegExp(\"a=\"+(direction||\".*\"),\"gm\");return kindPattern.test(mediaSection)&&directionPattern.test(mediaSection)})}function createCodecMapForMediaSection(section){return Array.from(createPtToCodecName(section)).reduce(function(codecMap,pair){var pt=pair[0];var codecName=pair[1];var pts=codecMap.get(codecName)||[];return codecMap.set(codecName,pts.concat(pt))},new Map)}function getReorderedPayloadTypes(codecMap,preferredCodecs){preferredCodecs=preferredCodecs.map(function(codecName){return codecName.toLowerCase()});var preferredPayloadTypes=util.flatMap(preferredCodecs,function(codecName){return codecMap.get(codecName)||[]});var remainingCodecs=util.difference(Array.from(codecMap.keys()),preferredCodecs);var remainingPayloadTypes=util.flatMap(remainingCodecs,function(codecName){return codecMap.get(codecName)});return preferredPayloadTypes.concat(remainingPayloadTypes)}function setPayloadTypesInMediaSection(payloadTypes,section){var lines=section.split(\"\\r\\n\");var mLine=lines[0];var otherLines=lines.slice(1);mLine=mLine.replace(/([0-9]+\\s?)+$/,payloadTypes.join(\" \"));return[mLine].concat(otherLines).join(\"\\r\\n\")}function createPtToCodecName(mediaSection){return getPayloadTypesInMediaSection(mediaSection).reduce(function(ptToCodecName,pt){var rtpmapPattern=new RegExp(\"a=rtpmap:\"+pt+\" ([^/]+)\");var matches=mediaSection.match(rtpmapPattern);var codecName=matches?matches[1].toLowerCase():ptToFixedBitrateAudioCodecName[pt]?ptToFixedBitrateAudioCodecName[pt].toLowerCase():\"\";return ptToCodecName.set(pt,codecName)},new Map)}function getPayloadTypesInMediaSection(section){var mLine=section.split(\"\\r\\n\")[0];var matches=mLine.match(/([0-9]+)/g);if(!matches){return[]}return matches.slice(1).map(function(match){return parseInt(match,10)})}module.exports={getPreferredCodecInfo:getPreferredCodecInfo,setCodecPreferences:setCodecPreferences,setIceAggressiveNomination:setIceAggressiveNomination,setMaxAverageBitrate:setMaxAverageBitrate}},{\"../util\":35}],29:[function(require,module,exports){var __spreadArrays=this&&this.__spreadArrays||function(){for(var s=0,i=0,il=arguments.length;i0}function sampleDevices(mediaDevices){nativeMediaDevices.enumerateDevices().then(function(newDevices){var knownDevices=mediaDevices._knownDevices;var oldDevices=knownDevices.slice();[].splice.apply(knownDevices,[0,knownDevices.length].concat(newDevices.sort(sortDevicesById)));if(!mediaDevices._deviceChangeIsNative&&devicesHaveChanged(knownDevices,oldDevices)){mediaDevices.dispatchEvent(new Event(\"devicechange\"))}if(!mediaDevices._deviceInfoChangeIsNative&&deviceInfosHaveChanged(knownDevices,oldDevices)){mediaDevices.dispatchEvent(new Event(\"deviceinfochange\"))}})}function propertyHasChanged(propertyName,as,bs){return as.some(function(a,i){return a[propertyName]!==bs[i][propertyName]})}function reemitNativeEvent(mediaDevices,eventName){var methodName=\"on\"+eventName;function dispatchEvent(event){mediaDevices.dispatchEvent(event)}if(methodName in nativeMediaDevices){if(\"addEventListener\"in nativeMediaDevices){nativeMediaDevices.addEventListener(eventName,dispatchEvent)}else{nativeMediaDevices[methodName]=dispatchEvent}return true}return false}function sortDevicesById(a,b){return a.deviceId0){this._maxDurationTimeout=setTimeout(this._stop.bind(this),this._maxDuration)}forceShouldLoop=typeof forceShouldLoop===\"boolean\"?forceShouldLoop:this._shouldLoop;var self=this;var playPromise=this._playPromise=Promise.all(this._sinkIds.map(function createAudioElement(sinkId){if(!self._Audio){return Promise.resolve()}var audioElement=self._activeEls.get(sinkId);if(audioElement){return self._playAudioElement(sinkId,forceIsMuted,forceShouldLoop)}audioElement=new self._Audio(self.url);if(typeof audioElement.setAttribute===\"function\"){audioElement.setAttribute(\"crossorigin\",\"anonymous\")}return new Promise(function(resolve){audioElement.addEventListener(\"canplaythrough\",resolve)}).then(function(){return(self._isSinkSupported?audioElement.setSinkId(sinkId):Promise.resolve()).then(function setSinkIdSuccess(){self._activeEls.set(sinkId,audioElement);if(!self._playPromise){return Promise.resolve()}return self._playAudioElement(sinkId,forceIsMuted,forceShouldLoop)})})}));return playPromise};Sound.prototype._stop=function _stop(){var _this2=this;this._activeEls.forEach(function(audioEl,sinkId){if(_this2._sinkIds.includes(sinkId)){audioEl.pause();audioEl.currentTime=0}else{destroyAudioElement(audioEl);_this2._activeEls.delete(sinkId)}});clearTimeout(this._maxDurationTimeout);this._playPromise=null;this._maxDurationTimeout=null};Sound.prototype.setSinkIds=function setSinkIds(ids){if(!this._isSinkSupported){return}ids=ids.forEach?ids:[ids];[].splice.apply(this._sinkIds,[0,this._sinkIds.length].concat(ids))};Sound.prototype.stop=function stop(){var _this3=this;this._operations.enqueue(function(){_this3._stop();return Promise.resolve()})};Sound.prototype.play=function play(){var _this4=this;return this._operations.enqueue(function(){return _this4._play()})};module.exports=Sound},{\"./asyncQueue\":4,\"./errors\":12,\"@twilio/audioplayer\":40}],34:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;imax?1:0},0)}function countLow(min,values){return values.reduce(function(lowCount,value){return lowCount+=valuethis._maxSampleCount){samples.splice(0,samples.length-this._maxSampleCount)}};StatsMonitor.prototype._clearWarning=function(statName,thresholdName,data){var warningId=statName+\":\"+thresholdName;var activeWarning=this._activeWarnings.get(warningId);if(!activeWarning||Date.now()-activeWarning.timeRaised0?currentPacketsLost/currentInboundPackets*100:0;var totalInboundPackets=stats.packetsReceived+stats.packetsLost;var totalPacketsLostFraction=totalInboundPackets>0?stats.packetsLost/totalInboundPackets*100:100;var rttValue=typeof stats.rtt===\"number\"||!previousSample?stats.rtt:previousSample.rtt;var audioInputLevelValues=this._inputVolumes.splice(0);this._supplementalSampleBuffers.audioInputLevel.push(audioInputLevelValues);var audioOutputLevelValues=this._outputVolumes.splice(0);this._supplementalSampleBuffers.audioOutputLevel.push(audioOutputLevelValues);return{audioInputLevel:Math.round(util_1.average(audioInputLevelValues)),audioOutputLevel:Math.round(util_1.average(audioOutputLevelValues)),bytesReceived:currentBytesReceived,bytesSent:currentBytesSent,codecName:stats.codecName,jitter:stats.jitter,mos:this._mos.calculate(rttValue,stats.jitter,previousSample&¤tPacketsLostFraction),packetsLost:currentPacketsLost,packetsLostFraction:currentPacketsLostFraction,packetsReceived:currentPacketsReceived,packetsSent:currentPacketsSent,rtt:rttValue,timestamp:stats.timestamp,totals:{bytesReceived:stats.bytesReceived,bytesSent:stats.bytesSent,packetsLost:stats.packetsLost,packetsLostFraction:totalPacketsLostFraction,packetsReceived:stats.packetsReceived,packetsSent:stats.packetsSent}}};StatsMonitor.prototype._fetchSample=function(){var _this=this;this._getSample().then(function(sample){_this._addSample(sample);_this._raiseWarnings();_this.emit(\"sample\",sample)}).catch(function(error){_this.disable();_this.emit(\"error\",error)})};StatsMonitor.prototype._getSample=function(){var _this=this;return this._getRTCStats(this._peerConnection).then(function(stats){var previousSample=null;if(_this._sampleBuffer.length){previousSample=_this._sampleBuffer[_this._sampleBuffer.length-1]}return _this._createSample(stats,previousSample)})};StatsMonitor.prototype._raiseWarning=function(statName,thresholdName,data){var warningId=statName+\":\"+thresholdName;if(this._activeWarnings.has(warningId)){return}this._activeWarnings.set(warningId,{timeRaised:Date.now()});var thresholds=this._thresholds[statName];var thresholdValue;if(Array.isArray(thresholds)){var foundThreshold=thresholds.find(function(threshold){return thresholdName in threshold});if(foundThreshold){thresholdValue=foundThreshold[thresholdName]}}else{thresholdValue=this._thresholds[statName][thresholdName]}this.emit(\"warning\",__assign(__assign({},data),{name:statName,threshold:{name:thresholdName,value:thresholdValue}}))};StatsMonitor.prototype._raiseWarnings=function(){var _this=this;if(!this._warningsEnabled){return}Object.keys(this._thresholds).forEach(function(name){return _this._raiseWarningsForStat(name)})};StatsMonitor.prototype._raiseWarningsForStat=function(statName){var _this=this;var limits=Array.isArray(this._thresholds[statName])?this._thresholds[statName]:[this._thresholds[statName]];limits.forEach(function(limit){var samples=_this._sampleBuffer;var clearCount=limit.clearCount||SAMPLE_COUNT_CLEAR;var raiseCount=limit.raiseCount||SAMPLE_COUNT_RAISE;var sampleCount=limit.sampleCount||_this._maxSampleCount;var relevantSamples=samples.slice(-sampleCount);var values=relevantSamples.map(function(sample){return sample[statName]});var containsNull=values.some(function(value){return typeof value===\"undefined\"||value===null});if(containsNull){return}var count;if(typeof limit.max===\"number\"){count=countHigh(limit.max,values);if(count>=raiseCount){_this._raiseWarning(statName,\"max\",{values:values,samples:relevantSamples})}else if(count<=clearCount){_this._clearWarning(statName,\"max\",{values:values,samples:relevantSamples})}}if(typeof limit.min===\"number\"){count=countLow(limit.min,values);if(count>=raiseCount){_this._raiseWarning(statName,\"min\",{values:values,samples:relevantSamples})}else if(count<=clearCount){_this._clearWarning(statName,\"min\",{values:values,samples:relevantSamples})}}if(typeof limit.maxDuration===\"number\"&&samples.length>1){relevantSamples=samples.slice(-2);var prevValue=relevantSamples[0][statName];var curValue=relevantSamples[1][statName];var prevStreak=_this._currentStreaks.get(statName)||0;var streak=prevValue===curValue?prevStreak+1:0;_this._currentStreaks.set(statName,streak);if(streak>=limit.maxDuration){_this._raiseWarning(statName,\"maxDuration\",{value:streak})}else if(streak===0){_this._clearWarning(statName,\"maxDuration\",{value:prevStreak})}}if(typeof limit.minStandardDeviation===\"number\"){var sampleSets=_this._supplementalSampleBuffers[statName];if(!sampleSets||sampleSets.lengthlimit.sampleCount){sampleSets.splice(0,sampleSets.length-limit.sampleCount)}var flatSamples=flattenSamples(sampleSets.slice(-sampleCount));var stdDev=calculateStandardDeviation(flatSamples);if(typeof stdDev!==\"number\"){return}if(stdDevy}],[\"minAverage\",function(x,y){return x=sampleCount){var avg=util_1.average(values);if(comparator(avg,limit[thresholdName])){_this._raiseWarning(statName,thresholdName,{values:values,samples:relevantSamples})}else if(!comparator(avg,limit.clearValue||limit[thresholdName])){_this._clearWarning(statName,thresholdName,{values:values,samples:relevantSamples})}}})})};return StatsMonitor}(events_1.EventEmitter);exports.default=StatsMonitor},{\"./errors\":12,\"./rtc/mos\":25,\"./rtc/stats\":29,\"./util\":35,events:48}],35:[function(require,module,exports){(function(global){(function(){function TwilioException(message){if(!(this instanceof TwilioException)){return new TwilioException(message)}this.message=message}TwilioException.prototype.toString=function(){return\"Twilio.Exception: \"+this.message};function average(values){return values&&values.length?values.reduce(function(t,v){return t+v})/values.length:0}function difference(lefts,rights,getKey){getKey=getKey||function(a){return a};var rightKeys=new Set(rights.map(getKey));return lefts.filter(function(left){return!rightKeys.has(getKey(left))})}function isElectron(navigator){return!!navigator.userAgent.match(\"Electron\")}function isChrome(window,navigator){var isCriOS=!!navigator.userAgent.match(\"CriOS\");var isHeadlessChrome=!!navigator.userAgent.match(\"HeadlessChrome\");var isGoogle=typeof window.chrome!==\"undefined\"&&navigator.vendor===\"Google Inc.\"&&navigator.userAgent.indexOf(\"OPR\")===-1&&navigator.userAgent.indexOf(\"Edge\")===-1;return isCriOS||isElectron(navigator)||isGoogle||isHeadlessChrome}function isFirefox(navigator){navigator=navigator||(typeof window===\"undefined\"?global.navigator:window.navigator);return!!navigator&&typeof navigator.userAgent===\"string\"&&/firefox|fxios/i.test(navigator.userAgent)}function isLegacyEdge(navigator){navigator=navigator||(typeof window===\"undefined\"?global.navigator:window.navigator);return!!navigator&&typeof navigator.userAgent===\"string\"&&/edge\\/\\d+/i.test(navigator.userAgent)}function isSafari(navigator){return!!navigator.vendor&&navigator.vendor.indexOf(\"Apple\")!==-1&&navigator.userAgent&&navigator.userAgent.indexOf(\"CriOS\")===-1&&navigator.userAgent.indexOf(\"FxiOS\")===-1}function isUnifiedPlanDefault(window,navigator,PeerConnection,RtpTransceiver){if(typeof window===\"undefined\"||typeof navigator===\"undefined\"||typeof PeerConnection===\"undefined\"||typeof RtpTransceiver===\"undefined\"||typeof PeerConnection.prototype===\"undefined\"||typeof RtpTransceiver.prototype===\"undefined\"){return false}if(isChrome(window,navigator)&&PeerConnection.prototype.addTransceiver){var pc=new PeerConnection;var isUnifiedPlan=true;try{pc.addTransceiver(\"audio\")}catch(e){isUnifiedPlan=false}pc.close();return isUnifiedPlan}else if(isFirefox(navigator)){return true}else if(isSafari(navigator)){return\"currentDirection\"in RtpTransceiver.prototype}return false}function queryToJson(params){if(!params){return\"\"}return params.split(\"&\").reduce(function(output,pair){var parts=pair.split(\"=\");var key=parts[0];var value=decodeURIComponent((parts[1]||\"\").replace(/\\+/g,\"%20\"));if(key){output[key]=value}return output},{})}function flatMap(list,mapFn){var listArray=list instanceof Map||list instanceof Set?Array.from(list.values()):list;mapFn=mapFn||function(item){return item};return listArray.reduce(function(flattened,item){var mapped=mapFn(item);return flattened.concat(mapped)},[])}exports.Exception=TwilioException;exports.average=average;exports.difference=difference;exports.isElectron=isElectron;exports.isChrome=isChrome;exports.isFirefox=isFirefox;exports.isLegacyEdge=isLegacyEdge;exports.isSafari=isSafari;exports.isUnifiedPlanDefault=isUnifiedPlanDefault;exports.queryToJson=queryToJson;exports.flatMap=flatMap}).call(this)}).call(this,typeof global!==\"undefined\"?global:typeof self!==\"undefined\"?self:typeof window!==\"undefined\"?window:{})},{}],36:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i=_this._uris.length){_this._uriIndex=0}};_this._onSocketClose=function(event){_this._log.info(\"Received websocket close event code: \"+event.code+\". Reason: \"+event.reason);if(event.code===1006||event.code===1015){_this.emit(\"error\",{code:31005,message:event.reason||\"Websocket connection to Twilio's signaling servers were \"+\"unexpectedly ended. If this is happening consistently, there may \"+\"be an issue resolving the hostname provided. If a region or an \"+\"edge is being specified in Device setup, ensure it is valid.\",twilioError:new errors_1.SignalingErrors.ConnectionError});var wasConnected=_this.state===WSTransportState.Open||_this._previousState===WSTransportState.Open;if(_this._shouldFallback||!wasConnected){_this._moveUriIndex()}_this._shouldFallback=true}_this._closeSocket()};_this._onSocketError=function(err){_this._log.info(\"WebSocket received error: \"+err.message);_this.emit(\"error\",{code:31e3,message:err.message||\"WSTransport socket error\",twilioError:new errors_1.SignalingErrors.ConnectionDisconnected})};_this._onSocketMessage=function(message){_this._setHeartbeatTimeout();if(_this._socket&&message.data===\"\\n\"){_this._socket.send(\"\\n\");return}_this.emit(\"message\",message)};_this._onSocketOpen=function(){_this._log.info(\"WebSocket opened successfully.\");_this._timeOpened=Date.now();_this._shouldFallback=false;_this._setState(WSTransportState.Open);clearTimeout(_this._connectTimeout);_this._resetBackoffs();_this._setHeartbeatTimeout();_this.emit(\"open\")};_this._options=__assign(__assign({},WSTransport.defaultConstructorOptions),options);_this._uris=uris;_this._backoff=_this._setupBackoffs();return _this}WSTransport.prototype.close=function(){this._log.info(\"WSTransport.close() called...\");this._close()};WSTransport.prototype.open=function(){this._log.info(\"WSTransport.open() called...\");if(this._socket&&(this._socket.readyState===WebSocket.CONNECTING||this._socket.readyState===WebSocket.OPEN)){this._log.info(\"WebSocket already open.\");return}if(this._preferredUri){this._connect(this._preferredUri)}else{this._connect(this._uris[this._uriIndex])}};WSTransport.prototype.send=function(message){if(!this._socket||this._socket.readyState!==WebSocket.OPEN){return false}try{this._socket.send(message)}catch(e){this._log.info(\"Error while sending message:\",e.message);this._closeSocket();return false}return true};WSTransport.prototype.updatePreferredURI=function(uri){this._preferredUri=uri};WSTransport.prototype.updateURIs=function(uris){if(typeof uris===\"string\"){uris=[uris]}this._uris=uris;this._uriIndex=0};WSTransport.prototype._close=function(){this._setState(WSTransportState.Closed);this._closeSocket()};WSTransport.prototype._closeSocket=function(){clearTimeout(this._connectTimeout);clearTimeout(this._heartbeatTimeout);this._log.info(\"Closing and cleaning up WebSocket...\");if(!this._socket){this._log.info(\"No WebSocket to clean up.\");return}this._socket.removeEventListener(\"close\",this._onSocketClose);this._socket.removeEventListener(\"error\",this._onSocketError);this._socket.removeEventListener(\"message\",this._onSocketMessage);this._socket.removeEventListener(\"open\",this._onSocketOpen);if(this._socket.readyState===WebSocket.CONNECTING||this._socket.readyState===WebSocket.OPEN){this._socket.close()}if(this._timeOpened&&Date.now()-this._timeOpened>CONNECT_SUCCESS_TIMEOUT){this._resetBackoffs()}if(this.state!==WSTransportState.Closed){this._performBackoff()}delete this._socket;this.emit(\"close\")};WSTransport.prototype._connect=function(uri,retryCount){var _this=this;this._log.info(typeof retryCount===\"number\"?\"Attempting to reconnect (retry #\"+retryCount+\")...\":\"Attempting to connect...\");this._closeSocket();this._setState(WSTransportState.Connecting);this._connectedUri=uri;try{this._socket=new this._options.WebSocket(this._connectedUri)}catch(e){this._log.info(\"Could not connect to endpoint:\",e.message);this._close();this.emit(\"error\",{code:31e3,message:e.message||\"Could not connect to \"+this._connectedUri,twilioError:new errors_1.SignalingErrors.ConnectionDisconnected});return}this._socket.addEventListener(\"close\",this._onSocketClose);this._socket.addEventListener(\"error\",this._onSocketError);this._socket.addEventListener(\"message\",this._onSocketMessage);this._socket.addEventListener(\"open\",this._onSocketOpen);delete this._timeOpened;this._connectTimeout=setTimeout(function(){_this._log.info(\"WebSocket connection attempt timed out.\");_this._moveUriIndex();_this._closeSocket()},this._options.connectTimeoutMs)};WSTransport.prototype._performBackoff=function(){if(this._preferredUri){this._log.info(\"Preferred URI set; backing off.\");this._backoff.preferred.backoff()}else{this._log.info(\"Preferred URI not set; backing off.\");this._backoff.primary.backoff()}};WSTransport.prototype._resetBackoffs=function(){this._backoff.preferred.reset();this._backoff.primary.reset();this._backoffStartTime.preferred=null;this._backoffStartTime.primary=null};WSTransport.prototype._setHeartbeatTimeout=function(){var _this=this;clearTimeout(this._heartbeatTimeout);this._heartbeatTimeout=setTimeout(function(){_this._log.info(\"No messages received in \"+HEARTBEAT_TIMEOUT/1e3+\" seconds. Reconnecting...\");_this._shouldFallback=true;_this._closeSocket()},HEARTBEAT_TIMEOUT)};WSTransport.prototype._setState=function(state){this._previousState=this.state;this.state=state};WSTransport.prototype._setupBackoffs=function(){var _this=this;var preferredBackoffConfig={factor:2,maxDelay:this._options.maxPreferredDelayMs,randomisationFactor:.4};this._log.info(\"Initializing preferred transport backoff using config: \",preferredBackoffConfig);var preferredBackoff=Backoff.exponential(preferredBackoffConfig);preferredBackoff.on(\"backoff\",function(attempt,delay){if(_this.state===WSTransportState.Closed){_this._log.info(\"Preferred backoff initiated but transport state is closed; not attempting a connection.\");return}_this._log.info(\"Will attempt to reconnect Websocket to preferred URI in \"+delay+\"ms\");if(attempt===0){_this._backoffStartTime.preferred=Date.now();_this._log.info(\"Preferred backoff start; \"+_this._backoffStartTime.preferred)}});preferredBackoff.on(\"ready\",function(attempt,_delay){if(_this.state===WSTransportState.Closed){_this._log.info(\"Preferred backoff ready but transport state is closed; not attempting a connection.\");return}if(_this._backoffStartTime.preferred===null){_this._log.info(\"Preferred backoff start time invalid; not attempting a connection.\");return}if(Date.now()-_this._backoffStartTime.preferred>_this._options.maxPreferredDurationMs){_this._log.info(\"Max preferred backoff attempt time exceeded; falling back to primary backoff.\");_this._preferredUri=null;_this._backoff.primary.backoff();return}if(typeof _this._preferredUri!==\"string\"){_this._log.info(\"Preferred URI cleared; falling back to primary backoff.\");_this._preferredUri=null;_this._backoff.primary.backoff();return}_this._connect(_this._preferredUri,attempt+1)});var primaryBackoffConfig={factor:2,initialDelay:this._uris&&this._uris.length>1?Math.floor(Math.random()*(5e3-1e3+1))+1e3:100,maxDelay:this._options.maxPrimaryDelayMs,randomisationFactor:.4};this._log.info(\"Initializing primary transport backoff using config: \",primaryBackoffConfig);var primaryBackoff=Backoff.exponential(primaryBackoffConfig);primaryBackoff.on(\"backoff\",function(attempt,delay){if(_this.state===WSTransportState.Closed){_this._log.info(\"Primary backoff initiated but transport state is closed; not attempting a connection.\");return}_this._log.info(\"Will attempt to reconnect WebSocket in \"+delay+\"ms\");if(attempt===0){_this._backoffStartTime.primary=Date.now();_this._log.info(\"Primary backoff start; \"+_this._backoffStartTime.primary)}});primaryBackoff.on(\"ready\",function(attempt,_delay){if(_this.state===WSTransportState.Closed){_this._log.info(\"Primary backoff ready but transport state is closed; not attempting a connection.\");return}if(_this._backoffStartTime.primary===null){_this._log.info(\"Primary backoff start time invalid; not attempting a connection.\");return}if(Date.now()-_this._backoffStartTime.primary>_this._options.maxPrimaryDurationMs){_this._log.info(\"Max primary backoff attempt time exceeded; not attempting a connection.\");return}_this._connect(_this._uris[_this._uriIndex],attempt+1)});return{preferred:preferredBackoff,primary:primaryBackoff}};Object.defineProperty(WSTransport.prototype,\"uri\",{get:function(){return this._connectedUri},enumerable:true,configurable:true});WSTransport.defaultConstructorOptions={WebSocket:WebSocket,connectTimeoutMs:CONNECT_TIMEOUT,maxPreferredDelayMs:MAX_PREFERRED_DELAY,maxPreferredDurationMs:MAX_PREFERRED_DURATION,maxPrimaryDelayMs:MAX_PRIMARY_DELAY,maxPrimaryDurationMs:MAX_PRIMARY_DURATION};return WSTransport}(events_1.EventEmitter);exports.default=WSTransport},{\"./errors\":12,\"./log\":15,backoff:42,events:48,ws:1}],37:[function(require,module,exports){\"use strict\";var _regenerator=require(\"babel-runtime/regenerator\");var _regenerator2=_interopRequireDefault(_regenerator);var _createClass=function(){function defineProperties(target,props){for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:{};var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};_classCallCheck(this,AudioPlayer);var _this=_possibleConstructorReturn(this,(AudioPlayer.__proto__||Object.getPrototypeOf(AudioPlayer)).call(this));_this._audioNode=null;_this._pendingPlayDeferreds=[];_this._loop=false;_this._src=\"\";_this._sinkId=\"default\";if(typeof srcOrOptions!==\"string\"){options=srcOrOptions}_this._audioContext=audioContext;_this._audioElement=new(options.AudioFactory||Audio);_this._bufferPromise=_this._createPlayDeferred().promise;_this._destination=_this._audioContext.destination;_this._gainNode=_this._audioContext.createGain();_this._gainNode.connect(_this._destination);_this._XMLHttpRequest=options.XMLHttpRequestFactory||XMLHttpRequest;_this.addEventListener(\"canplaythrough\",function(){_this._resolvePlayDeferreds()});if(typeof srcOrOptions===\"string\"){_this.src=srcOrOptions}return _this}_createClass(AudioPlayer,[{key:\"load\",value:function load(){this._load(this._src)}},{key:\"pause\",value:function pause(){if(this.paused){return}this._audioElement.pause();this._audioNode.stop();this._audioNode.disconnect(this._gainNode);this._audioNode=null;this._rejectPlayDeferreds(new Error(\"The play() request was interrupted by a call to pause().\"))}},{key:\"play\",value:function play(){return __awaiter(this,void 0,void 0,_regenerator2.default.mark(function _callee(){var _this2=this;var buffer;return _regenerator2.default.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(this.paused){_context.next=6;break}_context.next=3;return this._bufferPromise;case 3:if(this.paused){_context.next=5;break}return _context.abrupt(\"return\");case 5:throw new Error(\"The play() request was interrupted by a call to pause().\");case 6:this._audioNode=this._audioContext.createBufferSource();this._audioNode.loop=this.loop;this._audioNode.addEventListener(\"ended\",function(){if(_this2._audioNode&&_this2._audioNode.loop){return}_this2.dispatchEvent(\"ended\")});_context.next=11;return this._bufferPromise;case 11:buffer=_context.sent;if(!this.paused){_context.next=14;break}throw new Error(\"The play() request was interrupted by a call to pause().\");case 14:this._audioNode.buffer=buffer;this._audioNode.connect(this._gainNode);this._audioNode.start();if(!this._audioElement.srcObject){_context.next=19;break}return _context.abrupt(\"return\",this._audioElement.play());case 19:case\"end\":return _context.stop()}}},_callee,this)}))}},{key:\"setSinkId\",value:function setSinkId(sinkId){return __awaiter(this,void 0,void 0,_regenerator2.default.mark(function _callee2(){return _regenerator2.default.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:if(!(typeof this._audioElement.setSinkId!==\"function\")){_context2.next=2;break}throw new Error(\"This browser does not support setSinkId.\");case 2:if(!(sinkId===this.sinkId)){_context2.next=4;break}return _context2.abrupt(\"return\");case 4:if(!(sinkId===\"default\")){_context2.next=11;break}if(!this.paused){this._gainNode.disconnect(this._destination)}this._audioElement.srcObject=null;this._destination=this._audioContext.destination;this._gainNode.connect(this._destination);this._sinkId=sinkId;return _context2.abrupt(\"return\");case 11:_context2.next=13;return this._audioElement.setSinkId(sinkId);case 13:if(!this._audioElement.srcObject){_context2.next=15;break}return _context2.abrupt(\"return\");case 15:this._gainNode.disconnect(this._audioContext.destination);this._destination=this._audioContext.createMediaStreamDestination();this._audioElement.srcObject=this._destination.stream;this._sinkId=sinkId;this._gainNode.connect(this._destination);case 20:case\"end\":return _context2.stop()}}},_callee2,this)}))}},{key:\"_createPlayDeferred\",value:function _createPlayDeferred(){var deferred=new Deferred_1.default;this._pendingPlayDeferreds.push(deferred);return deferred}},{key:\"_load\",value:function _load(src){var _this3=this;if(this._src&&this._src!==src){this.pause()}this._src=src;this._bufferPromise=new Promise(function(resolve,reject){return __awaiter(_this3,void 0,void 0,_regenerator2.default.mark(function _callee3(){var buffer;return _regenerator2.default.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:if(src){_context3.next=2;break}return _context3.abrupt(\"return\",this._createPlayDeferred().promise);case 2:_context3.next=4;return bufferSound(this._audioContext,this._XMLHttpRequest,src);case 4:buffer=_context3.sent;this.dispatchEvent(\"canplaythrough\");resolve(buffer);case 7:case\"end\":return _context3.stop()}}},_callee3,this)}))})}},{key:\"_rejectPlayDeferreds\",value:function _rejectPlayDeferreds(reason){var deferreds=this._pendingPlayDeferreds;deferreds.splice(0,deferreds.length).forEach(function(_ref){var reject=_ref.reject;return reject(reason)})}},{key:\"_resolvePlayDeferreds\",value:function _resolvePlayDeferreds(result){var deferreds=this._pendingPlayDeferreds;deferreds.splice(0,deferreds.length).forEach(function(_ref2){var resolve=_ref2.resolve;return resolve(result)})}},{key:\"destination\",get:function get(){return this._destination}},{key:\"loop\",get:function get(){return this._loop},set:function set(shouldLoop){if(!shouldLoop&&this.loop&&!this.paused){var _pauseAfterPlaythrough=function _pauseAfterPlaythrough(){self._audioNode.removeEventListener(\"ended\",_pauseAfterPlaythrough);self.pause()};var self=this;this._audioNode.addEventListener(\"ended\",_pauseAfterPlaythrough)}this._loop=shouldLoop}},{key:\"muted\",get:function get(){return this._gainNode.gain.value===0},set:function set(shouldBeMuted){this._gainNode.gain.value=shouldBeMuted?0:1}},{key:\"paused\",get:function get(){return this._audioNode===null}},{key:\"src\",get:function get(){return this._src},set:function set(src){this._load(src)}},{key:\"srcObject\",get:function get(){return this._audioElement.srcObject},set:function set(srcObject){this._audioElement.srcObject=srcObject}},{key:\"sinkId\",get:function get(){return this._sinkId}}]);return AudioPlayer}(EventTarget_1.default);exports.default=AudioPlayer;function bufferSound(context,RequestFactory,src){return __awaiter(this,void 0,void 0,_regenerator2.default.mark(function _callee4(){var request,event;return _regenerator2.default.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:request=new RequestFactory;request.open(\"GET\",src,true);request.responseType=\"arraybuffer\";_context4.next=5;return new Promise(function(resolve){request.addEventListener(\"load\",resolve);request.send()});case 5:event=_context4.sent;_context4.prev=6;return _context4.abrupt(\"return\",context.decodeAudioData(event.target.response));case 10:_context4.prev=10;_context4.t0=_context4[\"catch\"](6);return _context4.abrupt(\"return\",new Promise(function(resolve){context.decodeAudioData(event.target.response,resolve)}));case 13:case\"end\":return _context4.stop()}}},_callee4,this,[[6,10]])}))}},{\"./Deferred\":38,\"./EventTarget\":39,\"babel-runtime/regenerator\":41}],38:[function(require,module,exports){\"use strict\";var _createClass=function(){function defineProperties(target,props){for(var i=0;i1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}return(_eventEmitter=this._eventEmitter).emit.apply(_eventEmitter,[name].concat(args))}},{key:\"removeEventListener\",value:function removeEventListener(name,handler){return this._eventEmitter.removeListener(name,handler)}}]);return EventTarget}();exports.default=EventTarget},{events:48}],40:[function(require,module,exports){\"use strict\";var AudioPlayer=require(\"./AudioPlayer\");module.exports=AudioPlayer.default},{\"./AudioPlayer\":37}],41:[function(require,module,exports){module.exports=require(\"regenerator-runtime\")},{\"regenerator-runtime\":54}],42:[function(require,module,exports){var Backoff=require(\"./lib/backoff\");var ExponentialBackoffStrategy=require(\"./lib/strategy/exponential\");var FibonacciBackoffStrategy=require(\"./lib/strategy/fibonacci\");var FunctionCall=require(\"./lib/function_call.js\");module.exports.Backoff=Backoff;module.exports.FunctionCall=FunctionCall;module.exports.FibonacciStrategy=FibonacciBackoffStrategy;module.exports.ExponentialStrategy=ExponentialBackoffStrategy;module.exports.fibonacci=function(options){return new Backoff(new FibonacciBackoffStrategy(options))};module.exports.exponential=function(options){return new Backoff(new ExponentialBackoffStrategy(options))};module.exports.call=function(fn,vargs,callback){var args=Array.prototype.slice.call(arguments);fn=args[0];vargs=args.slice(1,args.length-1);callback=args[args.length-1];return new FunctionCall(fn,vargs,callback)}},{\"./lib/backoff\":43,\"./lib/function_call.js\":44,\"./lib/strategy/exponential\":45,\"./lib/strategy/fibonacci\":46}],43:[function(require,module,exports){var events=require(\"events\");var precond=require(\"precond\");var util=require(\"util\");function Backoff(backoffStrategy){events.EventEmitter.call(this);this.backoffStrategy_=backoffStrategy;this.maxNumberOfRetry_=-1;this.backoffNumber_=0;this.backoffDelay_=0;this.timeoutID_=-1;this.handlers={backoff:this.onBackoff_.bind(this)}}util.inherits(Backoff,events.EventEmitter);Backoff.prototype.failAfter=function(maxNumberOfRetry){precond.checkArgument(maxNumberOfRetry>0,\"Expected a maximum number of retry greater than 0 but got %s.\",maxNumberOfRetry);this.maxNumberOfRetry_=maxNumberOfRetry};Backoff.prototype.backoff=function(err){precond.checkState(this.timeoutID_===-1,\"Backoff in progress.\");if(this.backoffNumber_===this.maxNumberOfRetry_){this.emit(\"fail\",err);this.reset()}else{this.backoffDelay_=this.backoffStrategy_.next();this.timeoutID_=setTimeout(this.handlers.backoff,this.backoffDelay_);this.emit(\"backoff\",this.backoffNumber_,this.backoffDelay_,err)}};Backoff.prototype.onBackoff_=function(){this.timeoutID_=-1;this.emit(\"ready\",this.backoffNumber_,this.backoffDelay_);this.backoffNumber_++};Backoff.prototype.reset=function(){this.backoffNumber_=0;this.backoffStrategy_.reset();clearTimeout(this.timeoutID_);this.timeoutID_=-1};module.exports=Backoff},{events:48,precond:50,util:60}],44:[function(require,module,exports){var events=require(\"events\");var precond=require(\"precond\");var util=require(\"util\");var Backoff=require(\"./backoff\");var FibonacciBackoffStrategy=require(\"./strategy/fibonacci\");function FunctionCall(fn,args,callback){events.EventEmitter.call(this);precond.checkIsFunction(fn,\"Expected fn to be a function.\");precond.checkIsArray(args,\"Expected args to be an array.\");precond.checkIsFunction(callback,\"Expected callback to be a function.\");this.function_=fn;this.arguments_=args;this.callback_=callback;this.lastResult_=[];this.numRetries_=0;this.backoff_=null;this.strategy_=null;this.failAfter_=-1;this.retryPredicate_=FunctionCall.DEFAULT_RETRY_PREDICATE_;this.state_=FunctionCall.State_.PENDING}util.inherits(FunctionCall,events.EventEmitter);FunctionCall.State_={PENDING:0,RUNNING:1,COMPLETED:2,ABORTED:3};FunctionCall.DEFAULT_RETRY_PREDICATE_=function(err){return true};FunctionCall.prototype.isPending=function(){return this.state_==FunctionCall.State_.PENDING};FunctionCall.prototype.isRunning=function(){return this.state_==FunctionCall.State_.RUNNING};FunctionCall.prototype.isCompleted=function(){return this.state_==FunctionCall.State_.COMPLETED};FunctionCall.prototype.isAborted=function(){return this.state_==FunctionCall.State_.ABORTED};FunctionCall.prototype.setStrategy=function(strategy){precond.checkState(this.isPending(),\"FunctionCall in progress.\");this.strategy_=strategy;return this};FunctionCall.prototype.retryIf=function(retryPredicate){precond.checkState(this.isPending(),\"FunctionCall in progress.\");this.retryPredicate_=retryPredicate;return this};FunctionCall.prototype.getLastResult=function(){return this.lastResult_.concat()};FunctionCall.prototype.getNumRetries=function(){return this.numRetries_};FunctionCall.prototype.failAfter=function(maxNumberOfRetry){precond.checkState(this.isPending(),\"FunctionCall in progress.\");this.failAfter_=maxNumberOfRetry;return this};FunctionCall.prototype.abort=function(){if(this.isCompleted()||this.isAborted()){return}if(this.isRunning()){this.backoff_.reset()}this.state_=FunctionCall.State_.ABORTED;this.lastResult_=[new Error(\"Backoff aborted.\")];this.emit(\"abort\");this.doCallback_()};FunctionCall.prototype.start=function(backoffFactory){precond.checkState(!this.isAborted(),\"FunctionCall is aborted.\");precond.checkState(this.isPending(),\"FunctionCall already started.\");var strategy=this.strategy_||new FibonacciBackoffStrategy;this.backoff_=backoffFactory?backoffFactory(strategy):new Backoff(strategy);this.backoff_.on(\"ready\",this.doCall_.bind(this,true));this.backoff_.on(\"fail\",this.doCallback_.bind(this));this.backoff_.on(\"backoff\",this.handleBackoff_.bind(this));if(this.failAfter_>0){this.backoff_.failAfter(this.failAfter_)}this.state_=FunctionCall.State_.RUNNING;this.doCall_(false)};FunctionCall.prototype.doCall_=function(isRetry){if(isRetry){this.numRetries_++}var eventArgs=[\"call\"].concat(this.arguments_);events.EventEmitter.prototype.emit.apply(this,eventArgs);var callback=this.handleFunctionCallback_.bind(this);this.function_.apply(null,this.arguments_.concat(callback))};FunctionCall.prototype.doCallback_=function(){this.callback_.apply(null,this.lastResult_)};FunctionCall.prototype.handleFunctionCallback_=function(){if(this.isAborted()){return}var args=Array.prototype.slice.call(arguments);this.lastResult_=args;events.EventEmitter.prototype.emit.apply(this,[\"callback\"].concat(args));var err=args[0];if(err&&this.retryPredicate_(err)){this.backoff_.backoff(err)}else{this.state_=FunctionCall.State_.COMPLETED;this.doCallback_()}};FunctionCall.prototype.handleBackoff_=function(number,delay,err){this.emit(\"backoff\",number,delay,err)};module.exports=FunctionCall},{\"./backoff\":43,\"./strategy/fibonacci\":46,events:48,precond:50,util:60}],45:[function(require,module,exports){var util=require(\"util\");var precond=require(\"precond\");var BackoffStrategy=require(\"./strategy\");function ExponentialBackoffStrategy(options){BackoffStrategy.call(this,options);this.backoffDelay_=0;this.nextBackoffDelay_=this.getInitialDelay();this.factor_=ExponentialBackoffStrategy.DEFAULT_FACTOR;if(options&&options.factor!==undefined){precond.checkArgument(options.factor>1,\"Exponential factor should be greater than 1 but got %s.\",options.factor);this.factor_=options.factor}}util.inherits(ExponentialBackoffStrategy,BackoffStrategy);ExponentialBackoffStrategy.DEFAULT_FACTOR=2;ExponentialBackoffStrategy.prototype.next_=function(){this.backoffDelay_=Math.min(this.nextBackoffDelay_,this.getMaxDelay());this.nextBackoffDelay_=this.backoffDelay_*this.factor_;return this.backoffDelay_};ExponentialBackoffStrategy.prototype.reset_=function(){this.backoffDelay_=0;this.nextBackoffDelay_=this.getInitialDelay()};module.exports=ExponentialBackoffStrategy},{\"./strategy\":47,precond:50,util:60}],46:[function(require,module,exports){var util=require(\"util\");var BackoffStrategy=require(\"./strategy\");function FibonacciBackoffStrategy(options){BackoffStrategy.call(this,options);this.backoffDelay_=0;this.nextBackoffDelay_=this.getInitialDelay()}util.inherits(FibonacciBackoffStrategy,BackoffStrategy);FibonacciBackoffStrategy.prototype.next_=function(){var backoffDelay=Math.min(this.nextBackoffDelay_,this.getMaxDelay());this.nextBackoffDelay_+=this.backoffDelay_;this.backoffDelay_=backoffDelay;return backoffDelay};FibonacciBackoffStrategy.prototype.reset_=function(){this.nextBackoffDelay_=this.getInitialDelay();this.backoffDelay_=0};module.exports=FibonacciBackoffStrategy},{\"./strategy\":47,util:60}],47:[function(require,module,exports){var events=require(\"events\");var util=require(\"util\");function isDef(value){return value!==undefined&&value!==null}function BackoffStrategy(options){options=options||{};if(isDef(options.initialDelay)&&options.initialDelay<1){throw new Error(\"The initial timeout must be greater than 0.\")}else if(isDef(options.maxDelay)&&options.maxDelay<1){throw new Error(\"The maximal timeout must be greater than 0.\")}this.initialDelay_=options.initialDelay||100;this.maxDelay_=options.maxDelay||1e4;if(this.maxDelay_<=this.initialDelay_){throw new Error(\"The maximal backoff delay must be \"+\"greater than the initial backoff delay.\")}if(isDef(options.randomisationFactor)&&(options.randomisationFactor<0||options.randomisationFactor>1)){throw new Error(\"The randomisation factor must be between 0 and 1.\")}this.randomisationFactor_=options.randomisationFactor||0}BackoffStrategy.prototype.getMaxDelay=function(){return this.maxDelay_};BackoffStrategy.prototype.getInitialDelay=function(){return this.initialDelay_};BackoffStrategy.prototype.next=function(){var backoffDelay=this.next_();var randomisationMultiple=1+Math.random()*this.randomisationFactor_;var randomizedDelay=Math.round(backoffDelay*randomisationMultiple);return randomizedDelay};BackoffStrategy.prototype.next_=function(){throw new Error(\"BackoffStrategy.next_() unimplemented.\")};BackoffStrategy.prototype.reset=function(){this.reset_()};BackoffStrategy.prototype.reset_=function(){throw new Error(\"BackoffStrategy.reset_() unimplemented.\")};module.exports=BackoffStrategy},{events:48,util:60}],48:[function(require,module,exports){var objectCreate=Object.create||objectCreatePolyfill;var objectKeys=Object.keys||objectKeysPolyfill;var bind=Function.prototype.bind||functionBindPolyfill;function EventEmitter(){if(!this._events||!Object.prototype.hasOwnProperty.call(this,\"_events\")){this._events=objectCreate(null);this._eventsCount=0}this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;var defaultMaxListeners=10;var hasDefineProperty;try{var o={};if(Object.defineProperty)Object.defineProperty(o,\"x\",{value:0});hasDefineProperty=o.x===0}catch(err){hasDefineProperty=false}if(hasDefineProperty){Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:true,get:function(){return defaultMaxListeners},set:function(arg){if(typeof arg!==\"number\"||arg<0||arg!==arg)throw new TypeError('\"defaultMaxListeners\" must be a positive number');defaultMaxListeners=arg}})}else{EventEmitter.defaultMaxListeners=defaultMaxListeners}EventEmitter.prototype.setMaxListeners=function setMaxListeners(n){if(typeof n!==\"number\"||n<0||isNaN(n))throw new TypeError('\"n\" argument must be a positive number');this._maxListeners=n;return this};function $getMaxListeners(that){if(that._maxListeners===undefined)return EventEmitter.defaultMaxListeners;return that._maxListeners}EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return $getMaxListeners(this)};function emitNone(handler,isFn,self){if(isFn)handler.call(self);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i1)er=arguments[1];if(er instanceof Error){throw er}else{var err=new Error('Unhandled \"error\" event. ('+er+\")\");err.context=er;throw err}return false}handler=events[type];if(!handler)return false;var isFn=typeof handler===\"function\";len=arguments.length;switch(len){case 1:emitNone(handler,isFn,this);break;case 2:emitOne(handler,isFn,this,arguments[1]);break;case 3:emitTwo(handler,isFn,this,arguments[1],arguments[2]);break;case 4:emitThree(handler,isFn,this,arguments[1],arguments[2],arguments[3]);break;default:args=new Array(len-1);for(i=1;i0&&existing.length>m){existing.warned=true;var w=new Error(\"Possible EventEmitter memory leak detected. \"+existing.length+' \"'+String(type)+'\" listeners '+\"added. Use emitter.setMaxListeners() to \"+\"increase limit.\");w.name=\"MaxListenersExceededWarning\";w.emitter=target;w.type=type;w.count=existing.length;if(typeof console===\"object\"&&console.warn){console.warn(\"%s: %s\",w.name,w.message)}}}}return target}EventEmitter.prototype.addListener=function addListener(type,listener){return _addListener(this,type,listener,false)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(type,listener){return _addListener(this,type,listener,true)};function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=true;switch(arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:var args=new Array(arguments.length);for(var i=0;i=0;i--){if(list[i]===listener||list[i].listener===listener){originalListener=list[i].listener;position=i;break}}if(position<0)return this;if(position===0)list.shift();else spliceOne(list,position);if(list.length===1)events[type]=list[0];if(events.removeListener)this.emit(\"removeListener\",type,originalListener||listener)}return this};EventEmitter.prototype.removeAllListeners=function removeAllListeners(type){var listeners,events,i;events=this._events;if(!events)return this;if(!events.removeListener){if(arguments.length===0){this._events=objectCreate(null);this._eventsCount=0}else if(events[type]){if(--this._eventsCount===0)this._events=objectCreate(null);else delete events[type]}return this}if(arguments.length===0){var keys=objectKeys(events);var key;for(i=0;i=0;i--){this.removeListener(type,listeners[i])}}return this};function _listeners(target,type,unwrap){var events=target._events;if(!events)return[];var evlistener=events[type];if(!evlistener)return[];if(typeof evlistener===\"function\")return unwrap?[evlistener.listener||evlistener]:[evlistener];return unwrap?unwrapListeners(evlistener):arrayClone(evlistener,evlistener.length)}EventEmitter.prototype.listeners=function listeners(type){return _listeners(this,type,true)};EventEmitter.prototype.rawListeners=function rawListeners(type){return _listeners(this,type,false)};EventEmitter.listenerCount=function(emitter,type){if(typeof emitter.listenerCount===\"function\"){return emitter.listenerCount(type)}else{return listenerCount.call(emitter,type)}};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(type){var events=this._events;if(events){var evlistener=events[type];if(typeof evlistener===\"function\"){return 1}else if(evlistener){return evlistener.length}}return 0}EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function spliceOne(list,index){for(var i=index,k=i+1,n=list.length;k=0&&level<=self.levels.SILENT){currentLevel=level;if(persist!==false){persistLevelIfPossible(level)}replaceLoggingMethods.call(self,level,name);if(typeof console===undefinedType&&level1){for(var i=1;i=0;var oldRuntime=hadRuntime&&g.regeneratorRuntime;g.regeneratorRuntime=undefined;module.exports=require(\"./runtime\");if(hadRuntime){g.regeneratorRuntime=oldRuntime}else{try{delete g.regeneratorRuntime}catch(e){g.regeneratorRuntime=undefined}}},{\"./runtime\":55}],55:[function(require,module,exports){!function(global){\"use strict\";var Op=Object.prototype;var hasOwn=Op.hasOwnProperty;var undefined;var $Symbol=typeof Symbol===\"function\"?Symbol:{};var iteratorSymbol=$Symbol.iterator||\"@@iterator\";var asyncIteratorSymbol=$Symbol.asyncIterator||\"@@asyncIterator\";var toStringTagSymbol=$Symbol.toStringTag||\"@@toStringTag\";var inModule=typeof module===\"object\";var runtime=global.regeneratorRuntime;if(runtime){if(inModule){module.exports=runtime}return}runtime=global.regeneratorRuntime=inModule?module.exports:{};function wrap(innerFn,outerFn,self,tryLocsList){var protoGenerator=outerFn&&outerFn.prototype instanceof Generator?outerFn:Generator;var generator=Object.create(protoGenerator.prototype);var context=new Context(tryLocsList||[]);generator._invoke=makeInvokeMethod(innerFn,self,context);return generator}runtime.wrap=wrap;function tryCatch(fn,obj,arg){try{return{type:\"normal\",arg:fn.call(obj,arg)}}catch(err){return{type:\"throw\",arg:err}}}var GenStateSuspendedStart=\"suspendedStart\";var GenStateSuspendedYield=\"suspendedYield\";var GenStateExecuting=\"executing\";var GenStateCompleted=\"completed\";var ContinueSentinel={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var IteratorPrototype={};IteratorPrototype[iteratorSymbol]=function(){return this};var getProto=Object.getPrototypeOf;var NativeIteratorPrototype=getProto&&getProto(getProto(values([])));if(NativeIteratorPrototype&&NativeIteratorPrototype!==Op&&hasOwn.call(NativeIteratorPrototype,iteratorSymbol)){IteratorPrototype=NativeIteratorPrototype}var Gp=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(IteratorPrototype);GeneratorFunction.prototype=Gp.constructor=GeneratorFunctionPrototype;GeneratorFunctionPrototype.constructor=GeneratorFunction;GeneratorFunctionPrototype[toStringTagSymbol]=GeneratorFunction.displayName=\"GeneratorFunction\";function defineIteratorMethods(prototype){[\"next\",\"throw\",\"return\"].forEach(function(method){prototype[method]=function(arg){return this._invoke(method,arg)}})}runtime.isGeneratorFunction=function(genFun){var ctor=typeof genFun===\"function\"&&genFun.constructor;return ctor?ctor===GeneratorFunction||(ctor.displayName||ctor.name)===\"GeneratorFunction\":false};runtime.mark=function(genFun){if(Object.setPrototypeOf){Object.setPrototypeOf(genFun,GeneratorFunctionPrototype)}else{genFun.__proto__=GeneratorFunctionPrototype;if(!(toStringTagSymbol in genFun)){genFun[toStringTagSymbol]=\"GeneratorFunction\"}}genFun.prototype=Object.create(Gp);return genFun};runtime.awrap=function(arg){return{__await:arg}};function AsyncIterator(generator){function invoke(method,arg,resolve,reject){var record=tryCatch(generator[method],generator,arg);if(record.type===\"throw\"){reject(record.arg)}else{var result=record.arg;var value=result.value;if(value&&typeof value===\"object\"&&hasOwn.call(value,\"__await\")){return Promise.resolve(value.__await).then(function(value){invoke(\"next\",value,resolve,reject)},function(err){invoke(\"throw\",err,resolve,reject)})}return Promise.resolve(value).then(function(unwrapped){result.value=unwrapped;resolve(result)},reject)}}var previousPromise;function enqueue(method,arg){function callInvokeWithMethodAndArg(){return new Promise(function(resolve,reject){invoke(method,arg,resolve,reject)})}return previousPromise=previousPromise?previousPromise.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}this._invoke=enqueue}defineIteratorMethods(AsyncIterator.prototype);AsyncIterator.prototype[asyncIteratorSymbol]=function(){return this};runtime.AsyncIterator=AsyncIterator;runtime.async=function(innerFn,outerFn,self,tryLocsList){var iter=new AsyncIterator(wrap(innerFn,outerFn,self,tryLocsList));return runtime.isGeneratorFunction(outerFn)?iter:iter.next().then(function(result){return result.done?result.value:iter.next()})};function makeInvokeMethod(innerFn,self,context){var state=GenStateSuspendedStart;return function invoke(method,arg){if(state===GenStateExecuting){throw new Error(\"Generator is already running\")}if(state===GenStateCompleted){if(method===\"throw\"){throw arg}return doneResult()}context.method=method;context.arg=arg;while(true){var delegate=context.delegate;if(delegate){var delegateResult=maybeInvokeDelegate(delegate,context);if(delegateResult){if(delegateResult===ContinueSentinel)continue;return delegateResult}}if(context.method===\"next\"){context.sent=context._sent=context.arg}else if(context.method===\"throw\"){if(state===GenStateSuspendedStart){state=GenStateCompleted;throw context.arg}context.dispatchException(context.arg)}else if(context.method===\"return\"){context.abrupt(\"return\",context.arg)}state=GenStateExecuting;var record=tryCatch(innerFn,self,context);if(record.type===\"normal\"){state=context.done?GenStateCompleted:GenStateSuspendedYield;if(record.arg===ContinueSentinel){continue}return{value:record.arg,done:context.done}}else if(record.type===\"throw\"){state=GenStateCompleted;context.method=\"throw\";context.arg=record.arg}}}}function maybeInvokeDelegate(delegate,context){var method=delegate.iterator[context.method];if(method===undefined){context.delegate=null;if(context.method===\"throw\"){if(delegate.iterator.return){context.method=\"return\";context.arg=undefined;maybeInvokeDelegate(delegate,context);if(context.method===\"throw\"){return ContinueSentinel}}context.method=\"throw\";context.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return ContinueSentinel}var record=tryCatch(method,delegate.iterator,context.arg);if(record.type===\"throw\"){context.method=\"throw\";context.arg=record.arg;context.delegate=null;return ContinueSentinel}var info=record.arg;if(!info){context.method=\"throw\";context.arg=new TypeError(\"iterator result is not an object\");context.delegate=null;return ContinueSentinel}if(info.done){context[delegate.resultName]=info.value;context.next=delegate.nextLoc;if(context.method!==\"return\"){context.method=\"next\";context.arg=undefined}}else{return info}context.delegate=null;return ContinueSentinel}defineIteratorMethods(Gp);Gp[toStringTagSymbol]=\"Generator\";Gp[iteratorSymbol]=function(){return this};Gp.toString=function(){return\"[object Generator]\"};function pushTryEntry(locs){var entry={tryLoc:locs[0]};if(1 in locs){entry.catchLoc=locs[1]}if(2 in locs){entry.finallyLoc=locs[2];entry.afterLoc=locs[3]}this.tryEntries.push(entry)}function resetTryEntry(entry){var record=entry.completion||{};record.type=\"normal\";delete record.arg;entry.completion=record}function Context(tryLocsList){this.tryEntries=[{tryLoc:\"root\"}];tryLocsList.forEach(pushTryEntry,this);this.reset(true)}runtime.keys=function(object){var keys=[];for(var key in object){keys.push(key)}keys.reverse();return function next(){while(keys.length){var key=keys.pop();if(key in object){next.value=key;next.done=false;return next}}next.done=true;return next}};function values(iterable){if(iterable){var iteratorMethod=iterable[iteratorSymbol];if(iteratorMethod){return iteratorMethod.call(iterable)}if(typeof iterable.next===\"function\"){return iterable}if(!isNaN(iterable.length)){var i=-1,next=function next(){while(++i=0;--i){var entry=this.tryEntries[i];var record=entry.completion;if(entry.tryLoc===\"root\"){return handle(\"end\")}if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,\"catchLoc\");var hasFinally=hasOwn.call(entry,\"finallyLoc\");if(hasCatch&&hasFinally){if(this.prev=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,\"finallyLoc\")&&this.prev=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc){this.complete(entry.completion,entry.afterLoc);resetTryEntry(entry);return ContinueSentinel}}},catch:function(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if(record.type===\"throw\"){var thrown=record.arg;resetTryEntry(entry)}return thrown}}throw new Error(\"illegal catch attempt\")},delegateYield:function(iterable,resultName,nextLoc){this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc};if(this.method===\"next\"){this.arg=undefined}return ContinueSentinel}}}(function(){return this}()||Function(\"return this\")())},{}],56:[function(require,module,exports){\"use strict\";var SDPUtils=require(\"sdp\");function writeMediaSection(transceiver,caps,type,stream,dtlsRole){var sdp=SDPUtils.writeRtpDescription(transceiver.kind,caps);sdp+=SDPUtils.writeIceParameters(transceiver.iceGatherer.getLocalParameters());sdp+=SDPUtils.writeDtlsParameters(transceiver.dtlsTransport.getLocalParameters(),type===\"offer\"?\"actpass\":dtlsRole||\"active\");sdp+=\"a=mid:\"+transceiver.mid+\"\\r\\n\";if(transceiver.rtpSender&&transceiver.rtpReceiver){sdp+=\"a=sendrecv\\r\\n\"}else if(transceiver.rtpSender){sdp+=\"a=sendonly\\r\\n\"}else if(transceiver.rtpReceiver){sdp+=\"a=recvonly\\r\\n\"}else{sdp+=\"a=inactive\\r\\n\"}if(transceiver.rtpSender){var trackId=transceiver.rtpSender._initialTrackId||transceiver.rtpSender.track.id;transceiver.rtpSender._initialTrackId=trackId;var msid=\"msid:\"+(stream?stream.id:\"-\")+\" \"+trackId+\"\\r\\n\";sdp+=\"a=\"+msid;sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].ssrc+\" \"+msid;if(transceiver.sendEncodingParameters[0].rtx){sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].rtx.ssrc+\" \"+msid;sdp+=\"a=ssrc-group:FID \"+transceiver.sendEncodingParameters[0].ssrc+\" \"+transceiver.sendEncodingParameters[0].rtx.ssrc+\"\\r\\n\"}}sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].ssrc+\" cname:\"+SDPUtils.localCName+\"\\r\\n\";if(transceiver.rtpSender&&transceiver.sendEncodingParameters[0].rtx){sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].rtx.ssrc+\" cname:\"+SDPUtils.localCName+\"\\r\\n\"}return sdp}function filterIceServers(iceServers,edgeVersion){var hasTurn=false;iceServers=JSON.parse(JSON.stringify(iceServers));return iceServers.filter(function(server){if(server&&(server.urls||server.url)){var urls=server.urls||server.url;if(server.url&&!server.urls){console.warn(\"RTCIceServer.url is deprecated! Use urls instead.\")}var isString=typeof urls===\"string\";if(isString){urls=[urls]}urls=urls.filter(function(url){var validTurn=url.indexOf(\"turn:\")===0&&url.indexOf(\"transport=udp\")!==-1&&url.indexOf(\"turn:[\")===-1&&!hasTurn;if(validTurn){hasTurn=true;return true}return url.indexOf(\"stun:\")===0&&edgeVersion>=14393&&url.indexOf(\"?transport=udp\")===-1});delete server.url;server.urls=isString?urls[0]:urls;return!!urls.length}})}function getCommonCapabilities(localCapabilities,remoteCapabilities){var commonCapabilities={codecs:[],headerExtensions:[],fecMechanisms:[]};var findCodecByPayloadType=function(pt,codecs){pt=parseInt(pt,10);for(var i=0;i0;i--){this._iceGatherers.push(new window.RTCIceGatherer({iceServers:config.iceServers,gatherPolicy:config.iceTransportPolicy}))}}else{config.iceCandidatePoolSize=0}this._config=config;this.transceivers=[];this._sdpSessionId=SDPUtils.generateSessionId();this._sdpSessionVersion=0;this._dtlsRole=undefined;this._isClosed=false};RTCPeerConnection.prototype.onicecandidate=null;RTCPeerConnection.prototype.onaddstream=null;RTCPeerConnection.prototype.ontrack=null;RTCPeerConnection.prototype.onremovestream=null;RTCPeerConnection.prototype.onsignalingstatechange=null;RTCPeerConnection.prototype.oniceconnectionstatechange=null;RTCPeerConnection.prototype.onicegatheringstatechange=null;RTCPeerConnection.prototype.onnegotiationneeded=null;RTCPeerConnection.prototype.ondatachannel=null;RTCPeerConnection.prototype._dispatchEvent=function(name,event){if(this._isClosed){return}this.dispatchEvent(event);if(typeof this[\"on\"+name]===\"function\"){this[\"on\"+name](event)}};RTCPeerConnection.prototype._emitGatheringStateChange=function(){var event=new Event(\"icegatheringstatechange\");this._dispatchEvent(\"icegatheringstatechange\",event)};RTCPeerConnection.prototype.getConfiguration=function(){return this._config};RTCPeerConnection.prototype.getLocalStreams=function(){return this.localStreams};RTCPeerConnection.prototype.getRemoteStreams=function(){return this.remoteStreams};RTCPeerConnection.prototype._createTransceiver=function(kind){var hasBundleTransport=this.transceivers.length>0;var transceiver={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:kind,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:true};if(this.usingBundle&&hasBundleTransport){transceiver.iceTransport=this.transceivers[0].iceTransport;transceiver.dtlsTransport=this.transceivers[0].dtlsTransport}else{var transports=this._createIceAndDtlsTransports();transceiver.iceTransport=transports.iceTransport;transceiver.dtlsTransport=transports.dtlsTransport}this.transceivers.push(transceiver);return transceiver};RTCPeerConnection.prototype.addTrack=function(track,stream){if(this._isClosed){throw makeError(\"InvalidStateError\",\"Attempted to call addTrack on a closed peerconnection.\")}var alreadyExists=this.transceivers.find(function(s){return s.track===track});if(alreadyExists){throw makeError(\"InvalidAccessError\",\"Track already exists.\")}var transceiver;for(var i=0;i=15025){stream.getTracks().forEach(function(track){pc.addTrack(track,stream)})}else{var clonedStream=stream.clone();stream.getTracks().forEach(function(track,idx){var clonedTrack=clonedStream.getTracks()[idx];track.addEventListener(\"enabled\",function(event){clonedTrack.enabled=event.enabled})});clonedStream.getTracks().forEach(function(track){pc.addTrack(track,clonedStream)})}};RTCPeerConnection.prototype.removeTrack=function(sender){if(this._isClosed){throw makeError(\"InvalidStateError\",\"Attempted to call removeTrack on a closed peerconnection.\")}if(!(sender instanceof window.RTCRtpSender)){throw new TypeError(\"Argument 1 of RTCPeerConnection.removeTrack \"+\"does not implement interface RTCRtpSender.\")}var transceiver=this.transceivers.find(function(t){return t.rtpSender===sender});if(!transceiver){throw makeError(\"InvalidAccessError\",\"Sender was not created by this connection.\")}var stream=transceiver.stream;transceiver.rtpSender.stop();transceiver.rtpSender=null;transceiver.track=null;transceiver.stream=null;var localStreams=this.transceivers.map(function(t){return t.stream});if(localStreams.indexOf(stream)===-1&&this.localStreams.indexOf(stream)>-1){this.localStreams.splice(this.localStreams.indexOf(stream),1)}this._maybeFireNegotiationNeeded()};RTCPeerConnection.prototype.removeStream=function(stream){var pc=this;stream.getTracks().forEach(function(track){var sender=pc.getSenders().find(function(s){return s.track===track});if(sender){pc.removeTrack(sender)}})};RTCPeerConnection.prototype.getSenders=function(){return this.transceivers.filter(function(transceiver){return!!transceiver.rtpSender}).map(function(transceiver){return transceiver.rtpSender})};RTCPeerConnection.prototype.getReceivers=function(){return this.transceivers.filter(function(transceiver){return!!transceiver.rtpReceiver}).map(function(transceiver){return transceiver.rtpReceiver})};RTCPeerConnection.prototype._createIceGatherer=function(sdpMLineIndex,usingBundle){var pc=this;if(usingBundle&&sdpMLineIndex>0){return this.transceivers[0].iceGatherer}else if(this._iceGatherers.length){return this._iceGatherers.shift()}var iceGatherer=new window.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});Object.defineProperty(iceGatherer,\"state\",{value:\"new\",writable:true});this.transceivers[sdpMLineIndex].bufferedCandidateEvents=[];this.transceivers[sdpMLineIndex].bufferCandidates=function(event){var end=!event.candidate||Object.keys(event.candidate).length===0;iceGatherer.state=end?\"completed\":\"gathering\";if(pc.transceivers[sdpMLineIndex].bufferedCandidateEvents!==null){pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event)}};iceGatherer.addEventListener(\"localcandidate\",this.transceivers[sdpMLineIndex].bufferCandidates);return iceGatherer};RTCPeerConnection.prototype._gather=function(mid,sdpMLineIndex){var pc=this;var iceGatherer=this.transceivers[sdpMLineIndex].iceGatherer;if(iceGatherer.onlocalcandidate){return}var bufferedCandidateEvents=this.transceivers[sdpMLineIndex].bufferedCandidateEvents;this.transceivers[sdpMLineIndex].bufferedCandidateEvents=null;iceGatherer.removeEventListener(\"localcandidate\",this.transceivers[sdpMLineIndex].bufferCandidates);iceGatherer.onlocalcandidate=function(evt){if(pc.usingBundle&&sdpMLineIndex>0){return}var event=new Event(\"icecandidate\");event.candidate={sdpMid:mid,sdpMLineIndex:sdpMLineIndex};var cand=evt.candidate;var end=!cand||Object.keys(cand).length===0;if(end){if(iceGatherer.state===\"new\"||iceGatherer.state===\"gathering\"){iceGatherer.state=\"completed\"}}else{if(iceGatherer.state===\"new\"){iceGatherer.state=\"gathering\"}cand.component=1;var serializedCandidate=SDPUtils.writeCandidate(cand);event.candidate=Object.assign(event.candidate,SDPUtils.parseCandidate(serializedCandidate));event.candidate.candidate=serializedCandidate}var sections=SDPUtils.getMediaSections(pc.localDescription.sdp);if(!end){sections[event.candidate.sdpMLineIndex]+=\"a=\"+event.candidate.candidate+\"\\r\\n\"}else{sections[event.candidate.sdpMLineIndex]+=\"a=end-of-candidates\\r\\n\"}pc.localDescription.sdp=SDPUtils.getDescription(pc.localDescription.sdp)+sections.join(\"\");var complete=pc.transceivers.every(function(transceiver){return transceiver.iceGatherer&&transceiver.iceGatherer.state===\"completed\"});if(pc.iceGatheringState!==\"gathering\"){pc.iceGatheringState=\"gathering\";pc._emitGatheringStateChange()}if(!end){pc._dispatchEvent(\"icecandidate\",event)}if(complete){pc._dispatchEvent(\"icecandidate\",new Event(\"icecandidate\"));pc.iceGatheringState=\"complete\";pc._emitGatheringStateChange()}};window.setTimeout(function(){bufferedCandidateEvents.forEach(function(e){iceGatherer.onlocalcandidate(e)})},0)};RTCPeerConnection.prototype._createIceAndDtlsTransports=function(){var pc=this;var iceTransport=new window.RTCIceTransport(null);iceTransport.onicestatechange=function(){pc._updateConnectionState()};var dtlsTransport=new window.RTCDtlsTransport(iceTransport);dtlsTransport.ondtlsstatechange=function(){pc._updateConnectionState()};dtlsTransport.onerror=function(){Object.defineProperty(dtlsTransport,\"state\",{value:\"failed\",writable:true});pc._updateConnectionState()};return{iceTransport:iceTransport,dtlsTransport:dtlsTransport}};RTCPeerConnection.prototype._disposeIceAndDtlsTransports=function(sdpMLineIndex){var iceGatherer=this.transceivers[sdpMLineIndex].iceGatherer;if(iceGatherer){delete iceGatherer.onlocalcandidate;delete this.transceivers[sdpMLineIndex].iceGatherer}var iceTransport=this.transceivers[sdpMLineIndex].iceTransport;if(iceTransport){delete iceTransport.onicestatechange;delete this.transceivers[sdpMLineIndex].iceTransport}var dtlsTransport=this.transceivers[sdpMLineIndex].dtlsTransport;if(dtlsTransport){delete dtlsTransport.ondtlsstatechange;delete dtlsTransport.onerror;delete this.transceivers[sdpMLineIndex].dtlsTransport}};RTCPeerConnection.prototype._transceive=function(transceiver,send,recv){var params=getCommonCapabilities(transceiver.localCapabilities,transceiver.remoteCapabilities);if(send&&transceiver.rtpSender){params.encodings=transceiver.sendEncodingParameters;params.rtcp={cname:SDPUtils.localCName,compound:transceiver.rtcpParameters.compound};if(transceiver.recvEncodingParameters.length){params.rtcp.ssrc=transceiver.recvEncodingParameters[0].ssrc}transceiver.rtpSender.send(params)}if(recv&&transceiver.rtpReceiver&¶ms.codecs.length>0){if(transceiver.kind===\"video\"&&transceiver.recvEncodingParameters&&edgeVersion<15019){transceiver.recvEncodingParameters.forEach(function(p){delete p.rtx})}if(transceiver.recvEncodingParameters.length){params.encodings=transceiver.recvEncodingParameters}else{params.encodings=[{}]}params.rtcp={compound:transceiver.rtcpParameters.compound};if(transceiver.rtcpParameters.cname){params.rtcp.cname=transceiver.rtcpParameters.cname}if(transceiver.sendEncodingParameters.length){params.rtcp.ssrc=transceiver.sendEncodingParameters[0].ssrc}transceiver.rtpReceiver.receive(params)}};RTCPeerConnection.prototype.setLocalDescription=function(description){var pc=this;if([\"offer\",\"answer\"].indexOf(description.type)===-1){return Promise.reject(makeError(\"TypeError\",'Unsupported type \"'+description.type+'\"'))}if(!isActionAllowedInSignalingState(\"setLocalDescription\",description.type,pc.signalingState)||pc._isClosed){return Promise.reject(makeError(\"InvalidStateError\",\"Can not set local \"+description.type+\" in state \"+pc.signalingState))}var sections;var sessionpart;if(description.type===\"offer\"){sections=SDPUtils.splitSections(description.sdp);sessionpart=sections.shift();sections.forEach(function(mediaSection,sdpMLineIndex){var caps=SDPUtils.parseRtpParameters(mediaSection);pc.transceivers[sdpMLineIndex].localCapabilities=caps});pc.transceivers.forEach(function(transceiver,sdpMLineIndex){pc._gather(transceiver.mid,sdpMLineIndex)})}else if(description.type===\"answer\"){sections=SDPUtils.splitSections(pc.remoteDescription.sdp);sessionpart=sections.shift();var isIceLite=SDPUtils.matchPrefix(sessionpart,\"a=ice-lite\").length>0;sections.forEach(function(mediaSection,sdpMLineIndex){var transceiver=pc.transceivers[sdpMLineIndex];var iceGatherer=transceiver.iceGatherer;var iceTransport=transceiver.iceTransport;var dtlsTransport=transceiver.dtlsTransport;var localCapabilities=transceiver.localCapabilities;var remoteCapabilities=transceiver.remoteCapabilities;var rejected=SDPUtils.isRejected(mediaSection)&&SDPUtils.matchPrefix(mediaSection,\"a=bundle-only\").length===0;if(!rejected&&!transceiver.isDatachannel){var remoteIceParameters=SDPUtils.getIceParameters(mediaSection,sessionpart);var remoteDtlsParameters=SDPUtils.getDtlsParameters(mediaSection,sessionpart);if(isIceLite){remoteDtlsParameters.role=\"server\"}if(!pc.usingBundle||sdpMLineIndex===0){pc._gather(transceiver.mid,sdpMLineIndex);if(iceTransport.state===\"new\"){iceTransport.start(iceGatherer,remoteIceParameters,isIceLite?\"controlling\":\"controlled\")}if(dtlsTransport.state===\"new\"){dtlsTransport.start(remoteDtlsParameters)}}var params=getCommonCapabilities(localCapabilities,remoteCapabilities);pc._transceive(transceiver,params.codecs.length>0,false)}})}pc.localDescription={type:description.type,sdp:description.sdp};if(description.type===\"offer\"){pc._updateSignalingState(\"have-local-offer\")}else{pc._updateSignalingState(\"stable\")}return Promise.resolve()};RTCPeerConnection.prototype.setRemoteDescription=function(description){var pc=this;if([\"offer\",\"answer\"].indexOf(description.type)===-1){return Promise.reject(makeError(\"TypeError\",'Unsupported type \"'+description.type+'\"'))}if(!isActionAllowedInSignalingState(\"setRemoteDescription\",description.type,pc.signalingState)||pc._isClosed){return Promise.reject(makeError(\"InvalidStateError\",\"Can not set remote \"+description.type+\" in state \"+pc.signalingState))}var streams={};pc.remoteStreams.forEach(function(stream){streams[stream.id]=stream});var receiverList=[];var sections=SDPUtils.splitSections(description.sdp);var sessionpart=sections.shift();var isIceLite=SDPUtils.matchPrefix(sessionpart,\"a=ice-lite\").length>0;var usingBundle=SDPUtils.matchPrefix(sessionpart,\"a=group:BUNDLE \").length>0;pc.usingBundle=usingBundle;var iceOptions=SDPUtils.matchPrefix(sessionpart,\"a=ice-options:\")[0];if(iceOptions){pc.canTrickleIceCandidates=iceOptions.substr(14).split(\" \").indexOf(\"trickle\")>=0}else{pc.canTrickleIceCandidates=false}sections.forEach(function(mediaSection,sdpMLineIndex){var lines=SDPUtils.splitLines(mediaSection);var kind=SDPUtils.getKind(mediaSection);var rejected=SDPUtils.isRejected(mediaSection)&&SDPUtils.matchPrefix(mediaSection,\"a=bundle-only\").length===0;var protocol=lines[0].substr(2).split(\" \")[2];var direction=SDPUtils.getDirection(mediaSection,sessionpart);var remoteMsid=SDPUtils.parseMsid(mediaSection);var mid=SDPUtils.getMid(mediaSection)||SDPUtils.generateIdentifier();if(kind===\"application\"&&protocol===\"DTLS/SCTP\"){pc.transceivers[sdpMLineIndex]={mid:mid,isDatachannel:true};return}var transceiver;var iceGatherer;var iceTransport;var dtlsTransport;var rtpReceiver;var sendEncodingParameters;var recvEncodingParameters;var localCapabilities;var track;var remoteCapabilities=SDPUtils.parseRtpParameters(mediaSection);var remoteIceParameters;var remoteDtlsParameters;if(!rejected){remoteIceParameters=SDPUtils.getIceParameters(mediaSection,sessionpart);remoteDtlsParameters=SDPUtils.getDtlsParameters(mediaSection,sessionpart);remoteDtlsParameters.role=\"client\"}recvEncodingParameters=SDPUtils.parseRtpEncodingParameters(mediaSection);var rtcpParameters=SDPUtils.parseRtcpParameters(mediaSection);var isComplete=SDPUtils.matchPrefix(mediaSection,\"a=end-of-candidates\",sessionpart).length>0;var cands=SDPUtils.matchPrefix(mediaSection,\"a=candidate:\").map(function(cand){return SDPUtils.parseCandidate(cand)}).filter(function(cand){return cand.component===1});if((description.type===\"offer\"||description.type===\"answer\")&&!rejected&&usingBundle&&sdpMLineIndex>0&&pc.transceivers[sdpMLineIndex]){pc._disposeIceAndDtlsTransports(sdpMLineIndex);pc.transceivers[sdpMLineIndex].iceGatherer=pc.transceivers[0].iceGatherer;pc.transceivers[sdpMLineIndex].iceTransport=pc.transceivers[0].iceTransport;pc.transceivers[sdpMLineIndex].dtlsTransport=pc.transceivers[0].dtlsTransport;if(pc.transceivers[sdpMLineIndex].rtpSender){pc.transceivers[sdpMLineIndex].rtpSender.setTransport(pc.transceivers[0].dtlsTransport)}if(pc.transceivers[sdpMLineIndex].rtpReceiver){pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(pc.transceivers[0].dtlsTransport)}}if(description.type===\"offer\"&&!rejected){transceiver=pc.transceivers[sdpMLineIndex]||pc._createTransceiver(kind);transceiver.mid=mid;if(!transceiver.iceGatherer){transceiver.iceGatherer=pc._createIceGatherer(sdpMLineIndex,usingBundle)}if(cands.length&&transceiver.iceTransport.state===\"new\"){if(isComplete&&(!usingBundle||sdpMLineIndex===0)){transceiver.iceTransport.setRemoteCandidates(cands)}else{cands.forEach(function(candidate){maybeAddCandidate(transceiver.iceTransport,candidate)})}}localCapabilities=window.RTCRtpReceiver.getCapabilities(kind);if(edgeVersion<15019){localCapabilities.codecs=localCapabilities.codecs.filter(function(codec){return codec.name!==\"rtx\"})}sendEncodingParameters=transceiver.sendEncodingParameters||[{ssrc:(2*sdpMLineIndex+2)*1001}];var isNewTrack=false;if(direction===\"sendrecv\"||direction===\"sendonly\"){isNewTrack=!transceiver.rtpReceiver;rtpReceiver=transceiver.rtpReceiver||new window.RTCRtpReceiver(transceiver.dtlsTransport,kind);if(isNewTrack){var stream;track=rtpReceiver.track;if(remoteMsid&&remoteMsid.stream===\"-\"){}else if(remoteMsid){if(!streams[remoteMsid.stream]){streams[remoteMsid.stream]=new window.MediaStream;Object.defineProperty(streams[remoteMsid.stream],\"id\",{get:function(){return remoteMsid.stream}})}Object.defineProperty(track,\"id\",{get:function(){return remoteMsid.track}});stream=streams[remoteMsid.stream]}else{if(!streams.default){streams.default=new window.MediaStream}stream=streams.default}if(stream){addTrackToStreamAndFireEvent(track,stream);transceiver.associatedRemoteMediaStreams.push(stream)}receiverList.push([track,rtpReceiver,stream])}}else if(transceiver.rtpReceiver&&transceiver.rtpReceiver.track){transceiver.associatedRemoteMediaStreams.forEach(function(s){var nativeTrack=s.getTracks().find(function(t){return t.id===transceiver.rtpReceiver.track.id});if(nativeTrack){removeTrackFromStreamAndFireEvent(nativeTrack,s)}});transceiver.associatedRemoteMediaStreams=[]}transceiver.localCapabilities=localCapabilities;transceiver.remoteCapabilities=remoteCapabilities;transceiver.rtpReceiver=rtpReceiver;transceiver.rtcpParameters=rtcpParameters;transceiver.sendEncodingParameters=sendEncodingParameters;transceiver.recvEncodingParameters=recvEncodingParameters;pc._transceive(pc.transceivers[sdpMLineIndex],false,isNewTrack)}else if(description.type===\"answer\"&&!rejected){transceiver=pc.transceivers[sdpMLineIndex];iceGatherer=transceiver.iceGatherer;iceTransport=transceiver.iceTransport;dtlsTransport=transceiver.dtlsTransport;rtpReceiver=transceiver.rtpReceiver;sendEncodingParameters=transceiver.sendEncodingParameters;localCapabilities=transceiver.localCapabilities;pc.transceivers[sdpMLineIndex].recvEncodingParameters=recvEncodingParameters;pc.transceivers[sdpMLineIndex].remoteCapabilities=remoteCapabilities;pc.transceivers[sdpMLineIndex].rtcpParameters=rtcpParameters;if(cands.length&&iceTransport.state===\"new\"){if((isIceLite||isComplete)&&(!usingBundle||sdpMLineIndex===0)){iceTransport.setRemoteCandidates(cands)}else{cands.forEach(function(candidate){maybeAddCandidate(transceiver.iceTransport,candidate)})}}if(!usingBundle||sdpMLineIndex===0){if(iceTransport.state===\"new\"){iceTransport.start(iceGatherer,remoteIceParameters,\"controlling\")}if(dtlsTransport.state===\"new\"){dtlsTransport.start(remoteDtlsParameters)}}pc._transceive(transceiver,direction===\"sendrecv\"||direction===\"recvonly\",direction===\"sendrecv\"||direction===\"sendonly\");if(rtpReceiver&&(direction===\"sendrecv\"||direction===\"sendonly\")){track=rtpReceiver.track;if(remoteMsid){if(!streams[remoteMsid.stream]){streams[remoteMsid.stream]=new window.MediaStream}addTrackToStreamAndFireEvent(track,streams[remoteMsid.stream]);receiverList.push([track,rtpReceiver,streams[remoteMsid.stream]])}else{if(!streams.default){streams.default=new window.MediaStream}addTrackToStreamAndFireEvent(track,streams.default);receiverList.push([track,rtpReceiver,streams.default])}}else{delete transceiver.rtpReceiver}}});if(pc._dtlsRole===undefined){pc._dtlsRole=description.type===\"offer\"?\"active\":\"passive\"}pc.remoteDescription={type:description.type,sdp:description.sdp};if(description.type===\"offer\"){pc._updateSignalingState(\"have-remote-offer\")}else{pc._updateSignalingState(\"stable\")}Object.keys(streams).forEach(function(sid){var stream=streams[sid];if(stream.getTracks().length){if(pc.remoteStreams.indexOf(stream)===-1){pc.remoteStreams.push(stream);var event=new Event(\"addstream\");event.stream=stream;window.setTimeout(function(){pc._dispatchEvent(\"addstream\",event)})}receiverList.forEach(function(item){var track=item[0];var receiver=item[1];if(stream.id!==item[2].id){return}fireAddTrack(pc,track,receiver,[stream])})}});receiverList.forEach(function(item){if(item[2]){return}fireAddTrack(pc,item[0],item[1],[])});window.setTimeout(function(){if(!(pc&&pc.transceivers)){return}pc.transceivers.forEach(function(transceiver){if(transceiver.iceTransport&&transceiver.iceTransport.state===\"new\"&&transceiver.iceTransport.getRemoteCandidates().length>0){console.warn(\"Timeout for addRemoteCandidate. Consider sending \"+\"an end-of-candidates notification\");transceiver.iceTransport.addRemoteCandidate({})}})},4e3);return Promise.resolve()};RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(transceiver){if(transceiver.iceTransport){transceiver.iceTransport.stop()}if(transceiver.dtlsTransport){transceiver.dtlsTransport.stop()}if(transceiver.rtpSender){transceiver.rtpSender.stop()}if(transceiver.rtpReceiver){transceiver.rtpReceiver.stop()}});this._isClosed=true;this._updateSignalingState(\"closed\")};RTCPeerConnection.prototype._updateSignalingState=function(newState){this.signalingState=newState;var event=new Event(\"signalingstatechange\");this._dispatchEvent(\"signalingstatechange\",event)};RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var pc=this;if(this.signalingState!==\"stable\"||this.needNegotiation===true){return}this.needNegotiation=true;window.setTimeout(function(){if(pc.needNegotiation){pc.needNegotiation=false;var event=new Event(\"negotiationneeded\");pc._dispatchEvent(\"negotiationneeded\",event)}},0)};RTCPeerConnection.prototype._updateConnectionState=function(){var newState;var states={new:0,closed:0,connecting:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(transceiver){states[transceiver.iceTransport.state]++;states[transceiver.dtlsTransport.state]++});states.connected+=states.completed;newState=\"new\";if(states.failed>0){newState=\"failed\"}else if(states.connecting>0||states.checking>0){newState=\"connecting\"}else if(states.disconnected>0){newState=\"disconnected\"}else if(states.new>0){newState=\"new\"}else if(states.connected>0||states.completed>0){newState=\"connected\"}if(newState!==this.iceConnectionState){this.iceConnectionState=newState;var event=new Event(\"iceconnectionstatechange\");this._dispatchEvent(\"iceconnectionstatechange\",event)}};RTCPeerConnection.prototype.createOffer=function(){var pc=this;if(pc._isClosed){return Promise.reject(makeError(\"InvalidStateError\",\"Can not call createOffer after close\"))}var numAudioTracks=pc.transceivers.filter(function(t){return t.kind===\"audio\"}).length;var numVideoTracks=pc.transceivers.filter(function(t){return t.kind===\"video\"}).length;var offerOptions=arguments[0];if(offerOptions){if(offerOptions.mandatory||offerOptions.optional){throw new TypeError(\"Legacy mandatory/optional constraints not supported.\")}if(offerOptions.offerToReceiveAudio!==undefined){if(offerOptions.offerToReceiveAudio===true){numAudioTracks=1}else if(offerOptions.offerToReceiveAudio===false){numAudioTracks=0}else{numAudioTracks=offerOptions.offerToReceiveAudio}}if(offerOptions.offerToReceiveVideo!==undefined){if(offerOptions.offerToReceiveVideo===true){numVideoTracks=1}else if(offerOptions.offerToReceiveVideo===false){numVideoTracks=0}else{numVideoTracks=offerOptions.offerToReceiveVideo}}}pc.transceivers.forEach(function(transceiver){if(transceiver.kind===\"audio\"){numAudioTracks--;if(numAudioTracks<0){transceiver.wantReceive=false}}else if(transceiver.kind===\"video\"){numVideoTracks--;if(numVideoTracks<0){transceiver.wantReceive=false}}});while(numAudioTracks>0||numVideoTracks>0){if(numAudioTracks>0){pc._createTransceiver(\"audio\");numAudioTracks--}if(numVideoTracks>0){pc._createTransceiver(\"video\");numVideoTracks--}}var sdp=SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,pc._sdpSessionVersion++);pc.transceivers.forEach(function(transceiver,sdpMLineIndex){var track=transceiver.track;var kind=transceiver.kind;var mid=transceiver.mid||SDPUtils.generateIdentifier();transceiver.mid=mid;if(!transceiver.iceGatherer){transceiver.iceGatherer=pc._createIceGatherer(sdpMLineIndex,pc.usingBundle)}var localCapabilities=window.RTCRtpSender.getCapabilities(kind);if(edgeVersion<15019){localCapabilities.codecs=localCapabilities.codecs.filter(function(codec){return codec.name!==\"rtx\"})}localCapabilities.codecs.forEach(function(codec){if(codec.name===\"H264\"&&codec.parameters[\"level-asymmetry-allowed\"]===undefined){codec.parameters[\"level-asymmetry-allowed\"]=\"1\"}if(transceiver.remoteCapabilities&&transceiver.remoteCapabilities.codecs){transceiver.remoteCapabilities.codecs.forEach(function(remoteCodec){if(codec.name.toLowerCase()===remoteCodec.name.toLowerCase()&&codec.clockRate===remoteCodec.clockRate){codec.preferredPayloadType=remoteCodec.payloadType}})}});localCapabilities.headerExtensions.forEach(function(hdrExt){var remoteExtensions=transceiver.remoteCapabilities&&transceiver.remoteCapabilities.headerExtensions||[];remoteExtensions.forEach(function(rHdrExt){if(hdrExt.uri===rHdrExt.uri){hdrExt.id=rHdrExt.id}})});var sendEncodingParameters=transceiver.sendEncodingParameters||[{ssrc:(2*sdpMLineIndex+1)*1001}];if(track){if(edgeVersion>=15019&&kind===\"video\"&&!sendEncodingParameters[0].rtx){sendEncodingParameters[0].rtx={ssrc:sendEncodingParameters[0].ssrc+1}}}if(transceiver.wantReceive){transceiver.rtpReceiver=new window.RTCRtpReceiver(transceiver.dtlsTransport,kind)}transceiver.localCapabilities=localCapabilities;transceiver.sendEncodingParameters=sendEncodingParameters});if(pc._config.bundlePolicy!==\"max-compat\"){sdp+=\"a=group:BUNDLE \"+pc.transceivers.map(function(t){return t.mid}).join(\" \")+\"\\r\\n\"}sdp+=\"a=ice-options:trickle\\r\\n\";pc.transceivers.forEach(function(transceiver,sdpMLineIndex){sdp+=writeMediaSection(transceiver,transceiver.localCapabilities,\"offer\",transceiver.stream,pc._dtlsRole);sdp+=\"a=rtcp-rsize\\r\\n\";if(transceiver.iceGatherer&&pc.iceGatheringState!==\"new\"&&(sdpMLineIndex===0||!pc.usingBundle)){transceiver.iceGatherer.getLocalCandidates().forEach(function(cand){cand.component=1;sdp+=\"a=\"+SDPUtils.writeCandidate(cand)+\"\\r\\n\"});if(transceiver.iceGatherer.state===\"completed\"){sdp+=\"a=end-of-candidates\\r\\n\"}}});var desc=new window.RTCSessionDescription({type:\"offer\",sdp:sdp});return Promise.resolve(desc)};RTCPeerConnection.prototype.createAnswer=function(){var pc=this;if(pc._isClosed){return Promise.reject(makeError(\"InvalidStateError\",\"Can not call createAnswer after close\"))}var sdp=SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,pc._sdpSessionVersion++);if(pc.usingBundle){sdp+=\"a=group:BUNDLE \"+pc.transceivers.map(function(t){return t.mid}).join(\" \")+\"\\r\\n\"}var mediaSectionsInOffer=SDPUtils.getMediaSections(pc.remoteDescription.sdp).length;pc.transceivers.forEach(function(transceiver,sdpMLineIndex){if(sdpMLineIndex+1>mediaSectionsInOffer){return}if(transceiver.isDatachannel){sdp+=\"m=application 0 DTLS/SCTP 5000\\r\\n\"+\"c=IN IP4 0.0.0.0\\r\\n\"+\"a=mid:\"+transceiver.mid+\"\\r\\n\";return}if(transceiver.stream){var localTrack;if(transceiver.kind===\"audio\"){localTrack=transceiver.stream.getAudioTracks()[0]}else if(transceiver.kind===\"video\"){localTrack=transceiver.stream.getVideoTracks()[0]}if(localTrack){if(edgeVersion>=15019&&transceiver.kind===\"video\"&&!transceiver.sendEncodingParameters[0].rtx){transceiver.sendEncodingParameters[0].rtx={ssrc:transceiver.sendEncodingParameters[0].ssrc+1}}}}var commonCapabilities=getCommonCapabilities(transceiver.localCapabilities,transceiver.remoteCapabilities);var hasRtx=commonCapabilities.codecs.filter(function(c){return c.name.toLowerCase()===\"rtx\"}).length;if(!hasRtx&&transceiver.sendEncodingParameters[0].rtx){delete transceiver.sendEncodingParameters[0].rtx}sdp+=writeMediaSection(transceiver,commonCapabilities,\"answer\",transceiver.stream,pc._dtlsRole);if(transceiver.rtcpParameters&&transceiver.rtcpParameters.reducedSize){sdp+=\"a=rtcp-rsize\\r\\n\"}});var desc=new window.RTCSessionDescription({type:\"answer\",sdp:sdp});return Promise.resolve(desc)};RTCPeerConnection.prototype.addIceCandidate=function(candidate){var pc=this;var sections;if(candidate&&!(candidate.sdpMLineIndex!==undefined||candidate.sdpMid)){return Promise.reject(new TypeError(\"sdpMLineIndex or sdpMid required\"))}return new Promise(function(resolve,reject){if(!pc.remoteDescription){return reject(makeError(\"InvalidStateError\",\"Can not add ICE candidate without a remote description\"))}else if(!candidate||candidate.candidate===\"\"){for(var j=0;j0?SDPUtils.parseCandidate(candidate.candidate):{};if(cand.protocol===\"tcp\"&&(cand.port===0||cand.port===9)){return resolve()}if(cand.component&&cand.component!==1){return resolve()}if(sdpMLineIndex===0||sdpMLineIndex>0&&transceiver.iceTransport!==pc.transceivers[0].iceTransport){if(!maybeAddCandidate(transceiver.iceTransport,cand)){return reject(makeError(\"OperationError\",\"Can not add ICE candidate\"))}}var candidateString=candidate.candidate.trim();if(candidateString.indexOf(\"a=\")===0){candidateString=candidateString.substr(2)}sections=SDPUtils.getMediaSections(pc.remoteDescription.sdp);sections[sdpMLineIndex]+=\"a=\"+(cand.type?candidateString:\"end-of-candidates\")+\"\\r\\n\";pc.remoteDescription.sdp=sections.join(\"\")}else{return reject(makeError(\"OperationError\",\"Can not add ICE candidate\"))}}resolve()})};RTCPeerConnection.prototype.getStats=function(){var promises=[];this.transceivers.forEach(function(transceiver){[\"rtpSender\",\"rtpReceiver\",\"iceGatherer\",\"iceTransport\",\"dtlsTransport\"].forEach(function(method){if(transceiver[method]){promises.push(transceiver[method].getStats())}})});var fixStatsType=function(stat){return{inboundrtp:\"inbound-rtp\",outboundrtp:\"outbound-rtp\",candidatepair:\"candidate-pair\",localcandidate:\"local-candidate\",remotecandidate:\"remote-candidate\"}[stat.type]||stat.type};return new Promise(function(resolve){var results=new Map;Promise.all(promises).then(function(res){res.forEach(function(result){Object.keys(result).forEach(function(id){result[id].type=fixStatsType(result[id]);results.set(id,result[id])})});resolve(results)})})};var methods=[\"createOffer\",\"createAnswer\"];methods.forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[0]===\"function\"||typeof args[1]===\"function\"){return nativeMethod.apply(this,[arguments[2]]).then(function(description){if(typeof args[0]===\"function\"){args[0].apply(null,[description])}},function(error){if(typeof args[1]===\"function\"){args[1].apply(null,[error])}})}return nativeMethod.apply(this,arguments)}});methods=[\"setLocalDescription\",\"setRemoteDescription\",\"addIceCandidate\"];methods.forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[1]===\"function\"||typeof args[2]===\"function\"){return nativeMethod.apply(this,arguments).then(function(){if(typeof args[1]===\"function\"){args[1].apply(null)}},function(error){if(typeof args[2]===\"function\"){args[2].apply(null,[error])}})}return nativeMethod.apply(this,arguments)}});[\"getStats\"].forEach(function(method){var nativeMethod=RTCPeerConnection.prototype[method];RTCPeerConnection.prototype[method]=function(){var args=arguments;if(typeof args[1]===\"function\"){return nativeMethod.apply(this,arguments).then(function(){if(typeof args[1]===\"function\"){args[1].apply(null)}})}return nativeMethod.apply(this,arguments)}});return RTCPeerConnection}},{sdp:57}],57:[function(require,module,exports){\"use strict\";var SDPUtils={};SDPUtils.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)};SDPUtils.localCName=SDPUtils.generateIdentifier();SDPUtils.splitLines=function(blob){return blob.trim().split(\"\\n\").map(function(line){return line.trim()})};SDPUtils.splitSections=function(blob){var parts=blob.split(\"\\nm=\");return parts.map(function(part,index){return(index>0?\"m=\"+part:part).trim()+\"\\r\\n\"})};SDPUtils.getDescription=function(blob){var sections=SDPUtils.splitSections(blob);return sections&§ions[0]};SDPUtils.getMediaSections=function(blob){var sections=SDPUtils.splitSections(blob);sections.shift();return sections};SDPUtils.matchPrefix=function(blob,prefix){return SDPUtils.splitLines(blob).filter(function(line){return line.indexOf(prefix)===0})};SDPUtils.parseCandidate=function(line){var parts;if(line.indexOf(\"a=candidate:\")===0){parts=line.substring(12).split(\" \")}else{parts=line.substring(10).split(\" \")}var candidate={foundation:parts[0],component:parseInt(parts[1],10),protocol:parts[2].toLowerCase(),priority:parseInt(parts[3],10),ip:parts[4],address:parts[4],port:parseInt(parts[5],10),type:parts[7]};for(var i=8;i0?parts[0].split(\"/\")[1]:\"sendrecv\",uri:parts[1]}};SDPUtils.writeExtmap=function(headerExtension){return\"a=extmap:\"+(headerExtension.id||headerExtension.preferredId)+(headerExtension.direction&&headerExtension.direction!==\"sendrecv\"?\"/\"+headerExtension.direction:\"\")+\" \"+headerExtension.uri+\"\\r\\n\"};SDPUtils.parseFmtp=function(line){var parsed={};var kv;var parts=line.substr(line.indexOf(\" \")+1).split(\";\");for(var j=0;j-1){parts.attribute=line.substr(sp+1,colon-sp-1);parts.value=line.substr(colon+1)}else{parts.attribute=line.substr(sp+1)}return parts};SDPUtils.parseSsrcGroup=function(line){var parts=line.substr(13).split(\" \");return{semantics:parts.shift(),ssrcs:parts.map(function(ssrc){return parseInt(ssrc,10)})}};SDPUtils.getMid=function(mediaSection){var mid=SDPUtils.matchPrefix(mediaSection,\"a=mid:\")[0];if(mid){return mid.substr(6)}};SDPUtils.parseFingerprint=function(line){var parts=line.substr(14).split(\" \");return{algorithm:parts[0].toLowerCase(),value:parts[1]}};SDPUtils.getDtlsParameters=function(mediaSection,sessionpart){var lines=SDPUtils.matchPrefix(mediaSection+sessionpart,\"a=fingerprint:\");return{role:\"auto\",fingerprints:lines.map(SDPUtils.parseFingerprint)}};SDPUtils.writeDtlsParameters=function(params,setupType){var sdp=\"a=setup:\"+setupType+\"\\r\\n\";params.fingerprints.forEach(function(fp){sdp+=\"a=fingerprint:\"+fp.algorithm+\" \"+fp.value+\"\\r\\n\"});return sdp};SDPUtils.parseCryptoLine=function(line){var parts=line.substr(9).split(\" \");return{tag:parseInt(parts[0],10),cryptoSuite:parts[1],keyParams:parts[2],sessionParams:parts.slice(3)}};SDPUtils.writeCryptoLine=function(parameters){return\"a=crypto:\"+parameters.tag+\" \"+parameters.cryptoSuite+\" \"+(typeof parameters.keyParams===\"object\"?SDPUtils.writeCryptoKeyParams(parameters.keyParams):parameters.keyParams)+(parameters.sessionParams?\" \"+parameters.sessionParams.join(\" \"):\"\")+\"\\r\\n\"};SDPUtils.parseCryptoKeyParams=function(keyParams){if(keyParams.indexOf(\"inline:\")!==0){return null}var parts=keyParams.substr(7).split(\"|\");return{keyMethod:\"inline\",keySalt:parts[0],lifeTime:parts[1],mkiValue:parts[2]?parts[2].split(\":\")[0]:undefined,mkiLength:parts[2]?parts[2].split(\":\")[1]:undefined}};SDPUtils.writeCryptoKeyParams=function(keyParams){return keyParams.keyMethod+\":\"+keyParams.keySalt+(keyParams.lifeTime?\"|\"+keyParams.lifeTime:\"\")+(keyParams.mkiValue&&keyParams.mkiLength?\"|\"+keyParams.mkiValue+\":\"+keyParams.mkiLength:\"\")};SDPUtils.getCryptoParameters=function(mediaSection,sessionpart){var lines=SDPUtils.matchPrefix(mediaSection+sessionpart,\"a=crypto:\");return lines.map(SDPUtils.parseCryptoLine)};SDPUtils.getIceParameters=function(mediaSection,sessionpart){var ufrag=SDPUtils.matchPrefix(mediaSection+sessionpart,\"a=ice-ufrag:\")[0];var pwd=SDPUtils.matchPrefix(mediaSection+sessionpart,\"a=ice-pwd:\")[0];if(!(ufrag&&pwd)){return null}return{usernameFragment:ufrag.substr(12),password:pwd.substr(10)}};SDPUtils.writeIceParameters=function(params){return\"a=ice-ufrag:\"+params.usernameFragment+\"\\r\\n\"+\"a=ice-pwd:\"+params.password+\"\\r\\n\"};SDPUtils.parseRtpParameters=function(mediaSection){var description={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]};var lines=SDPUtils.splitLines(mediaSection);var mline=lines[0].split(\" \");for(var i=3;i0?\"9\":\"0\";sdp+=\" UDP/TLS/RTP/SAVPF \";sdp+=caps.codecs.map(function(codec){if(codec.preferredPayloadType!==undefined){return codec.preferredPayloadType}return codec.payloadType}).join(\" \")+\"\\r\\n\";sdp+=\"c=IN IP4 0.0.0.0\\r\\n\";sdp+=\"a=rtcp:9 IN IP4 0.0.0.0\\r\\n\";caps.codecs.forEach(function(codec){sdp+=SDPUtils.writeRtpMap(codec);sdp+=SDPUtils.writeFmtp(codec);sdp+=SDPUtils.writeRtcpFb(codec)});var maxptime=0;caps.codecs.forEach(function(codec){if(codec.maxptime>maxptime){maxptime=codec.maxptime}});if(maxptime>0){sdp+=\"a=maxptime:\"+maxptime+\"\\r\\n\"}sdp+=\"a=rtcp-mux\\r\\n\";if(caps.headerExtensions){caps.headerExtensions.forEach(function(extension){sdp+=SDPUtils.writeExtmap(extension)})}return sdp};SDPUtils.parseRtpEncodingParameters=function(mediaSection){var encodingParameters=[];var description=SDPUtils.parseRtpParameters(mediaSection);var hasRed=description.fecMechanisms.indexOf(\"RED\")!==-1;var hasUlpfec=description.fecMechanisms.indexOf(\"ULPFEC\")!==-1;var ssrcs=SDPUtils.matchPrefix(mediaSection,\"a=ssrc:\").map(function(line){return SDPUtils.parseSsrcMedia(line)}).filter(function(parts){return parts.attribute===\"cname\"});var primarySsrc=ssrcs.length>0&&ssrcs[0].ssrc;var secondarySsrc;var flows=SDPUtils.matchPrefix(mediaSection,\"a=ssrc-group:FID\").map(function(line){var parts=line.substr(17).split(\" \");return parts.map(function(part){return parseInt(part,10)})});if(flows.length>0&&flows[0].length>1&&flows[0][0]===primarySsrc){secondarySsrc=flows[0][1]}description.codecs.forEach(function(codec){if(codec.name.toUpperCase()===\"RTX\"&&codec.parameters.apt){var encParam={ssrc:primarySsrc,codecPayloadType:parseInt(codec.parameters.apt,10)};if(primarySsrc&&secondarySsrc){encParam.rtx={ssrc:secondarySsrc}}encodingParameters.push(encParam);if(hasRed){encParam=JSON.parse(JSON.stringify(encParam));encParam.fec={ssrc:primarySsrc,mechanism:hasUlpfec?\"red+ulpfec\":\"red\"};encodingParameters.push(encParam)}}});if(encodingParameters.length===0&&primarySsrc){encodingParameters.push({ssrc:primarySsrc})}var bandwidth=SDPUtils.matchPrefix(mediaSection,\"b=\");if(bandwidth.length){if(bandwidth[0].indexOf(\"b=TIAS:\")===0){bandwidth=parseInt(bandwidth[0].substr(7),10)}else if(bandwidth[0].indexOf(\"b=AS:\")===0){bandwidth=parseInt(bandwidth[0].substr(5),10)*1e3*.95-50*40*8}else{bandwidth=undefined}encodingParameters.forEach(function(params){params.maxBitrate=bandwidth})}return encodingParameters};SDPUtils.parseRtcpParameters=function(mediaSection){var rtcpParameters={};var remoteSsrc=SDPUtils.matchPrefix(mediaSection,\"a=ssrc:\").map(function(line){return SDPUtils.parseSsrcMedia(line)}).filter(function(obj){return obj.attribute===\"cname\"})[0];if(remoteSsrc){rtcpParameters.cname=remoteSsrc.value;rtcpParameters.ssrc=remoteSsrc.ssrc}var rsize=SDPUtils.matchPrefix(mediaSection,\"a=rtcp-rsize\");rtcpParameters.reducedSize=rsize.length>0;rtcpParameters.compound=rsize.length===0;var mux=SDPUtils.matchPrefix(mediaSection,\"a=rtcp-mux\");rtcpParameters.mux=mux.length>0;return rtcpParameters};SDPUtils.parseMsid=function(mediaSection){var parts;var spec=SDPUtils.matchPrefix(mediaSection,\"a=msid:\");if(spec.length===1){parts=spec[0].substr(7).split(\" \");return{stream:parts[0],track:parts[1]}}var planB=SDPUtils.matchPrefix(mediaSection,\"a=ssrc:\").map(function(line){return SDPUtils.parseSsrcMedia(line)}).filter(function(msidParts){return msidParts.attribute===\"msid\"});if(planB.length>0){parts=planB[0].value.split(\" \");return{stream:parts[0],track:parts[1]}}};SDPUtils.parseSctpDescription=function(mediaSection){var mline=SDPUtils.parseMLine(mediaSection);var maxSizeLine=SDPUtils.matchPrefix(mediaSection,\"a=max-message-size:\");var maxMessageSize;if(maxSizeLine.length>0){maxMessageSize=parseInt(maxSizeLine[0].substr(19),10)}if(isNaN(maxMessageSize)){maxMessageSize=65536}var sctpPort=SDPUtils.matchPrefix(mediaSection,\"a=sctp-port:\");if(sctpPort.length>0){return{port:parseInt(sctpPort[0].substr(12),10),protocol:mline.fmt,maxMessageSize:maxMessageSize}}var sctpMapLines=SDPUtils.matchPrefix(mediaSection,\"a=sctpmap:\");if(sctpMapLines.length>0){var parts=SDPUtils.matchPrefix(mediaSection,\"a=sctpmap:\")[0].substr(10).split(\" \");return{port:parseInt(parts[0],10),protocol:parts[1],maxMessageSize:maxMessageSize}}};SDPUtils.writeSctpDescription=function(media,sctp){var output=[];if(media.protocol!==\"DTLS/SCTP\"){output=[\"m=\"+media.kind+\" 9 \"+media.protocol+\" \"+sctp.protocol+\"\\r\\n\",\"c=IN IP4 0.0.0.0\\r\\n\",\"a=sctp-port:\"+sctp.port+\"\\r\\n\"]}else{output=[\"m=\"+media.kind+\" 9 \"+media.protocol+\" \"+sctp.port+\"\\r\\n\",\"c=IN IP4 0.0.0.0\\r\\n\",\"a=sctpmap:\"+sctp.port+\" \"+sctp.protocol+\" 65535\\r\\n\"]}if(sctp.maxMessageSize!==undefined){output.push(\"a=max-message-size:\"+sctp.maxMessageSize+\"\\r\\n\")}return output.join(\"\")};SDPUtils.generateSessionId=function(){return Math.random().toString().substr(2,21)};SDPUtils.writeSessionBoilerplate=function(sessId,sessVer,sessUser){var sessionId;var version=sessVer!==undefined?sessVer:2;if(sessId){sessionId=sessId}else{sessionId=SDPUtils.generateSessionId()}var user=sessUser||\"thisisadapterortc\";return\"v=0\\r\\n\"+\"o=\"+user+\" \"+sessionId+\" \"+version+\" IN IP4 127.0.0.1\\r\\n\"+\"s=-\\r\\n\"+\"t=0 0\\r\\n\"};SDPUtils.writeMediaSection=function(transceiver,caps,type,stream){var sdp=SDPUtils.writeRtpDescription(transceiver.kind,caps);sdp+=SDPUtils.writeIceParameters(transceiver.iceGatherer.getLocalParameters());sdp+=SDPUtils.writeDtlsParameters(transceiver.dtlsTransport.getLocalParameters(),type===\"offer\"?\"actpass\":\"active\");sdp+=\"a=mid:\"+transceiver.mid+\"\\r\\n\";if(transceiver.direction){sdp+=\"a=\"+transceiver.direction+\"\\r\\n\"}else if(transceiver.rtpSender&&transceiver.rtpReceiver){sdp+=\"a=sendrecv\\r\\n\"}else if(transceiver.rtpSender){sdp+=\"a=sendonly\\r\\n\"}else if(transceiver.rtpReceiver){sdp+=\"a=recvonly\\r\\n\"}else{sdp+=\"a=inactive\\r\\n\"}if(transceiver.rtpSender){var msid=\"msid:\"+stream.id+\" \"+transceiver.rtpSender.track.id+\"\\r\\n\";sdp+=\"a=\"+msid;sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].ssrc+\" \"+msid;if(transceiver.sendEncodingParameters[0].rtx){sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].rtx.ssrc+\" \"+msid;sdp+=\"a=ssrc-group:FID \"+transceiver.sendEncodingParameters[0].ssrc+\" \"+transceiver.sendEncodingParameters[0].rtx.ssrc+\"\\r\\n\"}}sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].ssrc+\" cname:\"+SDPUtils.localCName+\"\\r\\n\";if(transceiver.rtpSender&&transceiver.sendEncodingParameters[0].rtx){sdp+=\"a=ssrc:\"+transceiver.sendEncodingParameters[0].rtx.ssrc+\" cname:\"+SDPUtils.localCName+\"\\r\\n\"}return sdp};SDPUtils.getDirection=function(mediaSection,sessionpart){var lines=SDPUtils.splitLines(mediaSection);for(var i=0;i=len)return x;switch(x){case\"%s\":return String(args[i++]);case\"%d\":return Number(args[i++]);case\"%j\":try{return JSON.stringify(args[i++])}catch(_){return\"[Circular]\"}default:return x}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return\"\\x1b[\"+inspect.colors[style][0]+\"m\"+str+\"\\x1b[\"+inspect.colors[style][1]+\"m\"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf(\"message\")>=0||keys.indexOf(\"description\")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?\": \"+value.name:\"\";return ctx.stylize(\"[Function\"+name+\"]\",\"special\")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),\"date\")}if(isError(value)){return formatError(value)}}var base=\"\",array=false,braces=[\"{\",\"}\"];if(isArray(value)){array=true;braces=[\"[\",\"]\"]}if(isFunction(value)){var n=value.name?\": \"+value.name:\"\";base=\" [Function\"+n+\"]\"}if(isRegExp(value)){base=\" \"+RegExp.prototype.toString.call(value)}if(isDate(value)){base=\" \"+Date.prototype.toUTCString.call(value)}if(isError(value)){base=\" \"+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\")}else{return ctx.stylize(\"[Object]\",\"special\")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize(\"undefined\",\"undefined\");if(isString(value)){var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return ctx.stylize(simple,\"string\")}if(isNumber(value))return ctx.stylize(\"\"+value,\"number\");if(isBoolean(value))return ctx.stylize(\"\"+value,\"boolean\");if(isNull(value))return ctx.stylize(\"null\",\"null\")}function formatError(value){return\"[\"+Error.prototype.toString.call(value)+\"]\"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2)}else{str=\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\")}}}else{str=ctx.stylize(\"[Circular]\",\"special\")}}if(isUndefined(name)){if(array&&key.match(/^\\d+$/)){return str}name=JSON.stringify(\"\"+key);if(name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,\"name\")}else{name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\");name=ctx.stylize(name,\"string\")}}return name+\": \"+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf(\"\\n\")>=0)numLinesEst++;return prev+cur.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0);if(length>60){return braces[0]+(base===\"\"?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]}return braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg===\"boolean\"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg===\"number\"}exports.isNumber=isNumber;function isString(arg){return typeof arg===\"string\"}exports.isString=isString;function isSymbol(arg){return typeof arg===\"symbol\"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)===\"[object RegExp]\"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg===\"object\"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)===\"[object Date]\"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)===\"[object Error]\"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg===\"function\"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg===\"boolean\"||typeof arg===\"number\"||typeof arg===\"string\"||typeof arg===\"symbol\"||typeof arg===\"undefined\"}exports.isPrimitive=isPrimitive;exports.isBuffer=require(\"./support/isBuffer\");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?\"0\"+n.toString(10):n.toString(10)}var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(\":\");return[d.getDate(),months[d.getMonth()],time].join(\" \")}exports.log=function(){console.log(\"%s - %s\",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require(\"inherits\");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this)}).call(this,require(\"_process\"),typeof global!==\"undefined\"?global:typeof self!==\"undefined\"?self:typeof window!==\"undefined\"?window:{})},{\"./support/isBuffer\":59,_process:53,inherits:58}]},{},[3]);var Voice=bundle(3);if(typeof define===\"function\"&&define.amd){define([],function(){return Voice})}else{var Twilio=root.Twilio=root.Twilio||{};Twilio.Call=Twilio.Call||Voice.Call;Twilio.Device=Twilio.Device||Voice.Device;Twilio.PStream=Twilio.PStream||Voice.PStream;Twilio.PreflightTest=Twilio.PreflightTest||Voice.PreflightTest;Twilio.Logger=Twilio.Logger||Voice.Logger}})(typeof window!==\"undefined\"?window:typeof global!==\"undefined\"?global:this);"],"names":["applyCaseMiddleware","axios","baseURL","globals","withCredentials","preservedKeys","Severity","alertsSlice","createSlice","name","initialState","alerts","alertIndex","reducers","addAlert","state","action","unshift","_objectSpread","payload","index","actions","alertsReducer","reducer","fetchClientsValidator","Ajv","compile","type","required","additionalProperties","properties","status","const","statusMessage","data","items","id","fetchClients","createAsyncThunk","_ref2","_asyncToGenerator","_regeneratorRuntime","_callee","_","_ref","dispatch","client","response","_context","prev","next","get","sent","abrupt","message","JSON","stringify","errors","t0","severity","Error","stop","_x","_x2","apply","arguments","root","routes","liveUnitId","concat","archiveCabinetId","presetId","startTime","endTime","encodeURIComponent","toUTC","toISO","cameraId","alertId","lvtResponseSchema","dataSchema","validateRequest","request","validator","console","log","_x3","_x4","archiveImagesNavMetaProperties","clientId","recordingStart","archiveImagesStart","timezone","cameraIds","archiveImagesNavMetaSchema","Object","keys","lvtResponseArchiveImagesNavMetaSchema","lvtResponseArchiveImagesNavMetaValidator","cameraOrCabinetMetadataProperties","record","oneOf","notRecordingReason","canRequestVideo","archivedVideos","title","url","bytes","timestampRecorded","timestampRequested","requestedDurationMinutes","presets","default","cameraOrCabinetMetadataSchema","lvtResponseCameraOrCabinetMetadataSchema","lvtResponseCameraOrCabinetMetadataValidator","logError","route","error","archiveMetadataService","fetchLiveUnitMetadata","fetchArchiveCabinetMetadata","_callee2","_context2","fetchCameraOrCabinetMetadata","archiveCabinetIds","_callee3","responseData","convertedData","_context3","post","map","hasOwnProperty","camera","cabinet","dummyArchiveMetadataService","_callee4","_context4","_callee5","_context5","_callee6","_context6","presetImagesProperties","datetimeRecorded","imageUrl","thumbUrl","presetImagesSchema","uniqueItems","lvtResponsePrestImagesSchema","lvtResponsePresetImagesValidator","presetImagesService","fetchPresetImages","fetchPresetsImages","presetIds","start","end","fetchPresetImagePresignedUrl","dummyPresetImagesService","videoRetrievalSchema","lvtResponseVideoRetrievalSchema","lvtResponseVideoRetrievalValidator","videoRetrievalService","requestVideoRetrieval","dummyVideoRetrievalService","archiveCabinetInfoProperties","clientName","locationName","liveUnitName","city","accessArchives","showClientName","archiveCabinetInfoSchema","lvtResponseArchiveCabinetInfoSchema","lvtResponseArchiveCabinetInfoValidator","RequestType","archiveCabinetInfoService","alertService","getAlerts","postResolveAlert","resolvedAlert","getAlert","fetchUserInfoValidator","lvtc","lvtu","lvtr","username","videoPreference","permissions","archives","cameras","streamDeactivated","d3cc","selfService","liveUnits","clients","locations","users","quickConfig","reportViewAll","fetchUserInfo","fetchUserIdentity","resp","vmsSearchApi","createApi","reducerPath","baseQuery","fetchBaseQuery","baseUrl","credentials","endpoints","builder","vmsSearch","query","searchConfig","_searchConfig$filter$","_searchConfig$filter","_searchConfig$filter2","_searchConfig$filter3","params","q","limit","offset","filter","indices","client_id","region_id","sort","query_string","qs","arrayFormat","encode","getVmsSearchRights","searchRightsQuery","useLazyVmsSearchQuery","useVmsSearchQuery","useGetVmsSearchRightsQuery","axiosClient","usePrefetch","vmsBaseQuery","api","extraOptions","method","body","result","validationError","_error$response","responseError","warn","vmsBaseApi","liveUnitMosaicApi","liveUnitMosaicData","addPreset","mutation","onCacheEntryAdded","presetAdd","cacheDataLoaded","then","_ref3","util","updateQueryData","draft","forEach","push","isHome","updatePreset","_ref4","presetUpdate","_ref5","preset","useLiveUnitMosaicDataQuery","useAddPresetMutation","useUpdatePresetMutation","SearchIndex","SearchType","SearchSourceType","requestedVideosApi","fetchRequestedVideos","LiveUnit","getShareLink","dewarped","videoId","useFetchRequestedVideosQuery","useLazyGetShareLinkQuery","speakerTalkdownApi","speakerTalkdownStart","speakerTalkdownHeartbeat","_slicedToArray","token","speakerTalkdownEnd","useLazySpeakerTalkdownStartQuery","compareSearch","useLazySpeakerTalkdownHeartbeatQuery","useLazySpeakerTalkdownEndQuery","searchA","searchB","_searchA$selectedClie","_searchB$selectedClie","_searchA$selectedRegi","_searchB$selectedRegi","compareQuery","searchQuery","compareClient","selectedClient","compareRegion","selectedRegion","compareSearchType","searchType","defaultSearch","Default","search","mapSearchArg","undefined","esSearchBarSlice","setSearch","setMapSearchArg","_esSearchBarSlice$act","elasticSearchReducer","archiveCabinetsSchema","cameraName","latitude","longitude","regionName","archiveCabinetsValidator","fetchArchiveCabinets","filterConfig","interceptors","use","config","paramsSerializer","archiveCabinets","webDataNotAsked","archiveCabinetsReducer","extraReducers","addCase","pending","webDataLoading","fulfilled","webDataSuccess","rejected","serializedErrorToWebDataError","liveUnitsSchema","dateActivated","dateDeactivated","mountingStructure","serial","liveUnitsValidator","fetchLiveUnits","liveUnitsReducer","hourInSeconds","camerasOrCabinetsMeta","dateTimeHeaderHeight","gridAndAccordionWidth","images","requestDuration","requestStartTime","DateTime","plus","minutes","timeSpan","unitMeta","timelineStart","minus","hours","timelineWidth","videoSelectionMode","archivesSlice","setCamerasOrCabinetsMeta","setDateTimeHeaderHeight","setBucketImage","bucket","webDataImages","setBucketImages","entries","presetsToImages","presetIdStr","parseInt","setGridAndAccordionWidth","setCanRequestVideo","setLiveUnitId","setRequestDuration","seconds","setRequestStartTime","payloadDateTime","defaultStart","days","recordingStartIso","unwrap","toSeconds","isValid","setTimeSpan","setTimelineStart","diff","newRequestStart","newDateTime","setTimelineWidth","setUnitMeta","setVideoSelectionMode","_archivesSlice$action","archivesReducer","getPatrolState","camera_id","fetchCameraData","requestQuickVideo","promises","Promise","all","_x5","streamingId","cameraList","camerasSlice","setStreamingCamera","camerasReducer","capabilitiesPropertiesSchema","autofocus","clickToCenter","heater","home","lightInternal","lightInfared","pan","panStop","position","relayActions","relayName","uiLabel","stateDefault","reportStates","delay","speakerSounds","label","speakerTalkdown","snapshot","zoom","capabilitiesSchema","cameraHealthPropertiesSchema","isFlapping","isGradient","statusText","startColor","color","overlay","fetchStreamMetadataPropertiesSchema","cameraActive","cameraPatrolSuspended","cameraHealth","capabilities","sipPhoneNumber","sipPin","clientPasscode","locationId","clientLogoUrl","otherCameraIds","timeZone","controlPtzf","controlPresets","quickSounds","suspendPatrol","thumbnailPreset","fetchStreamMetadataSchema","fetchStreamMetadataValidator","fetchStreamMetadata","getLights","relays","relay","toLowerCase","indexOf","getHeater","selectedClientId","clientsSlice","selectClient","setSelectedClient","_clientsSlice$actions","clientsReducer","archiveCabinetProperties","archiveCabinetsSearchSchema","archiveCabinetsSearchValidator","hidden","height","liveUnitNavSlice","setHidden","setHeight","webDataErrorSimple","_liveUnitNavSlice$act","liveUnitNavReducer","liveUnitsSearchValidator","favoritesListsNames","fetchLiveUnitsThunk","thunkName","liveUnit","_liveUnit$serial$trim","_liveUnit$serial","trim","fetchLiveUnitsStream","fetchLiveUnitsArchives","liveUnitsStream","liveUnitsArchives","mapSlice","allFilter","archiveCabinetFilter","deactivatedFilter","liveUnitFilter","selectedUnit","setAllFilter","setArchiveCabinetFilter","setDeactivatedFilter","setLiveUnitFilter","setSelectedUnit","_mapSlice$actions","mapReducer","mapSelectors","_state$map$selectedUn","_state$map$selectedUn2","isArchiveCabinet","_state$map$selectedUn3","isDeactivated","streamMeta","requestId","streamDataReducer","meta","addMatcher","matchFulfilled","WebDataSteps","_action$meta$arg$orig","arg","originalArgs","_action$meta$arg$orig2","find","p","userSlice","userClient","sessionStart","setUserIdentity","_action$payload","userId","userToken","setUserClient","setUserSession","now","Date","toISOString","_action$payload2","_userSlice$actions","userReducer","fetchUserListsValidator","favorites","camId","camName","lastImageUrl","fetchUserListsData","updateUserListsValidator","addUserLists","putUserFavData","_ref7","_ref6","favoriteListId","put","_x6","userListsData","userListsReducer","isSuccess","combineReducers","_combineReducers","elasticSearch","liveUnitNav","mapArchiveCabinets","mapArchiveCabinetsReducer","mapLiveUnits","mapLiveUnitsReducer","stream","user","userLists","_defineProperty","enhancers","Sentry","useDispatch","useDispatchBase","useSelector","useSelectorBase","FeatureHubContext","createContext","FeatureHubProvider","edgeUrl","apiKey","children","_useState","useState","_useState2","isReady","setIsReady","_useState3","_useState4","context","setContext","useEffect","EdgeFeatureHubConfig","addReadynessListener","firstTimeReady","ctx","newContext","userKey","build","clear","_jsx","Provider","value","usePageStyles","makeStyles","createStyles","app","flexWrap","page","flexGrow","overflow","pageClasses","Grid","container","className","clsx","item","dragVertical","width","lvtLogoBlack","fillRule","shieldIcon","enableBackground","marginLeft","luadminIcon","imageNotFound","margin","LvtLogoBlack","classes","useStyles","_jsxs","viewBox","fill","xmlns","clipPath","d","LiveUnitIcon","clipRule","Shield","xmlSpace","style","Sounds","AlertTimelineConnector","transform","r","x1","y1","x2","y2","stroke","strokeWidth","strokeDasharray","cx","ImageNotFound","styles","Presets","ClickAndDrag","ProductEntitlementsContext","ProductEntitlementsSchema","z","adminAccess","ccAccess","vmAccess","LocalStorageProductEntitlementsSchema","uuid","entitlements","ProductEntitlementsProvider","nextAppUrl","setData","isFetchStarted","setIsFetchStarted","anyObject","unsafeValue","localStorage","getItem","parse","removeItem","fetch","ok","json","setItem","t1","window","location","href","supportEmail","theme","divider","marginBottom","helpActive","borderRadius","boxSizing","outline","palette","secondary","main","helpClose","backgroundColor","right","top","helpTooltip","boxShadow","shadows","text","primary","padding","marginTop","menu","menuSection","paddingBottom","lineHeight","menuHeader","fontSize","fontWeight","sectionHeader","NavMenu","icon","HelpOutline","menuClassName","Box","Link","target","underline","Divider","display","flexDirection","variant","portalUrl","_useSelector","_Fragment","AccountCircleOutlined","MenuItem","ListItemIcon","ListItemText","ExitToApp","urls","_useProductEntitlemen2","useContext","useProductEntitlementsContext","shouldShowReports","_useFeatureHub","useFeatureHub","isEnabled","includes","useShouldShowReports","NavContainer","logo","logoUrl","vms","NavHeader","NavLink","VideoCameraBackOutlined","path","selected","startsWith","NewReleasesOutlined","nextApp","d3","BarChart","EmergencyRecordingIcon","OpenInNew","portal","SettingsOutlined","NavFooter","HelpCenter","MyAccount","overflowX","VerticalNavBar","ArchiveMetadataContext","React","ArchiveMetadataProvider","ArchiveMetadataContextWrapper","Consumer","service","PresetImagesContext","PresetImagesProvider","PresetImagesContextWrapper","VideoRetrievalContext","VideoRetrievalProvider","VideoRetrievalContextWrapper","translation","components","liveUnitMosaicPage","loading","getLiveUnitStreamData","realtimeEvents","resolveFailed","toggleFailed","liveUnitViewers","accessMessage","cameraControl","viewOnly","accessTag","viewers","footer","live","goToAlerts","buttons","lights","alertsPage","noAlerts","header","alertItem","alertSubject","person","vehicle","object","alertType","lowvoltagedisconnect","powerloss","mastmovement","baseentry","headentry","intrusion","loitering","gunshot","fire","Test","other","alertTypeDefault","resolve","resolveDialog","noteRequired","tagRequired","toast","resolveSuccess","tags","accident","animal","deterredCrime","employeeVendor","suspiciousActivity","tampering","theft","technicalIssue","violence","note","resolveAlert","alertFooter","alertTimelineFooter","resolved","goLive","alertMediaTile","cameraRole","Right","Left","Primary","Radar","None","cameraStreamTile","actionButtons","newPreset","settings","checkIn","requestedVideos","previouslyRequestedVideos","thermal","panoDewarped","recorded","requested","requestedBy","utcAppendment","linkPopper","shareLink","download","streamContent","lightsButton","common","failure","head","resources","en","enUS","defaultFeatureFlags","hasFetchedFlags","hasFeatureFlag","hasFeatureFlags","FeatureFlagContext","FeatureFlagContextWrapper","flags","setFlags","getFlags","getFeatureFlags","featureFlags","required_flag","_flags$includes","required_flags","every","f","OnFeatureFlag","flag","redirect","renderOnDisabled","history","useHistory","loaded","shouldRender","names","searchResults","viewStream","viewHistory","viewUnit","searchField","backButton","searchDrawer","anyCamera","defaultCamera","streamButton","historyButton","streaming","relayPrefix","otherCamera","presetMenu","lightMenu","light","strobeLight","floodLight","cameraLight","soundMenu","quickSound","timelineDate","viewAllSaved","thumbnail","selectVideo","requestVideo","filterMenu","filterToggle","navigation","events","mapMarkerClicked","mapTypeChanged","favoriteAdd","favoriteRemove","historyDateChanged","streamPageLoaded","historyPageLoaded","Context","isInDevMode","isInitialized","isLoggingEnabled","useFullStory","logPrefix","event","eventName","eventProperties","FullStory","e","identify","uid","customVars","getCurrentSessionURL","modal","modalBody","alignItems","headerText","contentMargin","closeButton","zIndex","video","open","onClose","Dialog","paper","IconButton","onClick","role","Close","src","video_url","poster","thumbnail_url","controls","DialogContent","header_text","Typography","align","body_text","documentation_url","rel","Button","size","setVideo","isOpen","setIsOpen","res","InformationalVideoModal","Page","base","minHeight","borderTop","grey","filters","filterCheckbox","filterIcon","filterLabel","Accordion","withStyles","bottom","left","expanded","MuiAccordion","Filters","archiveCabinet","deactivated","isExpanded","setIsExpanded","square","onChange","AccordionSummary","expandIcon","ExpandLess","AccordionDetails","FormControlLabel","control","Checkbox","checked","MarkerArchiveCabinet","MarkerDeactivated","MarkerLiveUnit","_makeStyles","drawer","rowGap","overflowY","mapShift","transition","transitions","create","easing","sharp","duration","leavingScreen","marginRight","mapNoShift","easeOut","enteringScreen","liveUnitDefaultCameraValidator","extendedApi","injectEndpoints","getLiveUnitDefaultStreamCameraId","overrideExisting","useGetLiveUnitDefaultStreamCameraIdQuery","useLazyGetLiveUnitDefaultStreamCameraIdQuery","endpointsLiveUnitDefaultCamera","unitHealthPropertiesSchema","cameraInformationPropertiesSchema","liveUnitMetadataProperties","accessStream","liveUnitSerial","locationCity","locationState","locationStreet","locationZip","unitHealth","liveUnitMetadataSchema","liveUnitInfoProperties","showClientNameStreamPage","showClientNameHistoryPage","liveUnitSerialNum","liveUnitInfoSchema","lvtResponseLiveUnitMetadataSchema","lvtResponseLiveUnitMetadataValidator","lvtResponseLiveUnitInfoSchema","lvtResponseLiveUnitInfoValidator","isArchiveCabinetInfo","NullArchiveImagesNavMeta","zoneName","isArchiveImagesNavMeta","isCameraOrCabinetMetadata","Array","isArray","isCamera","health","alignSelf","titleRow","row","tooltip","liveUnitIcon","objectFit","opacity","infoText","ArchiveCabinetInfoBox","searchRightsData","LiveUnits","ArchiveCabinets","Clients","is_multi_client","Business","gridTemplateColumns","columnGap","cameraDiv","paddingLeft","contrastText","media","maxHeight","presignedUrl","setPresignedUrl","toString","err","Card","LinkRouter","to","CardMedia","component","ImageNotAvailable","onError","defaultCameraId","length","CameraPreview","Alert","buttonGroup","gap","button","borderColor","black","white","hasCameras","accessHistory","selectedUnitId","streamUrl","archiveUrl","warning","pointerEvents","disabled","startIcon","VideocamOutlined","fullWidth","HistoryOutlined","_ref$health","_ref$size","muiClasses","PauseIcon","VideocamIcon","Tooltip","arrow","placement","LiveUnitInfoBox","HealthDot","LocationOnOutlined","SvgIcon","isDrawerOpen","handleClose","_useLazyGetLiveUnitDe","_useLazyGetLiveUnitDe2","getStreamCameraForLiveUnit","defaultStreamCameraId","liveUnitInfo","setLiveUnitInfo","setCameraList","_useState5","_useState6","archiveCabinetInfo","setArchiveCabinetInfo","Drawer","anchor","CloseIcon","drawerComponents","DrawerNavigationButtons","CameraNavigation","UnitType","isUnitActive","activated","activatedTime","deactivatedTime","hasValidLatLong","boundsForPoints","mapsApi","points","bounds","LatLngBounds","_p$geometry$coordinat","geometry","coordinates","lng","lat","extend","diffLng","getNorthEast","getSouthWest","union","west","east","north","south","mapFitBounds","paddingPercentage","minimumZoom","maximumZoom","_map$getDiv$getBoundi","getDiv","getBoundingClientRect","paddingWidth","paddingHeight","setOptions","minZoom","maxZoom","fitBounds","DEFAULT_MAP_CONFIG","center","marker","cursor","ArchiveCabinetMarker","unitId","popper","isCabinet","alt","memo","justifyContent","background","border","ClusterMarker","handleClick","DeactivatedUnitMarker","LiveUnitMarker","mapStyles","mapCenterButton","minWidth","font","mapWrapper","loaderContainer","loader","MapSearchBarStyles","PageType","localStorageGetArray","key","storedString","localStorageStoreIterable","from","constrainedEntries","maxEntries","slice","Math","max","KEY_RECENT_SEARCHES","getRecentSearches","storeRecentSearch","newSearch","recentSearches","newSearches","handleHighlight","string","split","reverse","setRecentSearches","List","ListItem","AccessTimeIcon","Chip","ListItemSecondaryAction","deleteRecentSearch","handleDeleteRecentSearch","onKeyDownHandlerCreator","handleMapUpdate","searchInputStyles","input","spacing","flex","iconButton","chip","onSearchChange","inputClasses","setSearchOpen","inputRef","setInputFocus","searchValue","handleClearIndexSearch","handleClearSelectedClient","handleClearSelectedRegion","InputBase","currentTarget","placeholder","inputProps","startAdornment","onDelete","Regions","searchChip","endAdornment","onKeyDown","onMouseDown","SearchIcon","resultStyles","fontStyle","visibility","maxWidth","subheader","textOverflow","_result$highlight$nam","_result$highlight","_result$highlight$cli","_result$highlight2","_result$highlight$loc","_result$highlight3","onSelect","unit","source","highlight","client_name","location_name","dense","ArchiveOutlinedIcon","disableTypography","noWrap","History","props","handleOnClick","Domain","Add","_result$highlight$ser","_result$highlight4","historyUnitId","onStreamClick","onHistoryClick","unitName","isUnitAcive","date_activated","date_deactivated","location_street","location_city","location_state","location_zip","_result$highlight$loc2","_result$highlight5","_result$highlight$loc3","_result$highlight6","_result$highlight$loc4","_result$highlight7","_result$highlight$loc5","_result$highlight8","_unit$location_street","_unit$location_city","street","zip","address","Videocam","isMultiClient","Public","hasCameraRights","rights","camera_ids","rights_type","some","entities","VmsSearchResults","primary_camera_id","onRegionSelected","onClientSelected","onSelectArchiveCabinet","onSelectLiveUnit","closeSearchBody","pageType","navigateToStreamAndClose","hasPermissionToStream","primary_camera","at","Stream","LiveUnitResult","ArchiveCabinet","acHistoryUnitId","historyObj","acUnitId","onClickArchiveCabinet","ArchiveCabinetResult","Client","ClientResult","Region","RegionResult","vmsSearchStyles","_searchInputDecrease","searchBody","searchOpen","searchBodyHide","searchBodyContainer","searchSection","resultSection","searchInputIncrease","searchInputDecrease","filterByButton","formSearchQueryArg","orderBy","order","_toConsumableArray","customStyle","_endpointsLiveUnitDef","useLazyQuerySubscription","_useFocus","htmlElRef","useRef","ref","Boolean","current","focus","useFocus","_useFocus2","_useSearch","perPage","setConfig","_useLazyVmsSearchQuer","_useLazyVmsSearchQuer2","hookState","setSearchResults","searchOffset","setSearchOffset","_useState7","_useState8","totalResultCount","setTotalResultCount","_useState9","_useState10","searchTime","setSearchTime","isFetching","count","took","results","pageSearch","total","search_time","isLoading","useSearch","_useSearch2","searchApi","loadMore","providedClasses","region","useCallback","searchResult","_searchResult$source","cabinetId","navigateToStream","searchResultRenderer","ClickAwayListener","onClickAway","SearchInput","Map","fsClasses","updateMap","LinearProgress","has_regions","gutterBottom","RecentSearches","Virtuoso","itemContent","endReached","overscan","comparePropsForRerender","prevProps","nextProps","shallowEqual","units","firstSuccess","_mapRef$current","_mapConfig$zoom","initialMapConfig","mapRef","mapsApiRef","mapConfig","setMapConfig","locatedUnit","featureType","stylers","mapFeatureData","useMemo","searches","mapData","groupedArchiveCabinets","invalidLiveUnits","invalidCabinets","groupedCabinets","identifier","Deactivated","unitDisplayName","mapDatum","cluster","unitType","archiveCabinetsMapData","values","cabinets","searchToMapFeatureData","mapDataForCluster","_useSupercluster","useSupercluster","options","radius","clusters","supercluster","handleMapReset","clusterClick","clusterId","getLeaves","Infinity","expansionZoom","getClusterExpansionZoom","markerClick","id_real","mapApiLoaded","addListener","_mapRef$current2","type_str","getMapTypeId","_mapRef$current3","_mapRef$current4","setCenter","setZoom","VmsSearch","FilterCenterFocus","GoogleMapReact","bootstrapURLKeys","language","scaleControl","mapTypeControl","fullscreenControl","mapTypeControlOptions","google","maps","MapTypeControlStyle","HORIZONTAL_BAR","ControlPosition","LEFT_TOP","restriction","latLngBounds","strictBounds","yesIWantToUseGoogleMapApiInternals","onGoogleApiLoaded","nw","se","_cluster$geometry$coo","_cluster$properties","isCluster","pointCount","point_count","cluster_id","Lottie","animationData","loaderAnimation","loop","displayName","SearchMap","_useVmsSearchQuery","skipToken","selectFromResult","_data$data$results$ma","_objectWithoutProperties","_excluded","searchUnits","setFirstSuccess","setIsDrawerOpen","isGreaterThanDrawerWidth","useMediaQuery","RightUnitDrawer","enqueueSnackbar","useSnackbar","alert","AlertLanding","anchorOrigin","vertical","horizontal","autoHideDuration","persist","preventDuplicate","InformationalVideoModalWrapper","VmsMap","MapView","textAlign","t","useTranslation","keyPrefix","ErrorOutlineOutlined","fontFamily","AlertType","AlertSubject","CameraRole","Loading","raisedNotificationToMedia","sensorId","sortAlerts","a","b","aDate","alertTimestamp","bDate","iconSpace","ImageNotSupported","clip","play","videoRef","videoError","setVideoError","thumbnailError","setThumbnailError","pause","currentTime","muted","MediaErrorPlaceholder","textContainer","textTransform","subTitle","borderBottom","textDecoration","fullHeight","clips","clipThumbnail","clipVideo","description","descriptionHeader","leader","borderBottomStyle","borderBottomWidth","leftHeader","rightHeader","innerDescription","itemButtons","link","viewer","viewerText","viewerIcon","rightDivider","borderRightStyle","borderRightWidth","leftSection","collapsedTimestamp","flexShrink","resolveButton","iconMap","DirectionsWalk","LocalCarWash","CompassCalibration","PowerOff","Bolt","EmojiPeople","LocalFireDepartment","defaultIcon","WarningAmber","_viewers$","date","_onClickResolve","onClickResolve","_useTranslation","i18n","isHovering","setIsHovering","_useViewNotification","useViewNotification","monitor","_useViewNotification2","isCollapsed","leftThumbnail","m","mimeType","leftVideo","centerThumbnail","centerVideo","rightThumbnail","rightVideo","pathname","Collapse","in","onMouseEnter","onMouseLeave","RemoveRedEye","toLocaleTimeString","hour","minute","timeZoneName","toLocaleDateString","month","day","year","AlertClip","AlertIcon","alertSubType","isValidElement","_alertSubType","_iconMap$alertType","_unused","getIcon","WatchLater","preventDefault","checkbox","checkboxColumns","close","detailIcon","details","detailItem","dialog","form","Tag","_ad$liveUnitName","_ad$serial","ad","alertDetails","setOpen","initialTagState","reduce","tag","setTags","noteInput","setNoteInput","setError","awaitingResolve","setAwaitingResolve","time","setLocale","locationTimezone","setZone","_useSnackbar","closeSnackbar","handleChangeTag","renderCheckboxes","i","xs","paperWidthSm","PaperProps","disableGutters","ListItemAvatar","Avatar","primaryTypographyProps","AccessTime","toLocaleString","toLocaleParts","pop","TextField","hiddenLabel","multiline","minRows","maxLength","CircularProgress","ToastAlert","Success","onResolveSuccessMessage","content","listArea","borderBottomColor","heading","empty","emptyContent","emptyMessage","emptyIconContainer","emptyIcon","_ref$initialConnectio","initialConnectionTime","setIsInitialized","isInitialConnection","setIsInitialConnection","failed","setFailed","setAlerts","isResolveOpen","setIsResolveOpen","_useState11","_useState12","resolveAlertDetails","setResolveAlertDetails","_useSecurityAlertsNot","useSecurityAlertsNotifications","_useSecurityAlertsNot2","securityAlertsCallbacks","securityAlertsConnectionState","onSecurityAlertRaised","previous","securityAlertRaised","onSecurityAlertMediaAvailable","findIndex","onSecurityAlertResolveInitiated","resolveInitiated","existingIndex","splice","timeoutId","setTimeout","clearTimeout","disablePadding","AlertItem","handleClickResolve","ResolveDialog","SentimentSatisfiedAlt","Failure","LiveUnitNavSearchBarStyles","SearchBarStyles","useLiveUnitNavStyles","_placeholderSearchBox","inner","searchBarWrapper","navWrapper","titleWrapper","placeholderSearchBox","back","KEY_RECENT_CAMERAS","getRecentCameras","useHeaderStyles","secondaryInfo","isRunning","lu_name","Skeleton","NavTabs","paddingTop","tab","typography","body2","letterSpacing","flexContainerTabs","textColorInherit","ripple","LabelTab","Tab","TouchRippleProps","historyUrl","onRequestedVideo","Tabs","flexContainer","streamingLiveUnitId","archiveLiveUnitId","archiveDefaultCameraId","currentData","recentCameras","mapSearchBarClasses","searchBarClasses","setStreamUrl","streamId","backToMap","sm","lg","Switch","Route","render","match","KeyboardBackspaceIcon","Header","LiveUnitNavTabs","primaryText","secondaryText","aspectRatio","panoVideoBanner","panoVideoBannerTitle","_video$dewarpedVideoU","isDewarpedVideo","dewarpedVideoUrl","emDash","pipe","degree","PanoramaStream","videoUrl","autoPlay","controlsList","liveUnitSerialNumber","recordedDatetime","zone","requestedByEmail","stopPropagation","Download","cell","table","borderCollapse","tablePrefix","noImageBackground","Cell","TableCell","_row$dewarpedVideoUrl","_row$dewarpedVideoUrl2","anchorEl","setAnchorEl","_useLazyGetShareLinkQ","handleShare","buttonElement","navigator","clipboard","writeText","onShareLinkFail","timer","isThermal","toUpperCase","requestedDatetime","requestedByName","GetApp","Popper","Check","VideoType","TC","Table","_Table","TableHead","_extends","_objectDestructuringEmpty","TableBody","_excluded2","TableRow","_excluded3","_TableRow","hover","handleRowClicked","Scroller","_excluded4","TableContainer","EmptyPlaceholder","RequestedVideosTable","videos","handleVideoRowClicked","columns","idx","TableVirtuoso","fixedHeaderContent","column","RequestedVideoRow","MemoizedRequestedVideosTable","VIDEO_ID_PARAM","VIDEO_TYPE_PARAM","RequestedVideosPage","_useFetchRequestedVid","_useFetchRequestedVid2","preprocessedVideos","regularAndDewarpedVideoList","entry","regularVideo","dewarpedVideo","aDateMs","getTime","manipulateVideos","_useLocation","useLocation","setVideoParams","searchParams","URLSearchParams","set","Dewarped","replace","selectedVideo","videoType","isNaN","v","handleSelected","PreviewModal","btnTransition","section","btnOpen","rotate","btnClosed","MuiAccordionSummary","MuiAccordionDetails","carousel","dark","carouselHeader","carouselHeaderSection","dateTime","fullImage","thumbnailTrack","transitionDuration","highlighted","info","outlineOffset","LiveUnitMetadataContext","LiveUnitMetadataProvider","LiveUnitMetadataContextWrapper","metadata","_presetImages$current","_presetImages$current2","_presetImages$current3","presetName","presetImages","selectedImageIndex","imageCarouselOpen","currentIndex","setCurrentIndex","thumbnailsOffset","setThumbnailsOffset","unitMetadata","handleGoingLeft","leftVal","handleGoingRight","rightVal","keyListener","prevState","addEventListener","removeEventListener","toFormat","ArrowBack","ArrowForward","img","modaldiv","timeline","userSelect","thumbnailLine","thumbnailImage","borderLeft","image","PresetThumbnail","onMouseUp","draggable","Draggable","onDragStart","onDragMove","onDragEnd","rest","refDraggable","refMouseDown","refLastMouseEvent","refCallbacks","onMouseMove","ev","boundingBox","diffLast","computePositionChange","diffTotal","syntheticEv","nativeEvent","nextEv","previousEv","rect","diffX","clientX","diffY","clientY","diffXRelative","diffYRelative","DraggableTime","minTime","maxTime","timeUpdate","dragStartTime","setDragStartTime","dragMove","changeTotal","updatedTime","milliseconds","dragStart","dragEnd","hoverDateTime","hoverImage","thumbnailBoundingBox","maxLeft","innerWidth","min","HoverImage","datetime","Preset","isDefault","_props$startExpanded","startExpanded","setSelectedImageIndex","hoverData","setHoverData","isDragging","setIsDragging","thumbnailDownPosition","setThumbnailDownPosition","timeDurationMs","sofar","renderThumbnails","pixelsPerSecond","archiveImage","_data$archiveImage$th","_img$thumbUrl","newHoverData","handleMouseOver","isClickNotDrag","_thumbnailDownPositio","x","y","hypot","ArrowDropUp","dt","Modal","ImageCarousel","getState","startTimeSeconds","startBucket","endTimeSeconds","endBucket","currentBucket","_loop","imageBucket","presetsToFetch","presetsToFetchCopy","presetsToImagesPrimed","presetsToWebDataImages","presetsToErrorImages","CameraSection","canStream","menuAnchor","setMenuAnchor","handleVisibility","accordionWidth","timelineStartTime","thumbnails","archiveState","presetsImages","imagesBucket","retrieveThumbnails","presetImageFetchDebounce","fn","ms","_this","_len","args","_key","debounce","expandedPresets","Set","defaultPresetIdx","add","getExpandedPresetsSet","MoreVert","Menu","keepMounted","presetThumbnails","PresetComponent","has","VideoRequestOverlay","videoSelectionWrapperRef","endDeadzoneRef","headerHeight","draggingRequestStart","setDraggingRequestStart","draggingSelection","setDraggingSelection","draggingRequestEnd","setDraggingRequestEnd","useLayoutEffect","pxPerSec","handleMouseUp","movementX","handleMouseMoveRequestStart","requestStartTimeInSeconds","handleMouseMoveSelection","handleMouseMoveRequestEnd","skeletonContainer","CameraList","CameraOrCabinetMetadata","videoSelectionModeActive","isLiveUnitPath","cameraOrCabinet","tickContainer","tick","whiteSpace","tickMajor","tickMinor","triangle","borderRight","Tick","major","Timeline","forwardRef","intervalDuration","_props$majorIntervalE","majorIntervalEvery","selectedTime","numTicks","ticks","timeMs","toMillis","flooredTime","floor","tickTime","tickTimeMs","offsetPercent","handleArrowClick","newTime","ChevronLeft","ChevronRight","setSourceOfTruthWidth","_ref$current","sourceOfTruthWidth","offsetWidth","grid","gridTemplateRows","gridColumn","gridRow","paddingRight","inputs","requestVideoSpan","dotAndDate","dot","pickerStyles","createTheme","overrides","MuiFormLabel","MuiFormControl","MuiInputBase","MuiInput","MuiInputAdornment","positionEnd","MuiPickersDay","daySelected","MuiPickersClockPointer","thumb","noPoint","tzStyle","pickerBackground","selection","modalFooter","cameraRequestStatus","success","VideoRequestModal","cameraOptions","WebDataManipulator","cameraOrCabinetsMeta","cameraOrCabinetMeta","unwrapOr","amountOfCameras","radioGroupRef","checkedCameras","camerasLoading","isProcessing","camerasLoaded","isProcessed","allCamerasCheckedState","setAllCamerasCheckedState","preventAllChangeCheckboxBehavior","setPreventAllChangeCheckboxBehavior","camerasCount","handleCancel","isMounted","setIsMounted","showCameraIcon","Loop","Done","ErrorOutline","selectionDurationInMinutes","partTwoDateFormat","assign","disableBackdropClick","disableEscapeKeyDown","onEntering","DialogTitle","dividers","round","FormControl","camToBeUpdated","cam","handleSingleCheck","DialogActions","autoFocus","requestStartTimeSeconds","checkedIds","currentCameraList","trunc","cammeraListCamera","VideoRequestHeader","requestStartTimeString","headerClasses","modalOpen","setModalOpen","selectedDate","setSelectedDate","setSelectedTime","updateRequestStartDate","datepickerDate","newDate","toISODate","timeLineStartValue","toISOTime","includeOffset","includePrefix","updateRequestStartTime","datepickerTime","timelineStartDateTime","difference","MuiPickersUtilsProvider","utils","LuxonAdapter","ThemeProvider","KeyboardDatePicker","inputVariant","format","disableFuture","minDate","onAccept","onBlur","KeyboardTimePicker","mask","keyboardIcon","keepLocalTime","newDatetimeISO","Number","maxDurationInMinutes","InputProps","DateTimeHeader","gridRef","headerRef","setAccordionWidth","_gridRef$current","gridDateTimeHeaderWidth","setHeaderHeight","_headerRef$current","offsetHeight","timelineStartString","dateInput","setDateInput","timeInput","setTimeInput","outsideOfBounds","tooEarly","afterNow","showStatus","renderRecordingStart","updateTimelineStartDate","pickersDate","newDateTimeISO","updateTimelineStartTime","pickersTime","test","TimelineDateDotConditionalMarginTop","maxDateMessage","disableHoverListener","disableElevation","ArchiveTimeline","ArchivePageTypeTypes","dispatchUtilFn","dispatchSetCanRequestVideo","dispatchSetLiveUnitId","OpenButton","CenterAnimation","ArchivesPage","navHidden","liveUnitMetadata","setLiveUnitMetadata","Cabinet","archive_cabinet_id","live_unit_id","VmsHistory","AlertTitle","waitOnHeader","fab","fabItem","mosaicHeader","mosaicListItem","active","_light$stateDefault","on","setOn","attempting","setAttempting","toggleTimeout","controlService","setControlService","controlServiceImpl","sendCommand","isChecked","toggle","ToggleVal","fullStorySecondaryClassName","edge","_light$delay","_light$stateDefault2","_light$stateDefault3","onToggleFail","lightsList","handleMenu","actionButtonClasses","useActionButtonStyles","showTooltip","setShowTooltip","disablePortal","TransitionProps","Fade","timeout","raised","CardHeader","LightsButtonItem","PopperProps","Fab","Lights","LightIcon","inputLabel","extraMargin","dialogTitle","linkText","dialogText","addButton","adding","setAdding","newName","setNewName","alertOpen","setAlertOpen","saving","setSaving","_useAddPresetMutation","Container","onSubmit","InputLabelProps","CheckIcon","AddIcon","DialogContentText","listItem","inputText","editIcon","allowSelfService","showEdit","_ref$variant","editing","setEditing","_useUpdatePresetMutat","goToPreset","Input","EditIcon","presetList","presetListMosaic","settingsLink","maxMenuHeight","passedCameraId","_presets","PresetsMenuItem","AddPreset","LaunchIcon","SecurityIcon","disabledButton","currentCamera","otherCameras","selectedCameras","setSelectedCameras","handleCheck","filtered","toggleAll","c","CardContent","CardActions","QuickDownload","Replay5Icon","QuickSettingsButton","allowHeater","_ref$canConfigure","canConfigure","heaterIsOn","setHeaterIsOn","handleHeater","newState","QuickSettings","Settings","featureButton","handleVisible","visible","saveAs","snapshotImage","setSnapshotImage","snapshotModalIsOpen","setSnapshotModalIsOpen","handleSnapshot","takeSnapshot","webDataError","code","PhotoCameraIcon","SnapshotModal","playIcon","soundAnimation","iconArea","list","sounds","playingId","setPlayingId","sound","speakerSound","PlayIcon","soundWaveAnimation","onComplete","startTwilioCall","call","lvtLiveUnitId","micAccess","connected","hangUpInitiatedByUser","ended","mediaDevices","getUserMedia","audio","device","Device","logLevel","codecPreferences","callAnswered","callConnected","callHangup","callStoppedSuccess","callStoppedFailure","endConnection","_makeOutgoingCall","LiveUnitId","connect","makeOutgoingCall","hangup","disconnect","handler","destroy","muteLocal","mute","unmuteLocal","SpeakerState","speakerTalkdownButton","speakerTalkdownIconButton","redButton","cardContent","headerWithArrow","buttonContainer","phoneNumberIcon","allowSpeakerTalkdown","isCallConnected","setIsCallConnected","isCallConnecting","setIsCallConnecting","selfMuted","setSelfMuted","unitMuted","setUnitMuted","callControls","setCallControls","_useState13","QuickSounds","_useState14","selectedSpeakerState","setSelectedSpeakerState","_useState15","_useState16","isUnitMuteProcessing","setIsUnitMuteProcessing","_useLazySpeakerTalkdo","_useLazySpeakerTalkdo2","startSpeakerTalkdown","startSpeakerTalkdownState","handleSelectedSpeakerState","intiateTalkdown","lvt_live_unit_id","handleUnitMute","muteState","ToggleMic","speakerMic","finish","unitMuteIcon","VolumeOff","VolumeUp","talkdownContent","Smartphone","Phone","MicOff","Mic","TalkDown","Speaker","ArrowForwardIos","MusicNote","KeyboardArrowLeft","SpeakerTalkDown","handleInput","handleSuspend","InputAdornment","patrolIsSuspended","setPatrolIsSuspended","suspendPatrolDuration","setSuspendPatrolDuration","patrolModalIsOpen","setPatrolModalIsOpen","setIsProcessing","fetchPatrolState","resumePatrol","VisibilityIcon","VisibilityOffIcon","SuspendPatrolModal","blank","circle","styleClasses","setLoaded","fetchOk","setFetchOk","onLoad","ImageNotSupportedIcon","imageLoaded","isActiveUnitNameDiv","unitNameDiv","healthDot","subBorder","Thumbnail","ImgMediaCard","uptimeSummary","skeletonCamera","navHeader","navText","camList","flexBasis","listStyle","camListHeader","camListSection","camListSectionTopHeader","camListSectionHeader","loadingCamList","sectionRef","scrollIntoView","behavior","activeCameraId","contents","cameraGroup","activeGroup","isActive","validCameras","CameraGroupName","Camera","k","StreamCamNav","selectedCameraId","userPermissions","groupedCameras","setGroupedCameras","newCamerasObj","cams","newCamerasList","_i","_Object$entries","_Object$entries$_i","groupedCams","CameraNav","cameraNavWrapper","clientLogo","fullScreen","panTilt","ptz","streamSectionWrapper","streamContainer","fadeControls","transitionDelay","centerAnimation","upArrow","downArrow","leftArrow","rightArrow","camHeader","placeholderDot","iconBorder","cameraViewers","checkInData","isFavorite","favCamera","buttonLabel","unitHealthBackgroundColor","Toolbar","is_favorite","isFavoriteVal","newCameras","deleteCameras","postObj","isFavorites","updateFavorites","StarIcon","StarBorderOutlinedIcon","CameraViewers","_meta$presets$find","allowControlPresets","allowPanTilt","allowClickToCenter","allowZoom","allowLights","allowQuickSounds","allowSuspendPatol","allowSnapshot","cameraNavList","divRef","refObserver","centerAnimationRef","dimensions","setDimensions","buttonState","setButtonState","startStreamData","setStartStreamData","setCheckInData","isFullScreen","setIsFullScreen","StreamingStatus","streamingStatus","setStreamingStatus","_useState17","_useState18","showCenterAnimation","setShowCenterAnimation","homePreset","cameraStreamService","cameraStreamServiceImpl","_useState19","_useState20","currentCameraId","setCurrentCameraId","generateUpdateCameraAndButton","handleQuickVideo","_alert","onAlertMessage","level","AlertNotification","onFullScreenChange","onClickHome","Home","goToAndPlay","onClickPanTilt","direction","PanTiltVal","Up","Down","onClickZoom","ZoomVal","ZoomIn","ZoomOut","refStreamContainerCb","node","resize","streamBox","ResizeObserver","observe","camString","getCenterAnimation","lottieRef","ArrowLottie","ZoomInLottie","ZoomOutLottie","wrap","StreamContentHead","CameraStream","canWebRtc","webrtc","startStream","dimensionsOptions","onStatusChange","streamRecordId","checkInResponse","checkOut","inFullScreen","CameraStreamContext","StreamBanner","getTimeUntilIdle","PanTilt","Zoom","FullScreen","fullScreenRef","containerRef","ClickToCenter","onClickToCenter","positioning","videoDimensions","SpeakerButtons","QuickDownloadButton","SuspendPatrolButton","SnapshotButton","PresetsButton","LightsButton","StreamPage","cameraIdString","useParams","storeRecentCamera","canStreamIfDeactivated","VmsStream","StreamContent","LiveUnitPage","LiveUnitNav","AlertTileContext","toMMSS","secs","sec_round","join","require","wrapper","cameraRoleIcon","cameraRoleText","controlsWrapper","controlText","textShadow","controlButton","playAndTime","controlsTop","controlsBottom","slider","AlertMediaTile","_videoElementRef$curr","datum","_useContext","primaryAlertTimestamp","currentAlertTimestamp","shouldClipsPlay","setShouldClipsPlay","clipProgress","setClipProgress","isSeeking","setIsSeeking","handle","useFullScreenHandle","videoElementRef","showControls","setShowControls","videoMedia","isVideoReady","setIsVideoReady","isImageReady","setIsImageReady","noOfAttemptsImage","setNoOfAttemptsImage","noOfAttemptsVideo","setNoOfAttemptsVideo","shouldShowVideo","checkVideoUrl","setInterval","clearInterval","checkImageUrl","imageMedia","totalDuration","handleOnTimeUpdate","onTimeUpdate","VideocamOutlinedIcon","exit","FullscreenExitIcon","enter","FullscreenIcon","PlayArrowIcon","Slider","_e","newValue","onChangeCommitted","MosaicItemDimensionsContext","nTiles","setWidth","fullscreen","_presets$find","hideControls","setFullScreen","setSnapshot","usingHtml5Player","DetectRTC","handlePresetsMenu","onClickPreset","onAddPreset","onUpdatePreset","SnapshotButtonV2","CameraAlt","popoverText","PresetsButtonV2","advancedSettingsUrl","localizationStrings","onAdd","onUpdate","alertClipSelectedButton","alertClipButton","alertClipButtonBackground","dashedLine","borderRadium","alertTimelineButtons","scrollbarWidth","alertTimelineConnector","alertButtonFlex","AlertFooter","_alertMedia$","alertMedia","setCurrentAlertTimestamp","dateString","timestamp","alertDate","dateFmt","Intl","DateTimeFormat","timeFmt","timeStyle","formattedAlertDate","tAlertType","orientation","flexItem","Fragment","ImageIcon","buttonSkeleton","liveText","toolbar","footerMiddle","footerRight","AlertTimelineFooter","contextId","groupedAlertMedia","setIsLive","openDialog","setOpenDialog","buttonIcon","listFooter","popover","menuRef","EmojiObjects","Popover","transformOrigin","TransitionComponent","ArrowDownward","PlayCircleFilled","avatarIcon","talkdownMenu","callMenu","sipInfo","_useStopwatch","useStopwatch","autoStart","reset","PhoneInTalk","CallEnd","padStart","footerLeft","goToAlert","LiveStreamFooter","_mosaicData$cameras$","mosaicData","allowSounds","_ref$disableGoToAlert","disableGoToAlertsButton","clock","setClock","acc","relayNames","ra","regex","RegExp","dedupedLights","flatMap","updateClock","SoundsButton","SpeakerTalkdownButton","mosaic","Mosaic","tileProps","TileComponent","MosaicItem","realtimeEventsErrorBanner","cameraAccess","LiveUnitViewersItem","offsetTimestamp","joined","valueOf","paddingX","viewOnlyAccess","viewersButton","viewersButtonEmphasized","LiveUnitViewers","displayViewOnly","SupervisorAccount","endIcon","ExpandMore","liveUnitIdString","urlLocation","_useLiveUnitMosaicDat","getMosaicDataError","setAlert","isLive","setViewers","isViewOnly","queryParsed","queryString","luViewers","groupByTimestamp","medium","mediaTimestamp","arrList","group","cameraMedia","cameraMediaList","groupAlertsByTimestampCameraId","previousAlert","camAlertMediaList","matchList","ele","mosaicHeight","CameraStreamTile","canControlPtzf","canAccessQuickSounds","canSpeakerTalkdown","camerasContainer","fullScreenButton","hoverOverlayContent","overlayText","_camera$capabilities","streams","_ref$onClose","isLandscape","sqrt","ceil","onCloseCamera","innerHeight","_mosaicData$name","setMosaicData","mosaicIdString","mosaicId","getMosaicData","store","configureStore","middleware","getDefaultMiddleware","immutableCheck","ignoredPaths","serializableCheck","preloadedState","createStore","loadI18n","LanguageDetector","initReactI18next","init","fallbackLng","debug","react","useSuspense","interpolation","escapeValue","snackBarError","snackBarWarning","snackBarSuccess","App","tokenUrl","d3Url","selfServiceUrl","vmsUrl","realtimeEventsUrl","walkMeScript","isAuthenticated","setIsAuthenticated","authService","authServiceImpl","i18nLoaded","seti18nLoaded","securityAlertsServiceRef","getSecurityAlertsService","SocketIOSecurityAlertsNotificationService","viewServiceRef","getViewService","SocketIOViewNotificationService","onAuthCheck","isAuthed","authCheck","userIdentity","_s$parentNode","USERID","walkme","document","createElement","async","s","getElementsByTagName","parentNode","insertBefore","_walkmeConfig","smartLoad","loadWalkMe","setAuthToken","userInfo","email","lvtUrls","ViewNotificationContextWrapper","CssBaseline","SnackbarProvider","hideIconVariant","variantError","variantWarning","variantSuccess","maxSnack","ExpiredSessionModal","EmptyLayout","MosaicPage","SideNavLayout","SecurityAlertsNotificationContextWrapper","AlertsPage","LiveUnitMosaicPage","MapLandingPage","featureFlagService","FeatureFlagServiceImpl","createBrowserHistory","dsn","environment","integrations","BrowserTracing","routingInstrumentation","normalizeDepth","replaysOnErrorSampleRate","replaysSessionSampleRate","tracesSampleRate","fullStoryContext","orgId","fullStoryConfig","devMode","ReactDOM","Router","getElementById","bundle","Voice","global","n","o","u","exports","module","WebSocket","XMLHttpRequest","defineProperty","call_1","Call","device_1","TwilioError","log_1","Logger","preflight_1","PreflightTest","__awaiter","this","thisArg","_arguments","P","generator","reject","step","done","__generator","g","trys","ops","verb","throw","return","Symbol","iterator","op","TypeError","deferred_1","AsyncQueue","_operations","prototype","enqueue","callback","hasPending","deferred","_processQueue","promise","_a","hasResolved","e_1","_b","shift","extendStatics","__extends","setPrototypeOf","__proto__","__","constructor","events_1","errors_1","outputdevicecollection_1","defaultMediaDevices","util_1","MediaDeviceInfoShim","kindAliases","audioinput","audiooutput","AudioHelper","_super","onActiveOutputsChanged","onActiveInputChanged","availableInputDevices","availableOutputDevices","_audioConstraints","_inputDevice","_inputStream","_isPollingInputVolume","_log","getInstance","_unknownDeviceIndexes","_removeLostInput","lostDevice","inputDevice","deviceId","_replaceStream","_maybeStopPollingVolume","defaultDevice","setInputDevice","_removeLostOutput","wasSpeakerLost","speakerDevices","wasRingtoneLost","ringtoneDevices","_updateAvailableDevices","_mediaDevices","enumerateDevices","devices","_updateDevices","kind","outputDevices","isOutputSelectionSupported","reason","AudioContext","setSinkId","HTMLAudioElement","_getUserMedia","_onActiveInputChanged","isAudioContextSupported","audioContext","isEnumerationSupported","isSetSinkSupported","isVolumeSupported","enabledSounds","_addEnabledSounds","_audioContext","_inputVolumeAnalyser","createAnalyser","fftSize","smoothingTimeConstant","_maybeStartPollingVolume","once","_initializeEnumeration","enumerable","configurable","_updateVolumeSource","bufferLength","frequencyBinCount","buffer","Uint8Array","requestAnimationFrame","emitVolume","getByteFrequencyData","inputVolume","average","emit","listenerCount","_inputVolumeSource","_unbind","NotSupportedError","setAudioConstraints","audioConstraints","_setInputDevice","isFirefox","unsetAudioConstraints","unsetInputDevice","setValue","bind","_getUnknownDeviceIndex","mediaDeviceInfo","getTracks","track","forceGetUserMedia","InvalidArgumentError","constraints","exact","updatedDevices","availableDevices","removeLostDevice","updatedDeviceIds","knownDeviceIds","lostActiveDevices","lostDeviceIds","lostDeviceId","deviceChanged","newDevice","existingDevice","newMediaDeviceInfo","_wrapMediaDeviceInfo","createMediaStreamSource","groupId","EventEmitter","__assign","icecandidate_1","statsMonitor_1","Backoff","C","PeerConnection","getPreferredCodecInfo","BACKOFF_CONFIG","factor","initialDelay","maxDelay","randomisationFactor","MEDIA_DISCONNECT_ERROR","twilioError","MediaErrors","ConnectionError","MULTIPLE_THRESHOLD_WARNING_NAMES","packetsLostFraction","maxAverage","WARNING_NAMES","audioInputLevel","audioOutputLevel","bytesReceived","bytesSent","jitter","mos","rtt","WARNING_PREFIXES","maxDuration","minStandardDeviation","parameters","_inputVolumeStreak","_isAnswered","_isCancelled","_latestInputVolume","_latestOutputVolume","_mediaStatus","State","Pending","_metricsSamples","_options","MediaHandler","offerSdp","shouldPlayDisconnect","_outputVolumeStreak","_shouldSendHangup","_signalingStatus","_soundcache","_status","_wasConnected","_emitWarning","groupPrefix","warningName","threshold","wasCleared","warningData","groupName","isMuted","payloadData","val","_publisher","emitName","_onAnswer","reconnect","_signalingReconnectToken","Reconnecting","_setCallSid","_maybeTransitionToOpen","_onCancel","callsid","CallSid","_cleanupEventListeners","_mediaHandler","Closed","_pstream","removeListener","_onConnected","version","getSDP","_onHangup","outboundConnectionId","GeneralErrors","_disconnect","_onMediaFailure","MediaFailure","ConnectionDisconnected","ConnectionFailed","IceGatheringFailed","LowBytes","isEndOfIceCycle","isChrome","onerror","pc","isIceDisconnected","iceConnectionState","hasLowBytesWarning","_monitor","hasActiveWarning","mediaReconnectionError","_mediaReconnectStartTime","_mediaReconnectBackoff","backoff","_onMediaReconnected","Open","_onRinging","Connecting","Ringing","hasEarlyMedia","sdp","_onRTCSample","sample","callMetrics","outputVolume","_codec","codecName","_publishMetrics","_onSignalingReconnected","_onTransportClose","SignalingErrors","_reemitWarning","warningPrefix","_reemitWarningCleared","_isUnifiedPlanDefault","isUnifiedPlanDefault","soundcache","twimlParams","customParameters","String","callParameters","reconnectToken","_direction","CallDirection","Incoming","Outgoing","callerInfo","StirStatus","isVerified","exponential","iceRestart","random","publisher","preflight","StatsMonitor","disableWarnings","enableWarnings","audioHelper","pstream","dscp","forceAggressiveIceNomination","isUnifiedPlan","maxAverageBitrate","_checkVolume","onvolume","internalInputVolume","internalOutputVolume","addVolumes","ondtlstransportstatechange","onpcconnectionstatechange","dtlsTransport","getRTCDtlsTransport","onicecandidate","candidate","IceCandidate","toPayload","onselectedcandidatepairchange","pair","localCandidatePayload","local","remoteCandidatePayload","remote","local_candidate","remote_candidate","oniceconnectionstatechange","onicegatheringfailure","onicegatheringstatechange","onsignalingstatechange","ondisconnected","msg","onfailed","onconnected","onreconnected","UnknownError","onopen","onclose","SoundName","Disconnect","disable","_setInputTracksFromStream","setInputTracksFromStream","_setSinkIds","sinkIds","accept","rtcConfiguration","rtcConstraints","beforeAccept","inputStream","getInputStream","openWithConstraints","onAnswer","codecParams","codec_params","selected_codec","enable","getSinkIds","answerIncomingCall","UserMediaErrors","PermissionDeniedError","AcquisitionFailedError","getLocalStream","getRemoteStream","_remoteStream","ignore","shouldMute","wasMuted","postFeedback","score","issue","_postFeedbackDeclined","FeedbackScore","FeedbackIssue","issue_name","quality_score","sendDigits","digits","sequence","digit","dtmf","playNextDigit","soundCache","dialtonePlayer","dtmfSender","getOrCreateDTMFSender","canInsertDTMF","insertDTMF","dtmfs","currentVolume","currentStreak","lastValue","wasWarningRaised","newStreak","cleanup","_createMetricPayload","call_sid","sdk_version","RELEASE_VERSION","selected_region","gateway","wasRemote","postMetrics","callSid","IceGatheringFailureReason","Codec","SOUNDS_BASE_URL","COWBELL_AUDIO_URL","ECHO_TEST_DURATION","PACKAGE_NAME","USED_ERRORS","Deferred","_promise","_resolve","_reject","loglevel_1","audiohelper_1","dialtonePlayer_1","regions_1","Publisher","PStream","rtc","Sound","_activeCall","_audio","_callInputStream","_calls","_callSinkIds","_chunderURIs","_defaultOptions","allowIncomingWhileBusy","closeProtection","PCMU","Opus","levels","ERROR","maxCallSignalingTimeoutMs","tokenRefreshMs","_edge","_enabledSounds","_home","_identity","_preferredURI","_region","_regTimer","_shouldReRegister","_state","Unregistered","_stateEventMapping","Destroyed","EventName","Registering","Registered","_stream","_streamConnectedPromise","_tokenWillExpireTimeout","_createDefaultPayload","aggressive_nomination","browser_extension","_isBrowserExtension","ice_restart_enabled","platform","getMediaEngine","setIfDefined","propertyName","codec","_onSignalingClose","_onSignalingConnected","getRegionShortcode","regionToEdge","setHost","createEventGatewayURI","identity","ttl","ttlMs","timeoutMs","preferredURIs","getChunderURIs","preferredURI","createSignalingEndpointURL","register","_onSignalingError","_typeof2","originalError","_findCall","customMessage","AuthorizationErrors","AuthenticationFailed","AccessTokenInvalid","_stopRegistrationTimer","AccessTokenExpired","hasErrorByCode","getErrorByCode","_onSignalingInvite","wasBusy","queryToJson","Params","_makeCall","ClientErrors","BadRequest","_publishNetworkChange","incoming","_showIncomingCall","_onSignalingOffline","_setState","_onSignalingReady","_networkInformation","connection_type","downlink","downlinkMax","effective_type","effectiveType","_updateInputStream","InvalidStateError","_updateSinkIds","_updateRingtoneSinkIds","_updateSpeakerSinkIds","audio_device_ids","updateToken","isLegacyEdge","isSupported","ignoreBrowserSupport","protocol","browser","msBrowser","chrome","runtime","safari","extension","connection","mozConnection","webkitConnection","_getOrCreateAudioContext","_dialtonePlayer","RTCPeerConnection","RTCRtpTransceiver","_boundDestroy","_boundConfirmClose","_confirmClose","updateOptions","canPlayMp3","canPlayVorbis","canPlayType","enabled","runPreflight","webkitAudioContext","activeCall","_throwIfDestroyed","disconnectAll","_destroyStream","_destroyPublisher","_destroyAudioHelper","removeAllListeners","streamReadyPromise","_setupStream","_sendPresence","_token","unregister","streamOfflinePromise","originalChunderURIs","chunderw","newChunderURIs","hasChunderURIsChanged","newChunderURIs_1","uri","isBusy","setDefaultLevel","optional","googDscp","_defaultSounds","name_1","soundDef","defaultUrl","filename","soundUrl","disableAudioContextSounds","shouldLoop","_setupAudioHelper","_setupPublisher","setToken","confirmationMsg","returnValue","maybeUnsetPreferredUri","MediaStream","currentCall","_removeCall","fileInputStream","updatePreferredURI","outgoing","_maybeStopIncomingSound","presence","_startRegistrationTimer","deviceIds","lost_active_device_ids","_onInputDevicesChanged","publisherOptions","defaultPayload","app_name","appName","app_version","appVersion","eventgw","host","publishEvents","backoffMaxMs","maxPreferredDurationMs","race","setSinkIds","dtmf0","dtmf1","dtmf2","dtmf3","dtmf4","dtmf5","dtmf6","dtmf7","dtmf8","dtmf9","dtmfh","loglevel","bandFrequencies","DialtonePlayer","_gainNodes","createGain","gainNode","destination","gain","frequencies","createOscillator","oscillator","frequency","twilioError_1","messageOrError","causes","explanation","solutions","CallCancelledError","TransportError","ClientLocalDescFailed","ClientRemoteDescFailed","errorsByCode","freeze","generated_1","EventPublisher","productName","defineProperties","_defaultPayload","_isEnabled","_host","writable","_request","formatMetric","total_packets_received","totals","packetsReceived","total_packets_lost","packetsLost","total_packets_sent","packetsSent","total_bytes_received","total_bytes_sent","packets_received","packets_lost","packets_lost_fraction","bytes_received","bytes_sent","audio_codec","audio_level_in","audio_level_out","call_volume_input","call_volume_output","inherits","_post","endpointName","force","payload_type","private","publisher_metadata","requestParams","headers","metrics","customFields","_this2","samples","LogLevelModule","constants_1","Log","getLogger","instance","getLogLevelInstance","DEFAULT_TEST_SOUND_URL","OutputDeviceCollection","_name","_availableDevices","_beforeChange","_isSupported","_activeDevices","wasDeleted","deviceInfo","deviceIdOrIds","missingIds","el","Audio","oncanplay","stats_1","_hasInsightsErrored","_networkTiming","fakeMicInput","signalingTimeoutMs","Status","_samples","_warnings","_startTime","_initDevice","_getStreamFromFile","_device","_onFailed","rtcWarning","Events","Warning","_getCallQuality","CallQuality","Excellent","Great","Good","Fair","Degraded","_getReport","stats","_getRTCStats","testTiming","_endTime","report","_callSid","iceCandidateStats","_rtcIceCandidateStatsReport","networkTiming","selectedEdge","_getRTCSampleTotals","warnings","selectedIceCandidatePairStats","isTurnRequired","localCandidate","candidateType","remoteCandidate","callQuality","_latestSample","firstMosSampleIdx","statObj","stat","toPrecision","audioEl","setAttribute","createMediaElementSource","dest","createMediaStreamDestination","deviceFactory","_onDeviceRegistered","_onDeviceError","_signalingTimeoutTimer","_echoTimer","_call","signaling","_setupCallHandlers","_onUnregistered","_releaseHandlers","Failed","Completed","_report","emitter","eventNames","outputs","output","Connected","getRTCIceCandidateStatsReport","Sample","reportLabel","handlerName","originalHandler","timing","WSTransport","_require","uris","defaults","TransportFactory","prop","_messageQueue","_preferredUri","_uris","_handleTransportClose","_handleTransportError","_handleTransportMessage","_handleTransportOpen","self","_destroy","transport","_JSON$parse","_JSON$parse$payload","_publish","arr","arr2","nav","browserinfo","userAgent","plugin","mediaCapabilities","regPayload","invite","twilio","answer","reinvite","updateURIs","publish","shouldRetry","send","_c","_d","DeprecatedRegion","Edge","createChunderRegionURI","defaultRegion","defaultChunderRegionURI","deprecatedRegions","Au","Au1","Br","Br1","Ie","Ie1","Jp","Jp1","Sg","Sg1","UsOr","Us1","UsVa","regionShortcodes","ASIAPAC_SINGAPORE","ASIAPAC_SYDNEY","ASIAPAC_TOKYO","EU_FRANKFURT","De1","EU_IRELAND","SOUTH_AMERICA_SAO_PAULO","US_EAST_VIRGINIA","US_WEST_OREGON","Us2","Au1Ix","De1Ix","Gll","Ie1Ix","Ie1Tnx","Jp1Ix","Sg1Ix","Sg1Tnx","Us1Ix","Us1Tnx","Us2Ix","Us2Tnx","edgeToRegion","Sydney","SaoPaulo","Dublin","Frankfurt","Tokyo","Singapore","Ashburn","Umatilla","Roaming","AshburnIx","SanJoseIx","LondonIx","FrankfurtIx","SingaporeIx","SydneyIx","TokyoIx","defaultEdge","onDeprecated","deprecatedMessages","chunderRegion","preferredEdge","edgeValues_1","param","createChunderEdgeURI","XHR","Request","xhr","headerName","onreadystatechange","readyState","responseText","setRequestHeader","xmlhttprequest","_typeof","obj","webkitGetUserMedia","mozGetUserMedia","iceCandidate","isRemote","cost","deleted","parts","ip","networkCost","port","priority","relatedAddress","relatedPort","tcpType","transportId","sdpMid","candidate_type","is_remote","related_address","related_port","tcp_type","transport_id","RTCIceGatherer","NativeRTCStatsReport","RTCStatsReport","MockRTCStatsReport","statsMap","_map","createRTCTransportStats","rtcpTransportStatsId","dtlsState","selectedCandidatePairId","localCertificateId","remoteCertificateId","createRTCRTPStreamStats","isInbound","ssrc","associateStatsId","mediaType","trackId","codecId","firCount","getInt","pliCount","nackCount","sliCount","qpSum","createRTCIceCandidateStats","translateCandidateType","getFloat","relayProtocol","convertMsToSeconds","inMs","statName","isPresent","parseFloat","getBoolean","fromArray","array","rtcStats","fromRTCStatsResponse","statsResponse","activeCandidatePairId","transportIds","fingerprint","fingerprintAlgorithm","base64Certificate","issuerCertificateId","createRTCCertificateStats","datachannelid","messagesSent","messagesReceived","createRTCDataChannelStats","localCandidateId","remoteCandidateId","nominated","readable","lastPacketSentTimestamp","lastPacketReceivedTimestamp","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","availableIncomingBitrate","requestsReceived","requestsSent","responsesReceived","responsesSent","retransmissionsReceived","retransmissionsSent","consentRequestsSent","createRTCIceCandidatePairStats","rtp","fractionLost","roundTripTime","packetsDiscarded","packetsRepaired","burstPacketsLost","burstPacketsDiscarded","burstLossCount","burstDiscardCount","burstLossRate","burstDiscardRate","gapLossRate","gapDiscardRate","framesDecoded","createRTCInboundRTPStreamStats","remoteTimestamp","targetBitrate","framesEncoded","createRTCOutboundRTPStreamStats","trackIdentifier","remoteSource","detached","ssrcIds","frameWidth","frameHeight","framesPerSecond","framesSent","framesReceived","framesDropped","framesCorrupted","partialFramesLost","fullFramesLost","audioLevel","echoReturnLoss","echoReturnLossEnhancement","createRTCMediaStreamTrackStats","payloadType","clockRate","channels","sdpFmtpLine","implementation","createRTCCodecStats","transportReport","activeTransportId","r0","calculate","isNonNegativeNumber","effectiveLatency","rFactor","isFinite","RTCPC","setIceAggressiveNomination","noop","_isSinkSupported","_hasIceCandidates","_hasIceGatheringFailures","_iceGatheringTimeoutId","_masterAudio","_masterAudioDeviceId","_mediaStreamSource","_dtmfSender","_dtmfSenderUnsupported","_callEvents","_nextTimeToPublish","_onAnswerOrRinging","_shouldManageStream","_iceState","_isUnifiedPlan","addStream","addTrack","getAudioTracks","cloneStream","oldStream","newStream","webkitMediaStream","setAudioSource","srcObject","mozSrcObject","_window","URL","webkitURL","createObjectURL","_uri","_createAnalyser","analyser","field","_setVolumeHandler","_startPollingVolume","inputBufferLength","_inputAnalyser","inputDataArray","_inputAnalyser2","minDecibels","maxDecibels","outputBufferLength","_outputAnalyser","outputDataArray","_outputAnalyser2","_updateInputStreamSource","_updateOutputStreamSource","inputVolume2","outputVolume2","_stopStream","MediaStreamTrack","audioTracks","_inputStreamSource","_outputStreamSource","shouldClone","_setInputTracksForUnifiedPlan","_setInputTracksForPlanB","localStream","removeTrack","getSenders","sender","removeStream","createOffer","processAnswer","_answerSdp","getStreamPromise","_sender","replaceTrack","_onIceGatheringFailure","_onMediaConnectionStateChange","previousState","_stopIceGatheringTimeout","_updateAudioOutputs","_startIceGatheringTimeout","_this3","addedOutputIds","removedOutputIds","createOutputPromises","_createAudioOutput","_removeAudioOutput","_createAudio","_removeAudioOutputs","_disableOutput","paused","_reassignMasterOutput","masterId","masterOutput","idToReplace","_onAddTrack","pcStream","_fallbackOnAddTrack","autoplay","_setEncodingParameters","enableDscp","getParameters","setParameters","encodings","encoding","networkPriority","_setupPeerConnection","_this4","rtcpcFactory","_maybeSetIceAggressiveNomination","_setupChannel","_this5","onstatechange","signalingState","onconnectionstatechange","connectionState","_setupRTCIceTransportListener","iceGatheringState","_initializeMediaStream","_removeReconnectionListeners","_setupRTCDtlsTransportListener","_this6","_this7","iceTransport","_getRTCIceTransport","getSelectedCandidatePair","_this8","onMediaStarted","_this9","onAnswerSuccess","onAnswerError","errMsg","processSDP","RTCDTMFSender","RTCDtmfSender","chosenSender","createDTMFSender","getLocalStreams","tracks","_getAudioTracks","_canStopMediaStreamTrack","RTCPeerConnectionShim","setCodecPreferences","setMaxAverageBitrate","webkitRTCPeerConnection","mozRTCPeerConnection","RTCSessionDescription","mozRTCSessionDescription","RTCIceCandidate","mozRTCIceCandidate","promisify","areCallbacksFirst","promisifyCreate","promisifySet","createModernConstraints","nc","offerToReceiveAudio","offerToReceiveVideo","mandatory","OfferToReceiveAudio","OfferToReceiveVideo","onSuccess","offer","setLocalDescription","createAnswer","desc","setRemoteDescription","localDescription","_arr","_n","_s","sliceIterator","ptToFixedBitrateAudioCodecName","exec","preferredCodecs","mediaSections","mediaSection","kindPattern","directionPattern","getMediaSections","codecMap","matches","getPayloadTypesInMediaSection","ptToCodecName","pt","rtpmapPattern","pts","createCodecMapForMediaSection","payloadTypes","preferredPayloadTypes","remainingCodecs","remainingPayloadTypes","getReorderedPayloadTypes","newSection","lines","mLine","otherLines","setPayloadTypesInMediaSection","pcmaPayloadTypes","pcmuPayloadTypes","line","opusId","__spreadArrays","il","j","jl","getRTCStatsReport","peerConnection","getStats","RTCSample","createRTCSample","statsReport","fallbackTimestamp","remoteId","activeTransport","selectedCandidatePair","localAddress","remoteAddress","getRTCStats","rval","candidatePairs","localCandidates","remoteCandidates","selectedCandidatePairReport","EventTarget","_eventEmitter","_handlers","dispatchEvent","_defineEventHandler","newHandler","oldHandler","Constructor","_classCallCheck","nativeMediaDevices","MediaDevicesShim","knownDevices","_deviceChangeIsNative","reemitNativeEvent","_deviceInfoChangeIsNative","_knownDevices","_pollInterval","sortDevicesById","sampleDevices","newDevices","oldDevices","bs","devicesHaveChanged","Event","oldLabels","oldLabel","deviceInfosHaveChanged","methodName","AudioPlayer","AudioFactory","_activeEls","_Audio","_maxDuration","_maxDurationTimeout","_playPromise","_shouldLoop","_sinkIds","isPlaying","_play","destroyAudioElement","audioElement","load","_playAudioElement","sinkId","forceIsMuted","forceShouldLoop","_stop","ids","mos_1","DEFAULT_THRESHOLDS","sampleCount","clearCount","raiseCount","clearValue","_activeWarnings","_currentStreaks","_inputVolumes","_outputVolumes","_sampleBuffer","_supplementalSampleBuffers","_warningsEnabled","_mos","Mos","_peerConnection","_thresholds","thresholds","thresholdSampleCounts","_maxSampleCount","_sampleInterval","_fetchSample","thresholdName","warningId","_addSample","_clearWarning","activeWarning","timeRaised","_createSample","previousSample","previousBytesSent","previousBytesReceived","previousPacketsSent","previousPacketsReceived","previousPacketsLost","currentBytesSent","currentBytesReceived","currentPacketsSent","currentPacketsReceived","currentPacketsLost","currentInboundPackets","currentPacketsLostFraction","totalInboundPackets","totalPacketsLostFraction","rttValue","audioInputLevelValues","audioOutputLevelValues","_getSample","_raiseWarnings","_raiseWarning","thresholdValue","foundThreshold","_raiseWarningsForStat","relevantSamples","highCount","countHigh","lowCount","countLow","prevValue","curValue","prevStreak","streak","sampleSets","stdDev","valueAverage","partialSum","diffSquared","pow","calculateStandardDeviation","flat","flattenSamples","comparator","avg","TwilioException","isElectron","isCriOS","isHeadlessChrome","isGoogle","vendor","isSafari","Exception","lefts","getKey","rightKeys","RtpTransceiver","addTransceiver","decodeURIComponent","mapFn","listArray","flattened","mapped","WSTransportState","_backoffStartTime","preferred","_connectedUri","_shouldFallback","_uriIndex","_moveUriIndex","_onSocketClose","wasConnected","_previousState","_closeSocket","_onSocketError","_onSocketMessage","_setHeartbeatTimeout","_socket","_onSocketOpen","_timeOpened","_connectTimeout","_resetBackoffs","defaultConstructorOptions","_backoff","_setupBackoffs","_close","CONNECTING","OPEN","_connect","_heartbeatTimeout","_performBackoff","retryCount","connectTimeoutMs","preferredBackoffConfig","maxPreferredDelayMs","preferredBackoff","attempt","_delay","primaryBackoffConfig","maxPrimaryDelayMs","primaryBackoff","maxPrimaryDurationMs","ws","_regenerator2","__esModule","_createClass","descriptor","protoProps","staticProps","_possibleConstructorReturn","ReferenceError","Deferred_1","_EventTarget_1$defaul","srcOrOptions","getPrototypeOf","_audioNode","_pendingPlayDeferreds","_src","_sinkId","_audioElement","_bufferPromise","_createPlayDeferred","_destination","_gainNode","_XMLHttpRequest","XMLHttpRequestFactory","_resolvePlayDeferreds","subClass","superClass","_inherits","_load","_rejectPlayDeferreds","mark","createBufferSource","bufferSound","deferreds","_pauseAfterPlaythrough","shouldBeMuted","RequestFactory","responseType","decodeAudioData","ExponentialBackoffStrategy","FibonacciBackoffStrategy","FunctionCall","FibonacciStrategy","ExponentialStrategy","fibonacci","vargs","precond","backoffStrategy","backoffStrategy_","maxNumberOfRetry_","backoffNumber_","backoffDelay_","timeoutID_","handlers","onBackoff_","failAfter","maxNumberOfRetry","checkArgument","checkState","checkIsFunction","checkIsArray","function_","arguments_","callback_","lastResult_","numRetries_","backoff_","strategy_","failAfter_","retryPredicate_","DEFAULT_RETRY_PREDICATE_","state_","State_","PENDING","RUNNING","COMPLETED","ABORTED","isPending","isCompleted","isAborted","setStrategy","strategy","retryIf","retryPredicate","getLastResult","getNumRetries","abort","doCallback_","backoffFactory","doCall_","handleBackoff_","isRetry","eventArgs","handleFunctionCallback_","number","BackoffStrategy","nextBackoffDelay_","getInitialDelay","factor_","DEFAULT_FACTOR","next_","getMaxDelay","reset_","backoffDelay","isDef","initialDelay_","maxDelay_","randomisationFactor_","randomisationMultiple","objectCreate","proto","F","objectKeys","Function","_events","_eventsCount","_maxListeners","hasDefineProperty","defaultMaxListeners","$getMaxListeners","that","emitNone","isFn","len","listeners","arrayClone","emitOne","arg1","emitTwo","arg2","emitThree","arg3","emitMany","_addListener","listener","prepend","existing","newListener","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","evlistener","ret","unwrapListeners","copy","setMaxListeners","getMaxListeners","er","doError","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","Reflect","ownKeys","definition","define","undefinedType","isIE","logMethods","bindMethod","traceForIE","trace","realMethod","replaceLoggingMethods","loggerName","methodFactory","enableLoggingWhenConsoleArrives","defaultMethodFactory","defaultLevel","factory","currentLevel","storageKey","getPersistedLevel","storedLevel","cookie","TRACE","DEBUG","INFO","WARN","SILENT","getLevel","setLevel","levelNum","levelName","persistLevelIfPossible","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","logger","noConflict","getLoggers","failCheck","ExceptionConstructor","callee","messageFormat","formatArgs","captureStackTrace","failArgumentCheck","IllegalArgumentError","failStateCheck","IllegalStateError","typeOf","typeCheck","expect","checkIsDef","checkIsDefAndNotNull","checkIsString","checkIsNumber","checkIsBoolean","checkIsObject","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","nextTick","env","argv","versions","off","binding","cwd","chdir","dir","umask","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","isGeneratorFunction","genFun","ctor","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","iter","skipTempReset","_sent","delegate","tryEntries","resetTryEntry","charAt","rootRecord","completion","dispatchException","exception","loc","caught","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","finallyEntry","complete","afterLoc","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","invoke","unwrapped","previousPromise","callInvokeWithMethodAndArg","pushTryEntry","locs","iteratorMethod","SDPUtils","writeMediaSection","transceiver","caps","dtlsRole","writeRtpDescription","writeIceParameters","iceGatherer","getLocalParameters","writeDtlsParameters","mid","rtpSender","rtpReceiver","_initialTrackId","msid","sendEncodingParameters","rtx","localCName","getCommonCapabilities","localCapabilities","remoteCapabilities","commonCapabilities","codecs","headerExtensions","fecMechanisms","findCodecByPayloadType","preferredPayloadType","rtxCapabilityMatches","lRtx","rRtx","lCodecs","rCodecs","lCodec","apt","rCodec","numChannels","rtcpFeedback","fb","parameter","lHeaderExtension","rHeaderExtension","isActionAllowedInSignalingState","maybeAddCandidate","alreadyAdded","getRemoteCandidates","foundation","addRemoteCandidate","makeError","edgeVersion","addTrackToStreamAndFireEvent","MediaStreamTrackEvent","fireAddTrack","receiver","trackEvent","_dispatchEvent","_eventTarget","createDocumentFragment","canTrickleIceCandidates","needNegotiation","localStreams","remoteStreams","remoteDescription","usingBundle","bundlePolicy","rtcpMuxPolicy","iceTransportPolicy","iceServers","hasTurn","server","isString","filterIceServers","_iceGatherers","iceCandidatePoolSize","gatherPolicy","_config","transceivers","_sdpSessionId","generateSessionId","_sdpSessionVersion","_dtlsRole","_isClosed","onaddstream","ontrack","onremovestream","onnegotiationneeded","ondatachannel","_emitGatheringStateChange","getConfiguration","getRemoteStreams","_createTransceiver","hasBundleTransport","recvEncodingParameters","associatedRemoteMediaStreams","wantReceive","transports","_createIceAndDtlsTransports","_maybeFireNegotiationNeeded","RTCRtpSender","clonedStream","clone","clonedTrack","getReceivers","_createIceGatherer","sdpMLineIndex","bufferedCandidateEvents","bufferCandidates","_gather","onlocalcandidate","evt","cand","serializedCandidate","writeCandidate","parseCandidate","sections","getDescription","RTCIceTransport","onicestatechange","_updateConnectionState","RTCDtlsTransport","ondtlsstatechange","_disposeIceAndDtlsTransports","_transceive","recv","rtcp","cname","compound","rtcpParameters","receive","sessionpart","splitSections","parseRtpParameters","isIceLite","matchPrefix","isRejected","isDatachannel","remoteIceParameters","getIceParameters","remoteDtlsParameters","getDtlsParameters","_updateSignalingState","receiverList","iceOptions","substr","splitLines","getKind","getDirection","remoteMsid","parseMsid","getMid","generateIdentifier","parseRtpEncodingParameters","parseRtcpParameters","isComplete","cands","setTransport","setRemoteCandidates","RTCRtpReceiver","getCapabilities","isNewTrack","nativeTrack","removeTrackFromStreamAndFireEvent","sid","states","new","closed","connecting","checking","completed","disconnected","numAudioTracks","numVideoTracks","offerOptions","writeSessionBoilerplate","remoteCodec","hdrExt","rHdrExt","getLocalCandidates","mediaSectionsInOffer","localTrack","getVideoTracks","reducedSize","addIceCandidate","candidateString","inboundrtp","outboundrtp","candidatepair","localcandidate","remotecandidate","methods","nativeMethod","blob","part","prefix","substring","ufrag","usernameFragment","parseIceOptions","parseRtpMap","parsed","writeRtpMap","parseExtmap","writeExtmap","headerExtension","preferredId","parseFmtp","kv","writeFmtp","parseRtcpFb","writeRtcpFb","parseSsrcMedia","sp","colon","attribute","parseSsrcGroup","semantics","ssrcs","parseFingerprint","algorithm","fingerprints","setupType","fp","parseCryptoLine","cryptoSuite","keyParams","sessionParams","writeCryptoLine","writeCryptoKeyParams","parseCryptoKeyParams","keyMethod","keySalt","lifeTime","mkiValue","mkiLength","getCryptoParameters","pwd","password","mline","rtpmapline","fmtps","maxptime","secondarySsrc","encodingParameters","hasRed","hasUlpfec","primarySsrc","flows","encParam","codecPayloadType","fec","mechanism","bandwidth","maxBitrate","remoteSsrc","rsize","mux","spec","planB","msidParts","parseSctpDescription","maxMessageSize","parseMLine","maxSizeLine","sctpPort","fmt","writeSctpDescription","sctp","sessId","sessVer","sessUser","parseOLine","sessionId","sessionVersion","netType","addressType","isValidSDP","superCtor","super_","TempCtor","readUInt8","formatRegExp","objects","inspect","str","isNull","isObject","deprecate","isUndefined","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","opts","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","isFunction","primitive","simple","isNumber","formatPrimitive","visibleKeys","hash","arrayToHash","isError","formatError","isRegExp","isDate","braces","toUTCString","l","formatProperty","formatArray","cur","reduceToSingleString","getOwnPropertyDescriptor","ar","re","objectToString","pad","debuglog","NODE_DEBUG","pid","bold","italic","inverse","blue","cyan","green","magenta","red","yellow","special","boolean","null","regexp","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","getHours","getMinutes","getSeconds","getDate","getMonth","origin","_process"],"sourceRoot":""}