@clickview/lite 0.82.0-rc.0 → 0.82.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundles.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-b6ada106d1.min.js",
2
+ "appBundle": "bundle-aff25c8310.min.js",
3
3
  "cssBundle": "lite-app-b4540a3be1.css",
4
4
  "polyfillBundle": "polyfills-909f9fc0c1.min.js"
5
5
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9950],{59950:(e,t,r)=>{r.r(t),r.d(t,{JoinClassroomView:()=>O});var n=r(32735),a=r(80247),l=r(70680),o=r(6044),c=r(50242),i=r(23481),s=r(81886),u=r(20354),m=r(15611),f=r(2786),d=r(16714),b=r(31949),g=r(22902),h=r(79612),v=r(97027),E=r(14070),y=r(97291),p=r(99742);function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?S(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var k=i.T.encloseNamespace("classrooms.joinClassroomResponseDetails");function U(e){var t=C(n.useState(""),2),r=t[0],a=t[1],l=C(n.useState(""),2),o=l[0],c=l[1];return n.useEffect(function(){switch(e.error){case"invalid":a(k("invalidError")),c(k("invalidMessage"));break;case"wrong-school":a(k("wrongSchoolError")),c(k("wrongSchoolMessage"));break;case"not-a-learner":a(k("notALearnerError")),c(k("notALearnerMessage"));break;default:a(k("unknownError")),c(k("unknownMessage"))}},[e.error]),e.error?n.createElement("div",null,n.createElement("img",{src:p.W.AddStudents.JoinClassroomResponse.ERROR,className:"w-50 mb-3 d-block mx-auto"}),n.createElement("div",{className:"text-center h6"},n.createElement("strong",null,r)),n.createElement("div",{className:"text-center mb-3"},o)):n.createElement("div",null,n.createElement("img",{src:p.W.AddStudents.JoinClassroomResponse.SUCCESS,className:"w-50 mb-3 d-block mx-auto"}),n.createElement("div",{className:"text-center h6"},n.createElement("strong",null,k("success"))),n.createElement("div",{className:"text-center mb-3"},k("join"),n.createElement("strong",null,e.classroomName)))}var N=r(88630);const w={logo:"d_Zk6",formContainer:"RrOGB"};function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var j=i.T.encloseNamespace("classrooms.joinClassroom");function O(e){var t,r,i=(0,l.I0)(),p=(0,g.T)().hasPermissions,C=u.a.useBasicFetch(b.N.currentUser());(0,h.M)({title:j("title")});var S=A(n.useState(!1),2),k=S[0],P=S[1],O=A(n.useState(null),2),L=O[0],T=O[1],_=A(n.useState(""),2),x=_[0],G=_[1];function I(e){G(e.classroomName),P(!0)}function R(e){switch(e.status){case c.o.NotFound:T("invalid");break;case c.o.Forbidden:T("wrong-school");break;case c.o.BadRequest:T("not-a-learner");break;default:T("unknown")}P(!0)}return n.useEffect(function(){C.data&&u.a.fetch(i,N.F.checkJoinCode(e.joinCode,function(t){C.data.isAuthenticated?function(){if(!p(d.C.JoinClassroom))return T("not-a-learner"),void P(!0);u.a.fetch(i,N.F.joinClassroom(e.joinCode,I,R))}():s.Q.C$.trigger({application:y.O.DEFAULT,action:E.e.Default.CHALLENGE,params:{redirectUrl:o.Ab.GetCurrentPath()+o.Ab.GetCurrentQueryString(),skipPrompt:!0,customerId:t.customerId}})},R))},[null===(t=C.data)||void 0===t?void 0:t.isAuthenticated]),n.createElement(v.Zf,null,n.createElement("div",{className:"".concat(w.formContainer," m-auto")},n.createElement("div",{className:"".concat(w.logo," mb-4 mx-auto")},n.createElement(f.$S,null)),!k&&n.createElement("div",{className:"text-center p-5"},n.createElement(a.Z,{as:"div",animation:"border",role:"status"})),k&&!L&&n.createElement(U,{classroomName:x}),k&&L&&n.createElement(U,{error:L}),(null===(r=C.data)||void 0===r?void 0:r.isAuthenticated)&&n.createElement(m.F,{className:"btn btn-dark w-100 mt-2 btn-lg",appLink:{application:y.O.STUDENT_FEED,action:E.e.StudentFeed.HOME}},j("enter"))))}},97027:(e,t,r)=>{r.d(t,{Hq:()=>m,x_:()=>f,Zf:()=>b});var n=r(32735),a=r(54610),l=r(4594),o=r(67453),c=r(99742);const i={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,c=[],i=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=l.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var m=[{bgUrl:c.W.LaunchPad.BG_1},{bgUrl:c.W.LaunchPad.BG_2},{bgUrl:c.W.LaunchPad.BG_3},{bgUrl:c.W.LaunchPad.BG_4},{bgUrl:c.W.LaunchPad.BG_5}],f=[{bgUrl:c.W.LaunchPad.PRODUCT.BG_1},{bgUrl:c.W.LaunchPad.PRODUCT.BG_2},{bgUrl:c.W.LaunchPad.PRODUCT.BG_3},{bgUrl:c.W.LaunchPad.PRODUCT.BG_4},{bgUrl:c.W.LaunchPad.PRODUCT.BG_5},{bgUrl:c.W.LaunchPad.PRODUCT.BG_6},{bgUrl:c.W.LaunchPad.PRODUCT.BG_7},{bgUrl:c.W.LaunchPad.PRODUCT.BG_8}];function d(e){switch(e){case l.E.Video:case l.E.Interactive:case l.E.Clip:return i.thumbnail;case l.E.Subject:case l.E.Playlist:return i.cover;case l.E.Series:return i.tallposter;default:return""}}function b(e){var t,r=s(n.useState(!1),2),l=r[0],c=r[1],u=s(n.useState(""),2),m=u[0],b=u[1],g=o.j.createUrl(e.imageUrl,{size:a.h2.Large}),h=f;return n.useEffect(function(){if(!g&&h&&0!==h.length){var e,t=(e=h)[Math.floor(Math.random()*e.length)];t.bgUrl&&b(t.bgUrl)}},[]),n.useEffect(function(){if(g){var e=new Image;return e.onload=function(){return c(!0)},e.src=g,function(){return e.onload=null}}},[]),n.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():n.createElement("div",{className:"".concat(i.left," ").concat(m?"bg-blue d-flex align-items-center":"bg-light")},m?n.createElement("img",{className:"img-fluid",src:m,draggable:!1}):l&&n.createElement(n.Fragment,null,n.createElement("div",{className:i.blur,style:{backgroundImage:"url('".concat(g,"')")}}),n.createElement("div",{className:"".concat(i.imageContainer," ").concat(d(e.objectType))},n.createElement("div",{className:i.imagePosition},n.createElement("img",{className:i.image,src:g,alt:e.title}))))),n.createElement("div",{className:"".concat(i.right," bg-white d-flex flex-column")},n.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(i.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map(function(e,t){return e.hide?n.createElement(n.Fragment,{key:t}):n.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)})),e.children))}}}]);
2
+ //# sourceMappingURL=9950-ed9e86be4a-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9950-ed9e86be4a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/classrooms/components/join-classroom-response-details/JoinClassroomResponseDetails.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/join-classroom/join-classroom.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/join-classroom/JoinClassroomView.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'classrooms.joinClassroomResponseDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface JoinClassroomResponseDetailsProps {\n classroomName?: string;\n error?: 'invalid' | 'wrong-school' | 'not-a-learner' | 'unknown' | null;\n}\n\nexport function JoinClassroomResponseDetails(props: JoinClassroomResponseDetailsProps): JSX.Element {\n const [ error, setError ] = React.useState('');\n const [ message, setMessage ] = React.useState('');\n\n React.useEffect(() => {\n switch (props.error) {\n case 'invalid':\n setError(getPhrase('invalidError'));\n setMessage(getPhrase('invalidMessage'));\n break;\n case 'wrong-school':\n setError(getPhrase('wrongSchoolError'));\n setMessage(getPhrase('wrongSchoolMessage'));\n break;\n case 'not-a-learner':\n setError(getPhrase('notALearnerError'));\n setMessage(getPhrase('notALearnerMessage'));\n break;\n default:\n setError(getPhrase('unknownError'));\n setMessage(getPhrase('unknownMessage'));\n break;\n }\n }, [props.error]);\n\n if (!props.error)\n return (\n <div>\n <img src={ImageUrls.AddStudents.JoinClassroomResponse.SUCCESS} className='w-50 mb-3 d-block mx-auto' />\n <div className='text-center h6'><strong>{getPhrase('success')}</strong></div>\n <div className='text-center mb-3'>{getPhrase('join')}<strong>{props.classroomName}</strong></div>\n </div>\n );\n \n return (\n <div>\n <img src={ImageUrls.AddStudents.JoinClassroomResponse.ERROR} className='w-50 mb-3 d-block mx-auto' />\n <div className='text-center h6'><strong>{error}</strong></div>\n <div className='text-center mb-3'>{message}</div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"d_Zk6\",\"formContainer\":\"RrOGB\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { JoinClassroomResponseDetails } from 'apps/classrooms/components/join-classroom-response-details/JoinClassroomResponseDetails';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { JoinClassroomResponse } from 'apps/classrooms/interfaces/JoinClassroomResponse';\n\nimport styles from './join-classroom.scss';\n\nconst namespace = 'classrooms.joinClassroom';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype Errors = 'invalid' | 'wrong-school' | 'not-a-learner' | 'unknown' | null;\n\ninterface JoinClassroomProps {\n joinCode: string;\n}\n\nexport function JoinClassroomView(props: JoinClassroomProps): React.ReactElement {\n const dispatch = useDispatch();\n\n const { hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const [ isComplete, setIsComplete ] = React.useState(false);\n const [ error, setError ] = React.useState<Errors>(null);\n const [ classroomName, setClassroomName ] = React.useState('');\n\n function onSuccess(resp: JoinClassroomResponse): void {\n setClassroomName(resp.classroomName);\n setIsComplete(true);\n }\n\n function onError(xhr: Xhr): void {\n switch (xhr.status) {\n case HttpStatus.NotFound:\n setError('invalid');\n break;\n case HttpStatus.Forbidden:\n setError('wrong-school');\n break;\n case HttpStatus.BadRequest:\n setError('not-a-learner');\n break;\n default:\n setError('unknown');\n break;\n }\n setIsComplete(true);\n }\n\n function checkCode(): void {\n Flight.fetch(dispatch, ClassroomRequests.checkJoinCode(props.joinCode, resp => {\n if (currentUser.data.isAuthenticated) {\n joinClassroom();\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: {\n redirectUrl: LocationUtils.GetCurrentPath() + LocationUtils.GetCurrentQueryString(),\n skipPrompt: true,\n customerId: resp.customerId\n }\n });\n }, onError));\n }\n\n function joinClassroom(): void {\n if (!hasPermissions(PermissionName.JoinClassroom)) {\n setError('not-a-learner');\n setIsComplete(true);\n return;\n }\n\n Flight.fetch(dispatch, ClassroomRequests.joinClassroom(\n props.joinCode,\n onSuccess,\n onError\n ));\n }\n\n React.useEffect(() => {\n if (!currentUser.data)\n return;\n\n checkCode();\n }, [currentUser.data?.isAuthenticated]);\n\n return (\n <Launchpad>\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!isComplete && <div className='text-center p-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>}\n {isComplete && !error && <JoinClassroomResponseDetails classroomName={classroomName}/>}\n {isComplete && error && <JoinClassroomResponseDetails error={error}/>}\n {currentUser.data?.isAuthenticated &&\n <AppLink\n className='btn btn-dark w-100 mt-2 btn-lg'\n appLink={{\n application: AppChannels.STUDENT_FEED,\n action: Actions.StudentFeed.HOME\n }}\n >\n {getPhrase('enter')}\n </AppLink>\n }\n </div>\n </Launchpad>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nexport const LAUNCHPAD_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.BG_5 }\n];\n\nexport const LAUNCHPAD_PRODUCT_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_5 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_6 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_7 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_8 }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n { bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png' }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = LAUNCHPAD_PRODUCT_FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div\n className={`${styles.left} ${image ? 'bg-blue d-flex align-items-center' : 'bg-light'}`}\n >\n {image ?\n <img className='img-fluid' src={image} draggable={false} /> :\n (showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n )\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["getPhrase","LanguageService","JoinClassroomResponseDetails","props","error","setError","message","setMessage","src","ImageUrls","className","classroomName","JoinClassroomView","dispatch","hasPermissions","usePermissions","currentUser","UserRequests","useSetPageMetadata","title","isComplete","setIsComplete","setClassroomName","onSuccess","resp","onError","xhr","status","HttpStatus","data","ClassroomRequests","joinCode","isAuthenticated","PermissionName","joinClassroom","application","action","params","redirectUrl","skipPrompt","customerId","Launchpad","ClickViewLogo","Spinner","as","animation","role","AppLink","appLink","LAUNCHPAD_FALLBACK_IMAGES","bgUrl","LAUNCHPAD_PRODUCT_FALLBACK_IMAGES","mapObjectTypeToImageClass","objectType","MasterType","showImage","setShowImage","image","setImage","imageUrl","ImageHelper","size","IMAGE_URLS","length","urlLists","Math","floor","random","img","Image","onload","leftComponent","draggable","style","backgroundImage","alt","links","map","link","key","hide","href","url","onClick","text","children"],"sourceRoot":""}