{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/react/media/video/services/getVideo.js","webpack:///./app/react/media/video/components/skeletons/VideoPlayerSkeleton.js","webpack:///./app/react/media/video/components/TeacherDiscretion.js","webpack:///./app/react/media/video/constants/VideoPropType.js","webpack:///./app/react/media/video/components/LessonCard.js","webpack:///./app/react/media/video/components/AddVideoToClassButton.js","webpack:///./app/react/media/video/components/VideoInfo.js","webpack:///./app/react/media/video/components/skeletons/UpNextSkeleton.js","webpack:///./app/react/media/video/components/UpcomingVideo.js","webpack:///./app/react/media/video/components/WatchNextSection.js","webpack:///./app/react/media/video/VideoPage.js","webpack:///./app/react/media/video/App.js","webpack:///./app/react/jsPacks/video.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","getVideo","videoParam","xhr","url","getVideoUrl","method","VideosSkeleton","height","maxHeight","width","borderRadius","motionVariants","open","opacity","overflow","closed","TeacherDiscretion","discretionText","props","useState","isInfoOpen","setIsInfoOpen","textAlign","type","compact","onClick","display","alignItems","justifyContent","px","icon","pr","fontWeight","mx","variants","animate","initial","pt","defaultProps","propTypes","PropTypes","string","videoShape","id","number","title","subtitle","slug","description","image","vimeoVideoId","position","discretion","bool","levels","clbLevels","cefrLevels","eldLevels","audiences","grades","tags","arrayOf","shape","taggings_count","category","genre","LessonShape","lesson_section_id","lesson_section_title","level_display","teacher_discretion","path","thumbnail_url","VideoDataShape","playlist","lessons","LessonCard","lesson","as","href","bg","flex","mb","boxShadow","src","size","pl","fontSize","color","isRequired","AddVideoToClassButton","video","isDialogOpen","setIsDialogOpen","small","style","whiteSpace","AddToClassDialog","onOpenChange","isOpen","onCancel","onSave","content","contentType","CONTENT_TYPES","VideoInfo","date","categoryTitle","onSaveToFolder","flexDirection","lineHeight","mt","ml","measure","displayName","func","placeholders","Array","map","_","index","UpNextSkeleton","ph","Thumbnail","styled","Box","attrs","ThumbOverlay","UpcomingVideoItem","minHeight","UpcomingVideo","thumbnailUrl","videoSlug","subheading","routes","reset","mr","className","alt","WatchNextSection","showSkeleton","sanitizeOptions","ADD_TAGS","ADD_ATTR","parseOptions","replace","domNode","attributesToProps","attribs","LightboxImage","VideoPage","useUserAccess","userIsLoading","userHasAccess","userLoggedIn","userData","isAccessDialogOpen","setIsAccessDialogOpen","useParams","videoData","setVideoData","moveItemModalOpen","setMoveItemModalOpen","addToast","useToast","sanitizedContent","DOMPurify","sanitize","getLevelsByType","levelPreference","useEffect","then","res","errors","action","location","reload","py","pb","Breadcrumbs","label","to","external","parse","gridTemplateColumns","gridColumnGap","gridRowGap","VideoAccessDialog","goBackToGallery","item","fileable","onClose","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","refetchOnMount","refetchOnReconnect","retry","staleTime","TWENTY_FOUR_HOURS_IN_MS","App","WebFont","load","google","families","basename","QueryClientProvider","client","fallback","ReactRouterRoute","Route","ElliiThemeProvider","document","addEventListener","mountPoint","getElementById","ReactDOM","render"],"mappings":"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","file":"video.651100ed4bb4e0444f02.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"video\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//d3uk5h2fsqai9v.cloudfront.net/js-packs/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1533,\"vendor\",\"package-common\",\"ellii\",\"react\",\"package-flashcards\",\"package-folders\",\"course~flashcardSets~folders~media~teacher/planner~video\",\"course~flashcardSets~folders~media~siteFolderModal~video\",\"media~video\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import xhr from 'Common/utils/xhr'\nimport { getVideoUrl } from '../../endpoints'\n\nconst getVideo = videoParam => {\n return xhr({\n url: getVideoUrl(videoParam),\n method: 'GET',\n })\n}\n\nexport default getVideo\n","import { Loading, Skeleton } from '@redriverpress/system'\n\nexport default function VideosSkeleton() {\n return (\n <>\n \n \n >\n )\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n Box,\n Icon,\n Label,\n MotionBox,\n TransparentButton,\n Text,\n} from '@redriverpress/system'\n\nconst motionVariants = {\n open: {\n height: 'auto',\n opacity: 1,\n overflow: 'visible',\n },\n closed: {\n height: 0,\n opacity: 0,\n overflow: 'hidden',\n },\n}\n\nexport default function TeacherDiscretion({ discretionText, ...props }) {\n const [isInfoOpen, setIsInfoOpen] = useState(false)\n\n return (\n \n )\n}\n\nTeacherDiscretion.defaultProps = {\n discretionText: null,\n}\n\nTeacherDiscretion.propTypes = {\n discretionText: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\n\nconst videoShape = {\n id: PropTypes.number,\n title: PropTypes.string,\n subtitle: PropTypes.string,\n slug: PropTypes.string,\n description: PropTypes.string,\n image: PropTypes.string,\n vimeoVideoId: PropTypes.number,\n position: PropTypes.number,\n discretion: PropTypes.bool,\n discretionText: PropTypes.string,\n levels: PropTypes.string,\n clbLevels: PropTypes.string,\n cefrLevels: PropTypes.string,\n eldLevels: PropTypes.string,\n audiences: PropTypes.string,\n grades: PropTypes.string,\n tags: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n taggings_count: PropTypes.number,\n })\n ),\n category: PropTypes.shape({\n id: PropTypes.number,\n title: PropTypes.string,\n slug: PropTypes.string,\n }),\n genre: PropTypes.shape({\n id: PropTypes.number,\n title: PropTypes.string,\n slug: PropTypes.string,\n }),\n}\n\nexport const LessonShape = {\n id: PropTypes.number,\n type: PropTypes.string,\n title: PropTypes.string,\n lesson_section_id: PropTypes.number,\n lesson_section_title: PropTypes.string,\n level_display: PropTypes.string,\n teacher_discretion: PropTypes.bool,\n path: PropTypes.string,\n thumbnail_url: PropTypes.string,\n}\n\nexport const VideoDataShape = {\n ...videoShape,\n playlist: PropTypes.arrayOf(PropTypes.shape(videoShape)),\n lessons: PropTypes.arrayOf(PropTypes.shape(LessonShape)),\n}\n","import PropTypes from 'prop-types'\n\nimport {\n Box,\n CoverImage,\n Icon,\n Heading,\n Label,\n Text,\n TransparentButton,\n} from '@redriverpress/system'\n\nimport { LessonShape } from '../constants/VideoPropType'\n\nexport default function LessonCard({ lesson }) {\n return (\n \n \n \n {lesson.teacher_discretion && (\n \n )}\n \n Lesson\n \n \n {lesson.title}\n \n {lesson.lesson_section_title}\n \n \n {lesson.level_display}\n \n \n \n )\n}\n\nLessonCard.propTypes = {\n lesson: PropTypes.shape(LessonShape).isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { useState } from 'react'\nimport { Button, Box, Icon } from '@redriverpress/system'\n\nimport AddToClassDialog from 'Common/components/dialogs/AddToClassDialog'\nimport { CONTENT_TYPES } from 'Common/constants/contentTypes'\n\nimport { VideoDataShape } from '../constants/VideoPropType'\n\nexport default function AddVideoToClassButton({ video }) {\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n return (\n <>\n \n\n setIsDialogOpen(isOpen)}\n onCancel={() => setIsDialogOpen(false)}\n onSave={() => setIsDialogOpen(false)}\n content={video}\n contentType={CONTENT_TYPES.video}\n />\n >\n )\n}\n\nAddVideoToClassButton.propTypes = {\n video: PropTypes.shape(VideoDataShape).isRequired,\n}\n","import PropTypes from 'prop-types'\n\nimport {\n Box,\n Heading,\n TransparentButton,\n Icon,\n Text,\n} from '@redriverpress/system'\nimport AddVideoToClassButton from './AddVideoToClassButton'\n\nexport default function VideoInfo({\n id,\n title,\n subtitle,\n date,\n // levels,\n description,\n categoryTitle,\n onSaveToFolder,\n}) {\n return (\n <>\n \n \n \n {title}\n \n\n \n {categoryTitle}\n \n\n {/* Optional sub-heading */}\n {subtitle && (\n \n {subtitle}\n \n )}\n {/* Optional sub-heading */}\n {date && (\n \n {date}\n \n )}\n \n \n \n \n \n\n {/* Save video to folder Button */}\n \n \n \n \n \n\n {/* {levels && {levels}} */}\n\n {description && (\n \n {description}\n \n )}\n >\n )\n}\n\nVideoInfo.displayName = 'VideoInfo'\n\nVideoInfo.defaultProps = {\n subtitle: null,\n}\n\nVideoInfo.propTypes = {\n id: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n categoryTitle: PropTypes.string.isRequired,\n description: PropTypes.string,\n levels: PropTypes.string,\n subtitle: PropTypes.string,\n onSaveToFolder: PropTypes.func.isRequired,\n}\n","import { Skeleton } from '@redriverpress/system'\n\nconst placeholders = [...new Array(8)].map((_, index) => ({ key: index }))\n\nexport default function UpNextSkeleton() {\n return placeholders.map(ph => (\n \n ))\n}\n","import PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { Box, Play, Text, Link } from '@redriverpress/system'\nimport { routes } from '../../constants'\n\nconst Thumbnail = styled(Box).attrs({\n width: '80px',\n height: '52px',\n borderRadius: 'small',\n})`\n background-image: url(${props => props.src});\n background-image: url(${props => props.src});\n background-size: cover;\n background-position: center;\n`\n\nconst ThumbOverlay = styled(Box).attrs({\n width: '80px',\n height: '52px',\n borderRadius: 'small',\n bg: 'black',\n})`\n position: absolute;\n opacity: 0.3;\n`\n\nconst UpcomingVideoItem = styled(Box).attrs({\n display: 'flex',\n alignItems: 'flex-start',\n minHeight: '70px',\n borderRadius: 'small',\n p: 2,\n bg: 'white',\n})`\n &:hover {\n .overlay,\n .playIcon {\n transition: opacity 0.1s;\n opacity: 0;\n }\n }\n`\n\nexport default function UpcomingVideo({\n thumbnailUrl,\n title,\n videoSlug,\n subheading,\n}) {\n return (\n \n \n \n \n \n \n \n \n \n {title}\n \n {\n \n {subheading}\n \n }\n \n \n \n )\n}\n\nUpcomingVideo.defaultProps = {\n thumbnailUrl: null,\n subheading: null,\n}\n\nUpcomingVideo.propTypes = {\n thumbnailUrl: PropTypes.string,\n title: PropTypes.string.isRequired,\n videoSlug: PropTypes.string.isRequired,\n subheading: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\nimport { Box, Heading } from '@redriverpress/system'\n\nimport { VideoDataShape } from '../constants/VideoPropType'\n\nimport UpNextSkeleton from './skeletons/UpNextSkeleton'\nimport UpcomingVideo from './UpcomingVideo'\n\nexport default function WatchNextSection({ playlist, showSkeleton, ...props }) {\n return (\n \n \n More like this\n \n {showSkeleton ? (\n \n ) : (\n playlist.map(data => (\n \n ))\n )}\n \n )\n}\n\nWatchNextSection.displayName = 'WatchNextSection'\n\nWatchNextSection.defaultProps = {\n playlist: [],\n}\n\nWatchNextSection.propTypes = {\n showSkeleton: PropTypes.bool.isRequired,\n playlist: VideoDataShape.playlist,\n}\n","import { useEffect, useState } from 'react'\nimport { useParams } from 'react-router-dom'\nimport parse, { attributesToProps } from 'html-react-parser'\n\nimport { CONTENT_TYPES } from 'Common/constants/contentTypes'\nimport { MoveItemModal } from 'Packages/folders'\nimport LightboxImage from 'Common/components/LightboxImage'\nimport Breadcrumbs from 'Common/components/Breadcrumbs'\nimport {\n Box,\n Col,\n Columns,\n Container,\n Icon,\n Heading,\n MonoButton,\n useToast,\n} from '@redriverpress/system'\nimport DOMPurify from 'dompurify'\n\nimport getLevelsByType from 'Common/utils/getLevelsByType'\nimport useUserAccess from 'Common/hooks/useUserAccess'\n\nimport VideoAccessDialog from '../common/components/VideoAccessDialog'\nimport getVideo from './services/getVideo'\n\nimport VideoPlayerSkeleton from './components/skeletons/VideoPlayerSkeleton'\nimport TeacherDiscretion from './components/TeacherDiscretion'\nimport LessonCard from './components/LessonCard'\nimport VideoInfo from './components/VideoInfo'\nimport WatchNextSection from './components/WatchNextSection'\n\n// Allow iframes and the frameborder attribute;\n// we need these for embedding videos\n// See DOMPurify docs: https://github.com/cure53/DOMPurify#can-i-configure-dompurify\nconst sanitizeOptions = {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: ['frameborder', 'allowfullscreen', 'allow'],\n}\n\n// Replace img tags with the LightboxImage component\nconst parseOptions = {\n replace: domNode => {\n if (domNode.name === 'img') {\n const { src, alt } = attributesToProps(domNode.attribs)\n return \n }\n },\n}\n\nexport default function VideoPage() {\n const {\n userIsLoading,\n userHasAccess,\n userLoggedIn,\n userData,\n } = useUserAccess()\n const [isAccessDialogOpen, setIsAccessDialogOpen] = useState(false)\n const { videoParam } = useParams()\n const [videoData, setVideoData] = useState(null)\n const [moveItemModalOpen, setMoveItemModalOpen] = useState(false)\n\n const { addToast } = useToast()\n\n const goBackToGallery = (isOpen = false) => {\n if (!isOpen) window.location.href = '/media/videos'\n }\n\n const content = ``\n\n const sanitizedContent = DOMPurify.sanitize(content, sanitizeOptions)\n\n const levels = getLevelsByType(userData?.levelPreference, videoData)\n useEffect(() => {\n if (!userIsLoading) {\n if (userLoggedIn && userHasAccess) {\n getVideo(videoParam).then(\n res => {\n setVideoData(res.data)\n },\n errors => {\n addToast({\n id: errors,\n content: 'Something went wrong',\n type: 'warning',\n action: (\n window.location.reload()}\n >\n \n Retry\n \n ),\n })\n }\n )\n } else {\n setIsAccessDialogOpen(true)\n }\n }\n }, [userIsLoading])\n\n return (\n <>\n \n \n \n {/* Video Column */}\n \n {videoData ? (\n <>\n \n\n {/* Video Player */}\n {parse(sanitizedContent, parseOptions)}\n\n setMoveItemModalOpen(true)}\n />\n >\n ) : (\n \n )}\n\n {/* Dicretion box */}\n {videoData?.discretion && (\n \n )}\n\n {/* Found In section */}\n {videoData?.lessons.length > 0 && (\n \n \n Found in\n \n\n \n {videoData.lessons.map(lesson => (\n \n ))}\n \n \n )}\n \n\n {/* Watch Next Column */}\n \n \n \n \n \n \n\n {/* Get Access Modal */}\n goBackToGallery(isOpen)}\n userLoggedIn={userLoggedIn}\n />\n\n {/* Save to folder modal */}\n\n {!!videoData && (\n {\n setMoveItemModalOpen(false)\n reload && window.location.reload()\n }}\n />\n )}\n >\n )\n}\n","import WebFont from 'webfontloader'\nimport { BrowserRouter as Router, Route } from 'react-router-dom'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport { QueryParamProvider } from 'use-query-params'\nimport { AsyncModalFoldersProvider } from 'Packages/folders'\n\nimport { Loading, Toaster } from '@redriverpress/system'\n\nimport ElliiThemeProvider from 'Common/components/ElliiThemeProvider'\nimport { TWENTY_FOUR_HOURS_IN_MS } from 'Common/utils/datetime'\n\nimport VideoPage from './VideoPage'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: false,\n staleTime: TWENTY_FOUR_HOURS_IN_MS,\n },\n },\n})\n\nexport default function App() {\n WebFont.load({\n google: {\n families: ['Open Sans:400,400italic,600,700,800', 'Quicksand:700'],\n },\n })\n\n return (\n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import ReactDOM from 'react-dom'\n\nimport App from '../media/video/App'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const mountPoint = document.getElementById('root')\n\n ReactDOM.render(, mountPoint)\n})\n"],"sourceRoot":""}