{"version":3,"sources":["widgets/mediaMessageRecorderOverlay/main.es6.js"],"names":["create","VideoMessageRecorderStateTypeEnum","INITIAL","VIDEOMESSAGE_RECORD_IN_PROGRESS","VIDEOMESSAGE_RECORD_SUBMIT","container","appOverlayContentRootElement","document","getElementById","mediaMessageRecorderOverlayElement","markup","componentDidMount","recordVideoInterval","recordVideoDuration","videoHeight","videoWidth","photoShotCapturedBlob","videoCapturedBlob","videoBroadcastStream","videoMessageRecordVideoElement","takePhotoActionButton","takeVideoActionButton","stopRecordingVideoActionButton","cancelVideoRecordingActionButton","proceedVideoRecordActionButton","setVideoMessageRecorderState","type","bus","emit","openVideoMessageRecordingOverlay","ev","height","width","GraphicsMediaRecordManager","startBroadcast","then","streamObject","disablePictureInPicture","setAttribute","removeAttribute","muted","srcObject","on","closeVideoMessageRecordingOverlayHandler","catch","alert","error","toString","removeListener","pause","load","cancel","cancelMediaMessageRecording","clearInterval","paused","play","startVideoMessageRecording","startVideoBroadcastRecording","setInterval","stopVideoMessageRecording","stopVideoBroadcastRecording","videoRecordBlob","videoRecordUrl","URL","createObjectURL","src","name","console","warn","capturePhoto","canvas","createElement","context","getContext","drawImage","toBlob","blob","proceedVideoMessageRecording","seed","Date","now","photoShotCapturedFile","File","lastModified","videoType","MediaRecorder","isTypeSupported","videoCapturedFile","file","webmVideoDuration","addEventListener","dom","append"],"mappings":"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","file":"widgets/mediaMessageRecorderOverlay/main.js","sourceRoot":"/source/","sourcesContent":["import bus from 'bus';\nimport dom from 'modules/env/dom';\n\nimport { markup } from 'widgets/mediaMessageRecorderOverlay/markup';\nimport { GraphicsMediaRecordManager } from 'modules/utils/GraphicsMediaRecordManager';\n\n\nconst VideoMessageRecorderStateTypeEnum = {\n INITIAL: 'INITIAL',\n VIDEOMESSAGE_RECORD_IN_PROGRESS: 'VIDEOMESSAGE_RECORD_IN_PROGRESS',\n VIDEOMESSAGE_RECORD_SUBMIT: 'VIDEOMESSAGE_RECORD_SUBMIT',\n};\n\nexport function create(container) {\n const appOverlayContentRootElement = document.getElementById('app-overlay__content-root');\n const mediaMessageRecorderOverlayElement = markup;\n\n \n function componentDidMount() {\n\n let recordVideoInterval = null;\n let recordVideoDuration = 0;\n\n const videoHeight = 480;\n const videoWidth = 640;\n\n let photoShotCapturedBlob = null;\n let videoCapturedBlob = null;\n let videoBroadcastStream = null;\n\n const videoMessageRecordVideoElement = document.getElementById('video-message-record-overlay__video-src');\n const takePhotoActionButton = document.getElementById('video-message-record-overlay__button_action-take-photo');\n const takeVideoActionButton = document.getElementById('video-message-record-overlay__button_action-take-video');\n const stopRecordingVideoActionButton = document.getElementById('video-message-record-overlay__button_action-stop-video');\n const cancelVideoRecordingActionButton = document.getElementById('video-message-record-overlay__button_action-cancel-recording');\n const proceedVideoRecordActionButton = document.getElementById('video-message-record-overlay__button_action-proceed-recording');\n\n\n function setVideoMessageRecorderState(type) {\n bus.emit(`event.video-message-recorder.state.${type}`);\n }\n\n function openVideoMessageRecordingOverlay(ev) {\n videoMessageRecordVideoElement.height = videoHeight;\n videoMessageRecordVideoElement.width = videoWidth;\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.INITIAL);\n\n if(recordVideoDuration) {\n recordVideoDuration = 0;\n }\n\n GraphicsMediaRecordManager.startBroadcast().then((streamObject) => {\n videoBroadcastStream = streamObject;\n\n videoMessageRecordVideoElement.disablePictureInPicture = true;\n videoMessageRecordVideoElement.setAttribute('controlsList', 'nodownload');\n videoMessageRecordVideoElement.removeAttribute('src');\n videoMessageRecordVideoElement.setAttribute('autoplay', '');\n videoMessageRecordVideoElement.muted = true;\n videoMessageRecordVideoElement.setAttribute('loop', '');\n videoMessageRecordVideoElement.removeAttribute('controls');\n videoMessageRecordVideoElement.srcObject = videoBroadcastStream;\n \n bus.on('event.overlay.video-message-record-overlay.closed', closeVideoMessageRecordingOverlayHandler);\n }).catch(error => {\n alert(error.toString());\n\n bus.emit('command.overlay.close');\n });\n }\n\n function closeVideoMessageRecordingOverlayHandler() {\n photoShotCapturedBlob = null;\n videoCapturedBlob = null;\n recordVideoDuration = 0;\n recordVideoInterval = null;\n\n bus.removeListener('event.overlay.video-message-record-overlay.closed', closeVideoMessageRecordingOverlayHandler);\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.INITIAL);\n videoMessageRecordVideoElement.pause();\n videoMessageRecordVideoElement.srcObject = null;\n videoMessageRecordVideoElement.removeAttribute('src');\n videoMessageRecordVideoElement.load();\n \n GraphicsMediaRecordManager.cancel();\n }\n\n function cancelMediaMessageRecording() {\n if (photoShotCapturedBlob) {\n photoShotCapturedBlob = null;\n }\n\n if (videoCapturedBlob) {\n recordVideoDuration = 0;\n videoCapturedBlob = null;\n }\n\n if(recordVideoInterval) {\n clearInterval(recordVideoInterval);\n }\n\n videoMessageRecordVideoElement.muted = true;\n videoMessageRecordVideoElement.removeAttribute('src');\n videoMessageRecordVideoElement.srcObject = videoBroadcastStream;\n if (videoMessageRecordVideoElement.paused) {\n videoMessageRecordVideoElement.play();\n }\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.INITIAL);\n }\n\n function startVideoMessageRecording(ev) {\n GraphicsMediaRecordManager.startVideoBroadcastRecording();\n\n recordVideoInterval = setInterval(() => {\n recordVideoDuration += 0.2;\n }, 200);\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.VIDEOMESSAGE_RECORD_IN_PROGRESS);\n }\n\n function stopVideoMessageRecording(ev) {\n\n clearInterval(recordVideoInterval);\n\n GraphicsMediaRecordManager.stopVideoBroadcastRecording().then(videoRecordBlob => {\n videoCapturedBlob = videoRecordBlob;\n const videoRecordUrl = URL.createObjectURL(videoRecordBlob);\n\n videoMessageRecordVideoElement.muted = false;\n videoMessageRecordVideoElement.srcObject = null;\n videoMessageRecordVideoElement.src = videoRecordUrl;\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.VIDEOMESSAGE_RECORD_SUBMIT);\n }).catch(error => {\n switch (error.name) {\n case 'InvalidStateError': {\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.INITIAL);\n\n console.warn(\"An InvalidStateError has occured.\");\n break;\n }\n default:\n console.warn(error);\n };\n });\n }\n\n function capturePhoto(ev) {\n const canvas = document.createElement('canvas');\n canvas.width = videoWidth;\n canvas.height = videoHeight;\n const context = canvas.getContext('2d');\n\n videoMessageRecordVideoElement.pause();\n\n context.drawImage(videoMessageRecordVideoElement, 0, 0, videoWidth, videoHeight);\n canvas.toBlob((blob) => {\n photoShotCapturedBlob = blob;\n }, 'image/jpeg');\n\n setVideoMessageRecorderState(VideoMessageRecorderStateTypeEnum.VIDEOMESSAGE_RECORD_SUBMIT);\n }\n\n\n function proceedVideoMessageRecording(ev) {\n const seed = Date.now();\n\n if (photoShotCapturedBlob) {\n const photoShotCapturedFile = new File(\n [photoShotCapturedBlob],\n `userPhoto${seed}.jpeg`,\n { lastModified: seed, type: 'image/jpeg' },\n );\n bus.emit('attach-file-data', [photoShotCapturedFile]);\n\n photoShotCapturedBlob = null;\n }\n if (videoCapturedBlob) {\n let videoType;\n if (MediaRecorder.isTypeSupported('video/webm; codecs=vp9')) {\n videoType = 'video/webm; codecs=vp9';\n } else if (MediaRecorder.isTypeSupported('video/webm')) {\n videoType = 'video/webm';\n } else if (MediaRecorder.isTypeSupported('video/mp4')) {\n videoType = 'video/mp4';\n } else {\n console.error(\"Unable to identify an appropriate MIME type for this device.\");\n }\n const videoCapturedFile = new File(\n [videoCapturedBlob],\n `userVideo${seed}.webm`,\n { lastModified: seed, type: videoType },\n );\n\n bus.emit('attach-file-data',\n [{\n file: videoCapturedFile,\n webmVideoDuration: recordVideoDuration,\n }]\n );\n\n videoCapturedBlob = null;\n }\n\n bus.emit('command.overlay.close');\n }\n\n takePhotoActionButton.addEventListener('click', capturePhoto);\n takeVideoActionButton.addEventListener('click', startVideoMessageRecording);\n stopRecordingVideoActionButton.addEventListener('click', stopVideoMessageRecording);\n cancelVideoRecordingActionButton.addEventListener('click', cancelMediaMessageRecording);\n proceedVideoRecordActionButton.addEventListener('click', proceedVideoMessageRecording);\n\n bus.on('event.overlay.video-message-record-overlay.opened', openVideoMessageRecordingOverlay);\n }\n\n\n dom.append(appOverlayContentRootElement || container, mediaMessageRecorderOverlayElement, componentDidMount);\n}\n"]}