{"version":3,"sources":["components/CreateVideo.tsx","components/VideoText.tsx","components/Sandbox.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["require","config","ActionsWrapper","styled","div","_templateObject","_taggedTemplateLiteral","CreateVideo","videoBlob","setVideoBlob","useState","isUploading","setIsUploading","hasUploaded","setHasUploaded","classes","createUseStyles","disableButton","backgroundColor","cursor","pointerEvents","useStyles","uploadVideo","async","message","error","thumbnailBlob","getThumbnails","quality","start","blob","platform","userId","videoId","window","location","parent","console","log","atob","document","href","split","requestData","parseInt","filetype","response","fetch","process","method","mode","headers","body","JSON","stringify","data","json","presignedUrl","thumbnailPresignedUrl","url","thumbnailUrl","concat","ok","file","File","success","postMessage","eventId","errors","useEffect","_jsx","style","display","justifyContent","alignItems","height","children","width","VideoRecorder","onRecordingComplete","VB","isOnInitially","showReplayControls","replayVideoAutoplayAndLoopOff","renderActions","_ref","t","isVideoInputSupported","isInlineRecordingSupported","thereWasAnError","isRecording","isCameraOn","streamIsReady","isConnecting","isRunningCountdown","isReplayingVideo","countdownTime","timeLimit","useVideoInput","onTurnOnCamera","onTurnOffCamera","onOpenVideoInput","onStartRecording","onStopRecording","onPauseRecording","onResumeRecording","onStopReplaying","onConfirm","_jsxs","Timer","Countdown","renderContent","shouldUseVideoInput","Button","type","onClick","marginRight","className","disabled","StopButton","RecordButton","VideoText","props","phoneNumber","replyLink","marginLeft","paddingLeft","borderLeft","paddingTop","paddingRight","fontSize","wordWrap","paddingBottom","rowHeight","innerHeight","rowWidth","videoTextWidth","Sandbox","match","params","displayIcon","position","bottom","removeIcon","column","flexDirection","minHeight","borderRadius","header","fontFamily","fontWeight","row","maxheight","flexWrap","boxShadow","placeHolder","heght","removeVideoPlayer","videoWrapperShift","videoWrapperBeforeClick","overflow","videoWrapper","loadingContainer","flexwrap","removeLoadingContainer","errorMessage","removeErrorMessage","textBox","textBoxExpanded","videoRef","useRef","showPlayIcon","setShowPlayIcon","expandVideo","setExpandVideo","showControls","setShowControls","videoSource","setVideoSource","playVideo","setPlayVideo","wallpaper","setWallpaper","videoWidth","setVideoWidth","videoHeight","setVideoHeight","showLoadingMessage","setShowLoadingMessage","showErrorMessage","setShowErrorMessage","logo","setLogo","contactObject","setContactObject","getVideoDocument","_videoObject$videoWid","_videoObject$videoHei","videoObject","fetchVideoData","accountPhoneNumber","transcodingStatus","current","setTimeout","_videoRef$current","remove","videoLink","getLinkToVideo","addEventListener","innerWidth","handlePlayVideo","backgroundImage","background","ref","FontAwesomeIcon","icon","faPlay","color","size","ReactPlayer","id","playing","controls","onEnded","faExclamationTriangle","margin","marginTop","faSpinner","spin","_objectSpread","App","_Fragment","BrowserRouter","Switch","Route","path","exact","component","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","React","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.b0a48cad.chunk.js","sourcesContent":["// import { Button } from \"antd\";\nimport { message } from \"antd\";\nimport {\n FC, useEffect, useState\n} from \"react\";\nimport { createUseStyles } from \"react-jss\";\nimport VideoRecorder from 'react-video-recorder';\nimport styled from 'styled-components';\nimport { getThumbnails } from \"video-metadata-thumbnails\";\n\nimport Button from 'react-video-recorder/lib/defaults/button';\nimport Countdown from 'react-video-recorder/lib/defaults/countdown';\nimport RecordButton from 'react-video-recorder/lib/defaults/record-button';\nimport StopButton from 'react-video-recorder/lib/defaults/stop-button';\nimport Timer from 'react-video-recorder/lib/defaults/timer';\nrequire(\"dotenv\").config();\n\nconst fail = (error: string) => {\n throw error;\n};\n\nconst ActionsWrapper = styled.div`\nposition: absolute;\nleft: 0;\nright: 0;\ntop: 50%;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\n`;\n\n\n\nconst LAMBDA_URL =\n process.env.REACT_APP_PRESIGNED_URL_LAMBDA_URL ||\n fail(\"Aborting: LAMBDA_URL environmental variable is missing.\");\n\nexport const CreateVideo: FC = () => {\n const [videoBlob, setVideoBlob] = useState(null);\n const [isUploading, setIsUploading] = useState(false);\n const [hasUploaded, setHasUploaded] = useState(false);\n // //State: IDLE, RECORDING\n // const [state, setState] = useState(\"IDLE\");\n\n const useStyles = createUseStyles({\n disableButton: {\n backgroundColor: \"rgb(229, 229, 229) !important\",\n cursor: \"not-allowed\",\n pointerEvents: \"none\"\n },\n\n });\n const classes = useStyles();\n\n const uploadVideo = async (videoBlob) => {\n if (isUploading) {\n return;\n }\n setIsUploading(true);\n if (!videoBlob) {\n message.error(\"No Video Found\"); // todo show error instead\n\n return;\n }\n\n const thumbnails = await getThumbnails(videoBlob, {\n quality: 0.5,\n start: 0,\n });\n const thumbnailBlob = thumbnails[0].blob as Blob;\n\n //set a default platform, userId, and videoId in case someone tests this website without running it in an iframe\n //or if no platform/userId/videoId info is correctly included in the iframe url\n let platform = \"engage\";\n let userId = \"30\";\n let videoId = \"88888888\";\n if (window.location !== window.parent.location) {\n // The page is in an iframe\n console.log(\"in iframe\");\n try {\n //if videoid is '0', it means the user is recording the video on the conversation page and we need to generate a videoId in the presignedUrl lambda\n [platform, userId, videoId] = window\n .atob(document.location.href.split(\"?\")[1])\n .split(\"/\");\n } catch (error) {\n console.log(\"Error in window location\", error);\n }\n }\n console.log(\n \"platform: \",\n platform,\n \" userId: \",\n userId,\n \" videoId: \",\n videoId\n );\n\n //userId is of type string when we fetch it from url, convert it to int\n const requestData = {\n userId: parseInt(userId),\n platform,\n filetype: \"video/mp4\",\n videoId: videoId,\n };\n const response = await fetch(LAMBDA_URL, {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestData),\n });\n const data = await response.json();\n const presignedUrl = data['presignedUrl'];\n const thumbnailPresignedUrl = data['thumbnailPresignedUrl'];\n if (videoId === \"0\") {\n videoId = data['videoId'];\n }\n console.log(\"presignedUrl: \", presignedUrl);\n console.log(\"thumbnailPresignedUrl: \", thumbnailPresignedUrl);\n console.log(\"videoId: \", videoId);\n const url = \"https://master.d3sdu3vsjoaikd.amplifyapp.com/watch/\" + videoId;\n const thumbnailUrl = `https://sms-video-thumbnails.s3-us-west-2.amazonaws.com/${videoId}-thumbnail.jpg`;\n if (response.ok) {\n const file = new File([videoBlob], videoId);\n try {\n await fetch(thumbnailPresignedUrl, {\n method: \"PUT\",\n mode: \"cors\",\n headers: {\n \"x-amz-acl\": \"public-read\",\n \"Content-Type\": \"image/jpeg\",\n },\n body: thumbnailBlob,\n });\n await fetch(presignedUrl, {\n method: \"PUT\",\n mode: \"cors\",\n headers: {\n \"x-amz-acl\": \"public-read\",\n \"Content-Type\": \"video/mp4\",\n },\n body: file,\n });\n\n message.success(\"Successfully uploaded\"); // todo show error instead\n\n window.parent.postMessage(\n {\n eventId: \"videoUrl\",\n url: url,\n thumbnailUrl: thumbnailUrl,\n videoId: videoId\n },\n \"*\"\n );\n } catch (error) {\n message.error(\"Oops, something went wrong \"); // todo show error instead\n\n }\n } else {\n console.error(data.errors);\n }\n setIsUploading(false);\n setHasUploaded(true);\n\n };\n\n useEffect(() => {\n if (videoBlob) {\n uploadVideo(videoBlob);\n }\n }, [videoBlob]);\n\n return (\n
\n
\n {\n setVideoBlob(VB);\n }}\n isOnInitially\n showReplayControls\n replayVideoAutoplayAndLoopOff\n renderActions={({\n t,\n isVideoInputSupported,\n isInlineRecordingSupported,\n thereWasAnError,\n isRecording,\n isCameraOn,\n streamIsReady,\n isConnecting,\n isRunningCountdown,\n isReplayingVideo,\n countdownTime,\n timeLimit,\n showReplayControls,\n replayVideoAutoplayAndLoopOff,\n useVideoInput,\n\n onTurnOnCamera,\n onTurnOffCamera,\n onOpenVideoInput,\n onStartRecording,\n onStopRecording,\n onPauseRecording,\n onResumeRecording,\n onStopReplaying,\n onConfirm\n }) => {\n const renderContent = () => {\n const shouldUseVideoInput =\n !isInlineRecordingSupported && isVideoInputSupported;\n\n if (\n (!isInlineRecordingSupported && !isVideoInputSupported) ||\n thereWasAnError ||\n isConnecting ||\n isRunningCountdown\n ) {\n return null;\n }\n\n if (isReplayingVideo) {\n return (\n
\n { onStopReplaying(); setHasUploaded(false); }}\n style={{ marginRight: \"16px\" }}\n data-qa='start-replaying'\n >\n {t('Use another video')}\n \n {isUploading && { uploadVideo(videoBlob); }}\n data-qa='start-replaying'\n className={isUploading ? classes.disableButton : \"\"}\n disabled={isUploading}\n >\n {t('Uploading...')}\n }\n
\n );\n }\n\n if (isRecording) {\n return (\n \n );\n }\n\n if (isCameraOn && streamIsReady) {\n return (\n \n );\n }\n\n if (useVideoInput) {\n return (\n \n );\n }\n\n return shouldUseVideoInput ? (\n \n ) : (\n \n );\n };\n\n return (\n
\n {isRecording && }\n {isRunningCountdown && }\n {renderContent()}\n
\n );\n }}\n >\n \n
\n
\n );\n};\n","import { FC } from 'react';\nimport { Button } from 'antd';\nimport 'bootstrap/dist/css/bootstrap.min.css';\n\ninterface VideoTextProps {\n message: string;\n phoneNumber: string;\n expandVideo: boolean;\n}\n\nexport const VideoText: FC = (props: VideoTextProps) => {\n const { message, phoneNumber } = props;\n\n const replyLink = \"sms://\" + phoneNumber;\n return (\n
\n
\n

{message}

\n
\n {' '}\n
\n
\n
\n );\n};","import { faExclamationTriangle, faPlay, faSpinner } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FC, useEffect, useRef, useState } from \"react\";\nimport { createUseStyles } from \"react-jss\";\nimport ReactPlayer from 'react-player/file';\nimport { RouteComponentProps } from \"react-router\";\nimport { VideoText } from \"./VideoText\";\nimport './index.css';\n\nrequire('dotenv').config();\n\nconst fail = (error: string) => {\n throw error;\n};\n\nconst SMS_URL = process.env.REACT_APP_SMS_URL || fail(\"Aborting: SMS_URL environmental variable is missing.\");\nconst FETCH_RECORD_URL = process.env.REACT_APP_FETCH_RECORD_URL || fail(\"Aborting: SMS_URL environmental variable is missing.\");\n\n\n\ninterface Props extends RouteComponentProps<{ videoId: string; }> { }\nconst rowHeight = window.innerHeight / 2;\nlet rowWidth = (rowHeight) * 1.68;\nconst videoTextWidth = rowHeight * .68;\nexport const Sandbox: FC = ({ match }) => {\n const videoId = match.params.videoId;\n const getLinkToVideo = (videoId: string) => {\n const videoSource = `${SMS_URL}/${videoId}/${videoId}.m3u8`;\n return videoSource;\n };\n const useStyles = createUseStyles({\n displayIcon: {\n position: \"absolute\",\n marginLeft: \"2vh\",\n bottom: 0,\n \"margin-bottom\": \"10px\"\n },\n removeIcon: {\n display: \"none\"\n },\n column: {\n justifyContent: \"flex-start\",\n display: \"flex\",\n paddingTop: '80px',\n alignItems: \"center\",\n flexDirection: \"column\",\n minHeight: \"100vh\",\n borderRadius: \"5px\",\n },\n header: {\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Khula\",\n fontWeight: 300,\n fontSize: 45\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n width: rowWidth,\n maxheight: rowHeight,\n flexWrap: \"wrap\",\n boxShadow: \"rgba(0, 0, 0, 0.24) 0px 3px 8px\",\n borderRadius: \"5px\",\n },\n placeHolder: {\n width: \"100%\",\n heght: \"auto\"\n },\n removeVideoPlayer: {\n display: \"none\"\n },\n videoWrapperShift: {\n backgroundColor: \"black\",\n width: \"100%\",\n height: \"100%\",\n },\n videoWrapperBeforeClick: {\n width: rowHeight,\n height: rowHeight,\n display: \"inline-block\",\n overflow: \"hidden\",\n position: \"relative\",\n borderRadius: \"5px 0px 0px 5px\",\n\n },\n videoWrapper: {\n backgroundColor: \"black\",\n height: rowHeight * .94,\n width: rowWidth,\n position: \"relative\",\n display: \"flex !important\",\n overflow: \"hidden\",\n borderRadius: \"5px 5px 0px 0px\",\n\n },\n loadingContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flexwrap: \"wrap\",\n width: \"100%\",\n backgroundColor: \"grey\",\n },\n removeLoadingContainer: {\n display: \"none\",\n },\n errorMessage: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: \"black\",\n\n },\n removeErrorMessage: {\n display: \"none\",\n },\n textBox: {\n width: videoTextWidth\n },\n textBoxExpanded: {\n width: rowWidth,\n },\n '@media (max-width: 840px)':\n {\n videoWrapperBeforeClick: {\n height: rowHeight - 1,\n width: rowWidth,\n borderRadius: \"5px 5px 0px 0px\",\n\n },\n textBox: {\n width: rowWidth,\n },\n header: {\n width: rowWidth,\n },\n },\n '@media (max-width: 765px)':\n {\n videoWrapper: {\n height: rowHeight - 2.2,\n width: rowWidth / 1.1,\n\n },\n videoWrapperBeforeClick: {\n height: rowHeight - 2.2,\n width: rowWidth / 1.1,\n\n },\n row: {\n width: rowWidth / 1.1,\n },\n textBox: {\n width: rowWidth / 1.1,\n },\n header: {\n width: rowWidth / 1.1,\n fontSize: 30\n },\n textBoxExpanded: {\n width: rowWidth / 1.1,\n }\n },\n '@media (max-width: 700px)':\n {\n videoWrapper: {\n width: rowWidth / 1.3,\n },\n videoWrapperBeforeClick: {\n width: rowWidth / 1.3,\n },\n row: {\n width: rowWidth / 1.3,\n },\n textBox: {\n width: rowWidth / 1.3,\n },\n header: {\n width: rowWidth / 1.3,\n fontSize: 20\n },\n textBoxExpanded: {\n width: rowWidth / 1.3,\n }\n },\n '@media (max-width: 593px)':\n {\n videoWrapper: {\n width: rowWidth / 1.7,\n },\n videoWrapperBeforeClick: {\n width: rowWidth / 1.7,\n },\n row: {\n width: rowWidth / 1.7,\n },\n textBox: {\n width: rowWidth / 1.7,\n },\n header: {\n width: rowWidth / 1.7,\n fontSize: 20\n },\n textBoxExpanded: {\n width: rowWidth / 1.7,\n }\n }\n });\n const classes = useStyles();\n\n const videoRef = useRef(null);\n const [showPlayIcon, setShowPlayIcon] = useState(true);\n const [expandVideo, setExpandVideo] = useState(false);\n const [showControls, setShowControls] = useState(false);\n const [videoSource, setVideoSource] = useState(\"\");\n const [playVideo, setPlayVideo] = useState(false);\n const [wallpaper, setWallpaper] = useState(null);\n const [videoWidth, setVideoWidth] = useState(\"100%\");\n const [videoHeight, setVideoHeight] = useState(\"100%\");\n const [showLoadingMessage, setShowLoadingMessage] = useState(false);\n const [showErrorMessage, setShowErrorMessage] = useState(false);\n const [logo, setLogo] = useState(\"Personal Video Message\");\n const [contactObject, setContactObject] = useState({ message: \"\", phoneNumber: \"\" });\n\n const fetchVideoData = async (videoId: string) => {\n const response = await fetch(`${FETCH_RECORD_URL}/${videoId}`);\n const videoData = await response.json();\n return videoData;\n };\n\n useEffect(() => {\n const getVideoDocument = async () => {\n const videoObject = await fetchVideoData(videoId);\n const { logo, wallpaper } = videoObject;\n let width = videoObject.videoWidth ?? \"100%\";\n let height = videoObject.videoHeight ?? \"100%\";\n if (width >= 590) {\n width = \"100%\";\n height = \"100%\";\n }\n console.log(\"width\", width, \"height\", height);\n setVideoWidth(width);\n setVideoHeight(height);\n if (logo) setLogo(logo);\n\n setContactObject({\n message: videoObject.message,\n phoneNumber: videoObject.accountPhoneNumber\n });\n if (wallpaper) setWallpaper(wallpaper);\n if (videoObject.transcodingStatus === \"PROCESSING\") {\n if (null !== videoRef.current) {\n videoRef.current.style.display = \"none\";\n }\n setShowPlayIcon(false);\n setShowLoadingMessage(true);\n setTimeout(() => getVideoDocument(), 5000);\n return;\n };\n if (videoObject.transcodingStatus === \"ERROR\") {\n videoRef.current?.remove();\n setShowErrorMessage(true);\n setShowPlayIcon(false);\n return;\n }\n if (null !== videoRef.current) {\n videoRef.current.style.display = \"inline-block\";\n }\n const videoLink = getLinkToVideo(videoId);\n setVideoSource(videoLink);\n setShowPlayIcon(true);\n setShowLoadingMessage(false);\n //send to sqs to mark-video-as-watched lambda\n // SQS Call goes here\n };\n getVideoDocument();\n }, [videoId]);\n\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth < 840) {\n setExpandVideo(true);\n } else {\n setExpandVideo(false);\n }\n }\n\n window.addEventListener('resize', handleResize);\n });\n const handlePlayVideo = () => {\n setPlayVideo(true);\n setShowPlayIcon(false);\n };\n return (\n
\n
\n
\n {logo}\n
\n
\n\n {videoWidth !== \"100%\" && (\n
{ handlePlayVideo(); }}>\n
\n
\n { setShowControls(true); }}\n />\n
\n
\n )}\n\n {videoWidth === \"100%\" && (\n
{ handlePlayVideo(); }}>\n
\n
\n { setShowControls(true); }}\n />\n
\n
\n )}\n\n
\n
\n \n Error in Loading Media: File Could Not Be Played\n
\n
\n
\n
\n \n Video is loading...\n
\n
\n
\n \n
\n
\n
\n
\n );\n};","import React from 'react';\nimport { CreateVideo } from './components/CreateVideo';\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\nimport { Sandbox } from \"./components/Sandbox\";\nimport 'antd/dist/antd.css';\nconst App: React.FC = () => {\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}