@clickview/lite 0.64.0-rc.0 → 0.64.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 +1 -1
- package/dist/css/{7153-lite-0cc5db0db7.chunk.css → 2962-lite-2002c62a24.chunk.css} +0 -1
- package/dist/css/{1857-lite-324255d395.chunk.css → 6173-lite-911f35513f.chunk.css} +0 -1
- package/dist/css/{2083-lite-6cb1775e12.chunk.css → 7324-lite-238bd550b7.chunk.css} +0 -1
- package/dist/css/{9013-lite-620f218839.chunk.css → 9013-lite-3c31b606c5.chunk.css} +2 -2
- package/dist/languages/en.json +1 -1
- package/dist/scripts/1216-899540dc73-lite.chunk.js +2 -0
- package/dist/scripts/1216-899540dc73-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js +2 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js.map +1 -0
- package/dist/scripts/{2056-84f388df20-lite.chunk.js → 2056-a9e8d17a46-lite.chunk.js} +3 -3
- package/dist/scripts/2056-a9e8d17a46-lite.chunk.js.map +1 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js +2 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js.map +1 -0
- package/dist/scripts/{2564-65e3fc9619-lite.chunk.js → 2564-f5628d4e56-lite.chunk.js} +3 -3
- package/dist/scripts/{2564-65e3fc9619-lite.chunk.js.map → 2564-f5628d4e56-lite.chunk.js.map} +1 -1
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js +2 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js.map +1 -0
- package/dist/scripts/{2788-eca70707c6-lite.chunk.js → 2788-c8ae3be73f-lite.chunk.js} +1 -1
- package/dist/scripts/2788-c8ae3be73f-lite.chunk.js.map +1 -0
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js → 2962-7f2e4412f0-lite.chunk.js} +2 -2
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js.map → 2962-7f2e4412f0-lite.chunk.js.map} +1 -1
- package/dist/scripts/2988-b602b64344-lite.chunk.js +2 -0
- package/dist/scripts/2988-b602b64344-lite.chunk.js.map +1 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js +2 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js.map +1 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js +2 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js.map +1 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js +2 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js.map +1 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js +2 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js.map +1 -0
- package/dist/scripts/{5056-6057435479-lite.chunk.js → 5056-65c739468f-lite.chunk.js} +1 -1
- package/dist/scripts/5056-65c739468f-lite.chunk.js.map +1 -0
- package/dist/scripts/5157-e38b666fce-lite.chunk.js +2 -0
- package/dist/scripts/5157-e38b666fce-lite.chunk.js.map +1 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js +2 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js.map +1 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js +2 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js.map +1 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js +3 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js.map +1 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js +3 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js.map +1 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js +3 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js.map +1 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js +2 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js.map +1 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js +3 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-0f2cef64e5-lite.chunk.js +2 -0
- package/dist/scripts/6919-0f2cef64e5-lite.chunk.js.map +1 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js +2 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js → 7324-ee20e73ac1-lite.chunk.js} +2 -2
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js.map → 7324-ee20e73ac1-lite.chunk.js.map} +1 -1
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js +2 -0
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js.map +1 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js +3 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js.map +1 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js +2 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js.map +1 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js +2 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js.map +1 -0
- package/dist/scripts/8722-a9eac1941c-lite.chunk.js +2 -0
- package/dist/scripts/8722-a9eac1941c-lite.chunk.js.map +1 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js +2 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js.map +1 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js +2 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js +3 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-2e839958ca.min.js +3 -0
- package/dist/scripts/bundle-2e839958ca.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js +0 -2
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js.map +0 -1
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js +0 -2
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js +0 -2
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js.map +0 -1
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js +0 -3
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js.map +0 -1
- package/dist/scripts/2056-84f388df20-lite.chunk.js.map +0 -1
- package/dist/scripts/229-900e650427-lite.chunk.js +0 -2
- package/dist/scripts/229-900e650427-lite.chunk.js.map +0 -1
- package/dist/scripts/2788-eca70707c6-lite.chunk.js.map +0 -1
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js +0 -2
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js.map +0 -1
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js +0 -2
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js.map +0 -1
- package/dist/scripts/3776-0027340c98-lite.chunk.js +0 -2
- package/dist/scripts/3776-0027340c98-lite.chunk.js.map +0 -1
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js +0 -2
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js.map +0 -1
- package/dist/scripts/4667-f3882f2379-lite.chunk.js +0 -2
- package/dist/scripts/4667-f3882f2379-lite.chunk.js.map +0 -1
- package/dist/scripts/5056-6057435479-lite.chunk.js.map +0 -1
- package/dist/scripts/5157-ad13101a6e-lite.chunk.js +0 -2
- package/dist/scripts/5157-ad13101a6e-lite.chunk.js.map +0 -1
- package/dist/scripts/5201-7d3867d027-lite.chunk.js +0 -2
- package/dist/scripts/5201-7d3867d027-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-10e586779d-lite.chunk.js +0 -2
- package/dist/scripts/5595-10e586779d-lite.chunk.js.map +0 -1
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js +0 -3
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js.map +0 -1
- package/dist/scripts/6181-50a39979ec-lite.chunk.js +0 -3
- package/dist/scripts/6181-50a39979ec-lite.chunk.js.map +0 -1
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js +0 -2
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js.map +0 -1
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js +0 -3
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js.map +0 -1
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js +0 -2
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js.map +0 -1
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js +0 -2
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js.map +0 -1
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js +0 -2
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js.map +0 -1
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js +0 -3
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js.map +0 -1
- package/dist/scripts/8022-0656cce655-lite.chunk.js +0 -2
- package/dist/scripts/8022-0656cce655-lite.chunk.js.map +0 -1
- package/dist/scripts/8722-69c1c7a24f-lite.chunk.js +0 -2
- package/dist/scripts/8722-69c1c7a24f-lite.chunk.js.map +0 -1
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js +0 -2
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js.map +0 -1
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js +0 -2
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js.map +0 -1
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js +0 -2
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js +0 -3
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-3d3d127d98.min.js +0 -3
- package/dist/scripts/bundle-3d3d127d98.min.js.map +0 -1
- package/dist/css/{6455-lite-fe0bc6d95f.chunk.css → 6455-lite-c07987d46c.chunk.css} +1 -1
- /package/dist/css/{9155-lite-447d345417.chunk.css → 8465-lite-447d345417.chunk.css} +0 -0
- /package/dist/scripts/{1857-d3af9d98eb-lite.chunk.js.LICENSE.txt → 2056-a9e8d17a46-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2056-84f388df20-lite.chunk.js.LICENSE.txt → 2564-f5628d4e56-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2564-65e3fc9619-lite.chunk.js.LICENSE.txt → 5896-60133bfdad-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5896-5d2f32c59e-lite.chunk.js.LICENSE.txt → 6173-7f9939c29e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6181-50a39979ec-lite.chunk.js.LICENSE.txt → 6181-9d7668c9e4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6623-ebbffb59b3-lite.chunk.js.LICENSE.txt → 6623-84b33c6856-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7443-7c72de0cb9-lite.chunk.js.LICENSE.txt → 7443-4866d0c9ab-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9894-bc34edcd67-lite.chunk.js.LICENSE.txt → 9894-0fba5cf702-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-3d3d127d98.min.js.LICENSE.txt → bundle-2e839958ca.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6181-9d7668c9e4-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/ClassNameHelper.ts","file:///app/packages/libs/shared/src/apps/onboarding/hooks/useOnboardingPathway.ts","file:///app/packages/libs/shared/src/components/launchpad/v2/launchpad-v2.scss","file:///app/packages/libs/shared/src/components/launchpad/v2/LaunchpadV2.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/heading/onboarding-screen-heading.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/heading/OnboardingScreenHeading.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/info/OnboardingScreenInfo.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/progress-bar/OnboardingProgressBar.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/progress-bar/onboarding-progress-bar.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/layout/OnboardingLayout.tsx","file:///app/packages/projects/lite/src/apps/onboarding/hooks/useOnboardingCallbacks.ts","file:///app/packages/projects/lite/src/apps/onboarding/hooks/useOnboardingEventLogger.ts","file:///app/packages/projects/lite/src/apps/sign-up/flight-requests/UpgradeRequests.ts"],"sourcesContent":["type ValidParams = string | boolean | undefined | null;\n\n/**\n * Helper to append classNames.\n * Filters any falsy values before returning classNames.\n * \n * @param ...classNames Array<string | boolean | undefined | null>\n * @returns string\n */\nexport function classNames(...classNames: Array<ValidParams>): string {\n if (!classNames.length) return '';\n\n const filteredClassNames = classNames.filter(className => !!className);\n \n if (!filteredClassNames.length) return '';\n \n return filteredClassNames.join(' ');\n}","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingScreenAppLinks } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenAppLinks';\nimport { OnboardingPathway, OnboardingPathwayHelper } from 'libs/shared/apps/onboarding/utils/OnboardingPathwayHelper';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, CurrentUser, PlaylistCollection, Presentation, User } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { PlaylistCollectionIdentifier } from '../../playlists/interfaces';\n\nexport interface GetPathwayOptions {\n jobTitleOverride?: JobTitles;\n preferredPresentationOverride?: Presentation;\n}\n\nexport function useOnboardingPathway(appLinks: OnboardingScreenAppLinks) {\n const [ hasPlaylist, setHasPlaylist ] = useViewModel<boolean>('has:playlist', null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n\n const presentations = Flight.useBasicFetch<Presentation[]>(\n ClassificationRequests.availablePresentations(PresentationType.Subject)\n );\n const preferredPresentation = Flight.useBasicFetch<Presentation>(\n ClassificationRequests.presentation(PresentationType.Subject)\n );\n const curriculums = Flight.useBasicFetch<Presentation[]>(\n ClassificationRequests.availablePresentations(PresentationType.Curriculum)\n );\n const playlists = Flight.useBasicFetch<PlaylistCollection>(\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier())\n );\n const preferredSubjects = Flight.useBasicFetch<Classification[]>(\n PreferenceRequests.mySubjectPreferences()\n );\n const { hasPermissions } = usePermissions();\n\n React.useEffect(() => {\n if (!playlists.hasCompleted)\n return;\n\n if (hasPlaylist !== !!playlists.data?.data?.length)\n setHasPlaylist(!!playlists.data?.data?.length);\n }, [playlists.hasCompleted]);\n\n const hasLoadedPathway = (\n currentUser.hasCompleted &&\n user.hasCompleted &&\n presentations.hasCompleted &&\n curriculums.hasCompleted &&\n preferredPresentation.hasCompleted &&\n playlists.hasCompleted &&\n preferredSubjects.hasCompleted &&\n hasPlaylist !== null\n );\n\n const { userSettings } = useSettings(null);\n\n function getPathway(options: GetPathwayOptions = {}): OnboardingPathway {\n const jobTitle = options.jobTitleOverride || user.data?.userProfile?.metadata?.jobTitle;\n const presentation = options.preferredPresentationOverride || preferredPresentation.data;\n\n if (!hasLoadedPathway) {\n return {\n screens: {},\n currentScreen: null,\n totalScreens: 0,\n totalScreensInProgressBar: 0,\n hasCompletedAllSteps: false\n };\n }\n\n return OnboardingPathwayHelper.getOnboardingPathway({\n jobTitle,\n userSettings: userSettings.data,\n presentations: presentations.data,\n curriculums: curriculums.data,\n preferredSubjects: preferredSubjects.data,\n preferredPresentation: presentation,\n appLink: ContextService.getCurrentRoute().appLink,\n appLinks,\n masterUser: user.data,\n hasPlaylist,\n hasPermissions,\n currentUser: currentUser.data\n });\n }\n\n return {\n getPathway,\n hasLoadedPathway\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"s6wnJ\",\"leftWithImage\":\"UFQ2T\",\"bgCover\":\"Tp9_3\",\"bgFull\":\"AlF2T\",\"right\":\"eoZzJ\",\"rightContent\":\"RVyLM\",\"narrowContent\":\"INvJ0\",\"logo\":\"YHNgA\",\"buttonContainer\":\"ZW85Q\",\"blur\":\"Mtlg9\",\"imageContainer\":\"NxEjh\",\"imagePosition\":\"NN9cV\",\"image\":\"PkJ8J\",\"thumbnail\":\"y0V3Z\",\"tallposter\":\"Wrg5x\",\"cover\":\"x3h8F\",\"contentBody\":\"aLd5V\",\"contentBodyBase\":\"uQ2rm\"};","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport styles from './launchpad-v2.scss';\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 LaunchpadV2Props {\n}\n\nexport function LaunchpadV2(props: React.PropsWithChildren<LaunchpadV2Props>): JSX.Element {\n return (\n <div className='d-flex'>\n {props.children}\n </div>\n );\n}\n\ninterface LeftPanelProps {\n className?: string;\n}\n\n\nfunction LeftPanel(props: React.PropsWithChildren<LeftPanelProps>): JSX.Element {\n return (\n <div className={`${styles.left} ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface LeftImageProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n fallbackImages: LaunchImage[];\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction LeftImage(props: LeftImageProps): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n React.useEffect(() => {\n if (!props.imageUrl) {\n const image = props.fallbackImages[Math.floor(Math.random() * props.fallbackImages.length)];\n setImage(image.bgUrl);\n return;\n }\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = props.imageUrl;\n return () => img.onload = null;\n }, [props.imageUrl]);\n\n return (\n <div\n className={`${styles.left} ${styles.leftWithImage} ${styles.bgCover} bg-light`}\n style={{ backgroundImage: `url('${image}')` }}\n >\n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${props.imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={props.imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n );\n}\n\ntype ImageSizeType = 'cover' | 'full';\n\ninterface LeftImageWithBackgroundProps {\n imageUrl: string;\n imageSize?: ImageSizeType;\n backgroundColor?: string;\n title?: string;\n}\n\nconst imageSizeMap: {[key in ImageSizeType]: string} = {\n cover: styles.bgCover,\n full: styles.bgFull\n};\n\nfunction LeftImageWithBackground(props: LeftImageWithBackgroundProps): JSX.Element {\n const bgStyles: React.CSSProperties = {\n backgroundImage: `url(\"${props.imageUrl}\")`\n };\n\n if (props.backgroundColor)\n bgStyles.backgroundColor = props.backgroundColor;\n \n return (\n <div\n className={`${styles.left} ${styles.leftWithImage} ${imageSizeMap[props.imageSize || 'cover']} d-flex align-items-center`}\n style={bgStyles}\n title={props.title}\n />\n );\n}\n\ninterface RightPanelProps {\n className?: string;\n}\n\nexport function RightPanel(props: React.PropsWithChildren<RightPanelProps>): JSX.Element {\n return (\n <div className={`${styles.right} ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderProps {\n logoComponent?: () => JSX.Element;\n}\n\n\nfunction Header(props: React.PropsWithChildren<HeaderProps>): JSX.Element {\n const LogoComponent = props?.logoComponent || ClickViewLogo;\n \n return (\n <div className='position-relative'>\n <div className={`${styles.logo} position-absolute`}>\n <LogoComponent />\n </div>\n {props.children}\n </div>\n );\n}\n\ninterface ContentProps {\n className?: string;\n}\n\nfunction Content(props: React.PropsWithChildren<ContentProps>): JSX.Element {\n return (\n <div className={classNames(styles.rightContent, 'd-flex flex-column justify-content-center h-100', props?.className)}>\n {props.children}\n </div>\n );\n}\n\ninterface ContentBodyProps {\n className?: string;\n width?: 'base' | 'full';\n}\n\nconst widthClassNameMap: {[key in ContentBodyProps['width']]: string} = {\n base: styles.contentBodyBase,\n full: ''\n};\n\nfunction ContentBody(props: React.PropsWithChildren<ContentBodyProps>): JSX.Element {\n const widthClassName = widthClassNameMap[props.width || 'base'];\n return (\n <div className={classNames(styles.contentBody, widthClassName, 'm-auto p-3', props.className)}>\n {props.children}\n </div>\n );\n}\n\ninterface NarrowContentProps {\n className?: string;\n}\n\nLaunchpadV2.NarrowContent = NarrowContent;\nfunction NarrowContent(props: React.PropsWithChildren<NarrowContentProps>): JSX.Element {\n return (\n <div className={`${styles.narrowContent} mx-auto w-100 ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface ButtonsProps {\n className?: string;\n}\n\nfunction Buttons(props: React.PropsWithChildren<ButtonsProps>): JSX.Element {\n return (\n <div className={classNames('position-fixed bg-white d-flex align-items-center', styles.buttonContainer, props?.className)}>\n {props.children}\n </div>\n );\n}\n\n/**\n * Intended ussage below:\n * \n * <LaunchpadV2>\n * <LaunchpadV2.Left>\n * // Your LHS content here\n * </LaunchpadV2.Left>\n * <LaunchpadV2.Right>\n * <LaunchpadV2.Header />\n * <LaunchpadV2.Content>\n * // Can omit this if it needs to be full width\n * <LaunchpadV2.ContentBody width=\"...\">\n * // Your main content here\n * </LaunchpadV2.ContentBody>\n * </LaunchpadV2.Content>\n * \n * // Omit this and put your buttons in content\n * // if you want your buttons immediately under your content rather \n * // than at the bottom of the screen\n * <LaunchpadV2.Buttons />\n * \n * </LaunchpadV2.Right>\n * </LaunchpadV2>\n * \n * - Sha\n */\n\nLaunchpadV2.Left = LeftPanel;\nLaunchpadV2.LeftImage = LeftImage;\nLaunchpadV2.LeftImageWithBackground = LeftImageWithBackground;\nLaunchpadV2.Right = RightPanel;\nLaunchpadV2.Header = Header;\nLaunchpadV2.Content = Content;\nLaunchpadV2.ContentBody = ContentBody;\nLaunchpadV2.Buttons = Buttons;\n","// extracted by mini-css-extract-plugin\nexport default {\"heading\":\"Y1xND\"};","import React from 'react';\n\nimport styles from './onboarding-screen-heading.scss';\n\ninterface OnboardingScreenHeadingProps {\n className?: string;\n}\n\nexport function OnboardingScreenHeading(props: React.PropsWithChildren<OnboardingScreenHeadingProps>): JSX.Element {\n return (\n <h1 className={`${styles.heading} ${props.className}`}>\n {props.children}\n </h1>\n );\n}","import React from 'react';\n\ninterface OnboardingScreenInfoProps {\n className?: string;\n}\n\nexport function OnboardingScreenInfo(props: React.PropsWithChildren<OnboardingScreenInfoProps>): JSX.Element {\n return (\n <p className={props.className}>\n {props.children}\n </p>\n );\n}","import React from 'react';\n\nimport { OnboardingPathway, OnboardingPathwayHelper } from 'libs/shared/apps/onboarding/utils/OnboardingPathwayHelper';\n\nimport styles from './onboarding-progress-bar.scss';\n\ninterface OnboardingProgressBarProps {\n pathway: OnboardingPathway;\n}\n\nexport function OnboardingProgressBar(props: OnboardingProgressBarProps): JSX.Element {\n /**\n * We only want to generate the progress bar once per view, otherwise the bar\n * may change out of sync with the current screen after switching pathways.\n */\n const {\n totalScreensInProgressBar,\n currentStepProgressBarNumber,\n progressBarPercentage,\n showProgressBar\n } = React.useMemo(() => OnboardingPathwayHelper.getProgress(props.pathway), []);\n\n if (!showProgressBar)\n return <></>;\n\n return (\n <div className={`${styles.progressBar} position-absolute rounded-pill bg-light-blue d-flex align-items-center`}>\n <div className={styles.currentStep}>\n {currentStepProgressBarNumber} / {totalScreensInProgressBar}\n </div>\n <div className='flex-grow-1 h-50'>\n <div className='h-100 rounded-pill bg-green' style={{ width: `${progressBarPercentage}%` }} />\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"progressBar\":\"AZBhg\",\"currentStep\":\"fWxc8\"};","import React from 'react';\n\nimport { useOnboardingPathway } from 'libs/shared/apps/onboarding/hooks/useOnboardingPathway';\nimport { LaunchpadV2 } from 'libs/shared/components/launchpad/v2/LaunchpadV2';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\n\nimport { OnboardingProgressBar } from '../progress-bar/OnboardingProgressBar';\n\nconst namespace = 'onboarding.onboardingLayout';\n\ninterface OnboardingLayoutProps {\n namespace?: string;\n}\n\nexport function OnboardingLayout(props: React.PropsWithChildren<OnboardingLayoutProps>): JSX.Element {\n const { hasLoadedPathway } = useOnboardingPathway(getOnboardingAppLinks());\n\n if (!hasLoadedPathway)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={props.namespace}>\n <LaunchpadV2>\n {props.children}\n </LaunchpadV2>\n </LanguageNamespaceContext.Provider>\n );\n}\n\ninterface LeftPanelProps {\n className?: string;\n}\n\nfunction LeftPanel(props: React.PropsWithChildren<LeftPanelProps>): JSX.Element {\n return (\n <LaunchpadV2.Left className={props.className}>\n {props.children}\n </LaunchpadV2.Left>\n );\n}\n\ntype SharedRightPanelProps = {\n className?: string;\n};\n\nexport type OnboardingRightPanelProps = SharedRightPanelProps & ({\n hasCustomButtons: false;\n onClickComeBackLater?: () => void;\n onClickAreYouATeacher?: () => void;\n onClickBack: () => void;\n onClickNext: () => Promise<void>;\n disableNext?: boolean;\n nextText?: string;\n} | {\n hasCustomButtons: true;\n});\n\nfunction RightPanel(props: React.PropsWithChildren<OnboardingRightPanelProps>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const appLinks = getOnboardingAppLinks();\n const { getPathway, hasLoadedPathway } = useOnboardingPathway(appLinks);\n const pathway = getPathway();\n\n async function onClickNext(): Promise<void> {\n if (props.hasCustomButtons === true)\n return;\n\n setShowSpinner(true);\n\n try {\n await props.onClickNext();\n } catch {\n setShowSpinner(false);\n }\n }\n\n if (!hasLoadedPathway)\n return <></>;\n\n const currentScreenInfo = pathway.screens[pathway.currentScreen];\n\n return (\n <LaunchpadV2.Right className={props.className}>\n <LaunchpadV2.Header>\n <OnboardingProgressBar pathway={pathway} />\n </LaunchpadV2.Header>\n\n <LaunchpadV2.Content>\n {props.children}\n </LaunchpadV2.Content>\n\n {props.hasCustomButtons === false && (\n <LaunchpadV2.Buttons>\n {props.onClickComeBackLater && (\n <button className='btn btn-link btn-lg text-info' onClick={props.onClickComeBackLater}>\n <Text namespace={namespace} phrase='comeBackLater' />\n </button>\n )}\n\n {props.onClickAreYouATeacher && (\n <button className='btn btn-link btn-lg text-info text-start' onClick={props.onClickAreYouATeacher}>\n <Text namespace={namespace} phrase='areYouATeacher' />\n </button>\n )}\n\n <div className='d-flex ms-auto'>\n {!!currentScreenInfo?.previous && (\n <button className='btn btn-outline-dark btn-lg me-2' onClick={props.onClickBack}>\n <Text namespace={namespace} phrase='back' />\n </button>\n )}\n <SpinnerButton\n className={`${props.disableNext ? 'disabled' : ''}`}\n onClick={onClickNext}\n disabled={props.disableNext}\n showSpinner={showSpinner}\n variant='dark'\n size='lg'\n >\n {props.nextText ? (\n props.nextText\n ) : (\n <Text\n namespace={namespace}\n phrase={\n !currentScreenInfo?.next\n ? 'finish'\n : currentScreenInfo?.next === currentScreenInfo?.previous\n ? 'save'\n : 'next'}\n />\n )}\n </SpinnerButton>\n </div>\n </LaunchpadV2.Buttons>\n )}\n </LaunchpadV2.Right>\n );\n}\n\nOnboardingLayout.Left = LeftPanel;\nOnboardingLayout.Right = RightPanel;","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { GetPathwayOptions, useOnboardingPathway } from 'libs/shared/apps/onboarding/hooks/useOnboardingPathway';\nimport { OnboardingPathwayHelper } from 'libs/shared/apps/onboarding/utils/OnboardingPathwayHelper';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useOnboardingEventLogger } from 'apps/onboarding/hooks/useOnboardingEventLogger';\nimport { getOnboardingAppLinks, onFinishOnboarding } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\n\nconst namespace = 'onboarding.hooks';\n\ninterface CompleteStepOptions extends GetPathwayOptions {\n isExiting?: boolean;\n}\n\ninterface ExitStepOptions {\n hasLoader?: boolean;\n}\n\nexport function useOnboardingCallbacks(redirectUrl: string) {\n const appLinks = getOnboardingAppLinks(redirectUrl);\n const { getPathway } = useOnboardingPathway(appLinks);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const pathway = getPathway();\n const screenConfig = OnboardingScreenConfigs[pathway.currentScreen];\n const alerts = useAlerts();\n\n const { logEvent } = useOnboardingEventLogger();\n\n const { updateSettingAsync } = useSettings(screenConfig?.analyticsLocation);\n\n async function completeStepAsync(options: CompleteStepOptions = { isExiting: false }): Promise<void> {\n await updateSettingAsync(currentUser.data.id, {\n name: screenConfig?.setting,\n value: true,\n kind: SettingKind.Permanent\n });\n\n if (options.isExiting) {\n exitOnboarding({ hasLoader: true });\n return;\n }\n\n const pathway = getPathway(options);\n\n const currentNode = pathway.screens[pathway.currentScreen];\n const nextScreenId = currentNode?.next;\n\n if (!nextScreenId) {\n completeOnboarding();\n return;\n }\n\n const nextAppLink = OnboardingPathwayHelper.getNextAppLink(pathway, appLinks);\n Core.AppLinkHelper.trigger(nextAppLink);\n }\n\n function onSaveError(): void {\n alerts.error(LanguageService.getPhrase(namespace, 'saveError'));\n }\n\n function onClickBack(): void {\n logEvent(UserAction.Click, OnboardingDescriptor.Back);\n\n const previousAppLink = OnboardingPathwayHelper.getPreviousAppLink(pathway, appLinks);\n Core.AppLinkHelper.trigger(previousAppLink);\n }\n\n function exitOnboarding(options: ExitStepOptions = { hasLoader: false }): void {\n logEvent(UserAction.Click, OnboardingDescriptor.ComeBackLater);\n\n updateSettingAsync(currentUser.data.id, {\n name: SettingName.HasExitedOnboarding,\n value: true,\n kind: SettingKind.Permanent\n }).then(() => {\n if (options.hasLoader) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.ONBOARDING,\n action: Actions.Onboarding.COMPLETED_LOADER,\n params: { redirectUrl }\n });\n return;\n }\n\n onFinishOnboarding(redirectUrl);\n });\n }\n\n function completeOnboarding(): void {\n logEvent(UserAction.Complete, OnboardingDescriptor.Complete);\n\n updateSettingAsync(currentUser.data.id, {\n name: SettingName.HasCompletedOnboardingV2,\n value: true,\n kind: SettingKind.Permanent\n }).then(() => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.ONBOARDING,\n action: Actions.Onboarding.COMPLETED_LOADER,\n params: { redirectUrl }\n });\n });\n }\n\n return {\n onClickBack,\n exitOnboarding,\n onSaveError,\n completeStepAsync,\n completeOnboarding\n };\n}","import { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { GetPathwayOptions, useOnboardingPathway } from 'libs/shared/apps/onboarding/hooks/useOnboardingPathway';\nimport { OnboardingPathwayHelper } from 'libs/shared/apps/onboarding/utils/OnboardingPathwayHelper';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useIsKDM } from 'libs/shared/hooks/UseIsKdm';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\nimport { Prospect } from 'libs/shared/interfaces/models/Prospect';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { UpgradeRequests } from 'apps/sign-up/flight-requests/UpgradeRequests';\n\nimport { useIsTertiary } from './useIsTertiary';\n\nexport function useOnboardingEventLogger() {\n const appLinks = getOnboardingAppLinks();\n const { getPathway } = useOnboardingPathway(appLinks);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(UserRequests.user(currentUser.data.id));\n const prospect = Flight.useBasicFetch<Prospect>(UpgradeRequests.currentProspect());\n\n const isKDM = useIsKDM();\n const isTertiary = useIsTertiary();\n\n const pathwayName = isKDM ? 'kdm' : 'teacher';\n\n function logEvent(\n actionType: UserAction,\n descriptor: OnboardingDescriptor,\n additionalData: HashObject = {},\n pathwayOptions: GetPathwayOptions = {}\n ): void {\n const pathway = getPathway(pathwayOptions);\n const screenConfig = OnboardingScreenConfigs[pathway.currentScreen];\n\n const currentProgress = OnboardingPathwayHelper.getProgress(pathway);\n\n const currentNode = pathway.screens[pathway.currentScreen];\n const nextScreenId = currentNode?.next;\n const previousScreenId = currentNode?.previous;\n\n const userData = {\n jobTitle: user.data?.userProfile?.metadata?.jobTitle,\n prospectId: prospect.data?.id\n };\n\n AnalyticsHelper.logUserAction({\n currentScreen: screenConfig?.id,\n nextScreen: nextScreenId,\n previousScreen: previousScreenId,\n progress: currentProgress,\n pathway: pathwayName,\n isTertiary,\n ...userData,\n ...OnboardingPathwayHelper.getOnboardingScreenStates(pathway),\n ...additionalData\n }, {\n actionType,\n descriptor,\n location: screenConfig?.analyticsLocation,\n entity: EntityType.User\n });\n }\n\n return { logEvent };\n}","import { Flight } from 'libs/common/flight';\n\nexport const UpgradeRequests = {\n currentProspect(): Flight.Request {\n return {\n url: '/api/prospects/current',\n key: 'prospect:current'\n };\n },\n getLookups(prospectId: string): Flight.Request {\n return {\n url: `/api/prospects/${prospectId}/lookups`,\n key: `prospect:${prospectId}`\n };\n }\n};"],"names":["classNames","length","filteredClassNames","filter","className","join","useOnboardingPathway","appLinks","hasPlaylist","setHasPlaylist","currentUser","user","data","isAuthenticated","id","presentations","preferredPresentation","curriculums","playlists","preferredSubjects","hasPermissions","hasCompleted","hasLoadedPathway","userSettings","getPathway","options","jobTitle","jobTitleOverride","userProfile","metadata","presentation","preferredPresentationOverride","appLink","masterUser","screens","currentScreen","totalScreens","totalScreensInProgressBar","hasCompletedAllSteps","mapObjectTypeToImageClass","objectType","MasterType","LaunchpadV2","props","children","imageSizeMap","cover","full","widthClassNameMap","base","NarrowContent","Left","LeftImage","showImage","setShowImage","image","setImage","imageUrl","img","Image","onload","src","fallbackImages","Math","floor","random","bgUrl","style","backgroundImage","alt","title","LeftImageWithBackground","bgStyles","backgroundColor","imageSize","Right","Header","LogoComponent","logoComponent","ClickViewLogo","Content","ContentBody","widthClassName","width","Buttons","OnboardingScreenHeading","OnboardingScreenInfo","OnboardingProgressBar","OnboardingPathwayHelper","pathway","currentStepProgressBarNumber","progressBarPercentage","showProgressBar","namespace","OnboardingLayout","value","showSpinner","setShowSpinner","currentScreenInfo","hasCustomButtons","onClickComeBackLater","onClick","Text","phrase","onClickAreYouATeacher","previous","onClickBack","SpinnerButton","disableNext","onClickNext","disabled","variant","size","nextText","next","useOnboardingCallbacks","redirectUrl","screenConfig","alerts","logEvent","updateSettingAsync","analyticsLocation","exitOnboarding","hasLoader","name","kind","then","application","action","params","completeOnboarding","previousAppLink","onSaveError","error","completeStepAsync","isExiting","setting","currentNode","nextAppLink","useOnboardingEventLogger","prospect","isKDM","isTertiary","pathwayName","actionType","descriptor","additionalData","currentProgress","nextScreenId","previousScreenId","userData","prospectId","nextScreen","previousScreen","progress","location","entity","UpgradeRequests","currentProspect","url","key","getLookups"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6455],{71553:(e,t,n)=>{n.d(t,{I:()=>i});var a=n(99940),r=n(62875);function s(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var i={interactiveResultSet:function(e,t,n,i,c,l,o,u){return{url:c?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),i),data:s(n,i),type:a.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:l,error:o,always:u}},mark:function(e,t,n,r,s,i,c){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(r.resultId),type:a.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:s,error:i,always:c}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:a.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:a.k.POST,normalize:!1}}}},41196:(e,t,n)=>{n.d(t,{W:()=>c});var a=n(20354),r=n(71553),s=n(20768),i=n(31949);function c(e,t,n){var c,l=a.a.useBasicFetch(i.N.currentUser()),o=a.a.useBasicFetch(!!e&&s.b.interactiveMetadata(e)),u=a.a.useBasicFetch(!!(null===(c=o.data)||void 0===c?void 0:c.interactiveId)&&s.b.interactive(o.data.interactiveId)),m=!!l.data&&!!u.data&&!!t;return a.a.useBasicFetch(m&&r.I.interactiveResultSet(o.data.interactiveId,o.data.id,l.data,t,n))}},39157:(e,t,n)=>{n.d(t,{HI:()=>d,R6:()=>o,Rt:()=>g,UU:()=>m,Zs:()=>u,nq:()=>p});var a=n(75896),r=n(94892),s=n(28972),i=n(8246),c=n(83140),l=n(80845);function o(e,t,n){var s={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},i=(0,l.Q)(e).length;t.students.forEach((function(t){var c=Object.assign(Object.assign({},t),{summary:g(e,t)});c.summary.awaitingMarking?s.markingRequired.push(c):a.m.last(t.results).attempts.length===i?(s.completed.push(c),c.summary.percentCorrect>=((null==n?void 0:n.HIGH)||r.i.HIGH)&&s.highScore.push(c),c.summary.percentCorrect<((null==n?void 0:n.MODERATE)||r.i.MODERATE)&&s.lowScore.push(c)):s.notCompleted.push(c)}));var c=a.m.sortBy(s.lowScore,(function(e){return e.summary.percentCorrect})),o=a.m.sortBy(s.highScore,(function(e){return-e.summary.percentCorrect}));return Object.assign(Object.assign({},s),{lowScore:c,highScore:o})}function u(e,t){return(0,l.Wn)(e).find((function(e){return e.id.toString()===t.toString()}))}function m(e){return"".concat(e.questionId,":").concat(e.resultId)}function d(e,t,n){var a=(0,l.j_)(t),r=(0,l.f6)(e,a);return(null==r?void 0:r.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Correct})))?i.N.Correct:(null==r?void 0:r.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Incorrect})))?i.N.Incorrect:void 0}function p(e,t){var n=t.students.length,a=0,r=0,i=0,o=0,u=0;return t.students.forEach((function(t){var n=(0,l.j_)(t);if(n){u+=t.results.length;var m=c.A.isInteractionCorrect(e,n);m===s.w.Correct&&a++,m===s.w.UnAnswered&&i++,m===s.w.AwaitingMarking&&o++,m!==s.w.UnAnswered&&r++}})),{percentCorrect:n>0?a/n:0,correct:a,answered:r,unanswered:i,awaitingMarking:o,attempts:u}}function g(e,t){var n=(0,l.j_)(t),a=(0,l.Q)(e),r=a.length,i=0,o=0;a.forEach((function(e){var t=c.A.isInteractionCorrect(e,n);t===s.w.Correct&&i++,t===s.w.AwaitingMarking&&o++}));var u=r>0?i/r:0,m=new Set(a.map((function(e){return e.id}))),d=n.attempts.filter((function(e){var t;return!!m.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length;return{answered:n.attempts.length,attempts:t.results.length,unanswered:r-d,percentCorrect:u,correct:i,awaitingMarking:o}}},28972:(e,t,n)=>{var a;n.d(t,{w:()=>a}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(a||(a={}))},8246:(e,t,n)=>{var a;n.d(t,{N:()=>a}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(a||(a={}))},83140:(e,t,n)=>{n.d(t,{A:()=>v});var a=n(28972),r=n(8246),s=n(40424);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function c(e,t,n){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(){return a.w.NotApplicable}function o(e,t){var n=e.actionableItems.filter((function(e){return e.isCorrect}));return n.every((function(e){return!t(e.id)}))?a.w.UnAnswered:n.every((function(e){var n;return e.name.trim().toLowerCase()===(null===(n=t(e.id))||void 0===n?void 0:n.trim().toLowerCase())}))?a.w.Correct:a.w.Incorrect}function u(e,t){return e.actionableItems.every((function(e){return!t(e.id)}))?a.w.UnAnswered:e.actionableItems.filter((function(e){return e.isCorrect})).every((function(e){var n,a=t(e.id);return(null==a?void 0:a.toString())===(null===(n=e.id)||void 0===n?void 0:n.toString())||a===e.name}))?a.w.Correct:a.w.Incorrect}function m(e,t){return function(n){var a=t.attempts.find((function(t){return t.id===e.id}));return null==a?void 0:a.answers.find((function(e){return e.id===n}))}}function d(e,t){var n=m(e,t);return u(e,(function(e){var t=n(e);return null==t?void 0:t.text}))}function p(e,t){return function(e,t){var n;return e.actionableItems.forEach((function(e){var s=t(e.id);n=s?s.status!==r.N.Correct?s.status!==r.N.Incorrect?a.w.AwaitingMarking:a.w.Incorrect:a.w.Correct:a.w.UnAnswered})),n}(e,m(e,t))}var g=c(c(c(c(c(c(c({},s.Z9.Annotation,l),s.Z9.Image,l),s.Z9.MissingWord,(function(e,t){var n=m(e,t);return o(e,(function(e){var t=n(e);return null==t?void 0:t.text}))})),s.Z9.MultipleChoice,d),s.Z9.ShortAnswer,p),s.Z9.TrueOrFalse,d),s.Z9.Illustration,p),v={notApplicable:l,awaitingMarking:function(){return a.w.AwaitingMarking},isMissingWordCorrect:o,isMultipleChoiceCorrect:u,isInteractionCorrect:function(e,t){return(0,g[e.typeId])(e,t)}}},80845:(e,t,n)=>{n.d(t,{Q:()=>o,Wn:()=>i,f6:()=>l,j_:()=>c});var a=n(75896),r=n(40424);function s(e){return e.typeId!==r.Z9.Annotation&&e.typeId!==r.Z9.Image}function i(e){return a.m.flatten(e.timepoints.map((function(e){return e.interactions})))}function c(e){return a.m.last(e.results)}function l(e,t){return a.m.findWhere(null==t?void 0:t.attempts,{id:e})}function o(e){return i(e).filter(s)}},59602:(e,t,n)=>{n.r(t),n.d(t,{InteractiveInsightsOverviewView:()=>Ue});var a=n(32735),r=n(23481),s=n(2948),i=n(20354),c=n(75896),l=n(25216),o=n(21976),u=n(70072),m=n(83345),d=n(35223);const p={tealChart:"lZZf0",grayChart:"wJQc4"};function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function v(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||f(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var b="shared.insightAverageAttempts",y=r.T.encloseNamespace(b);function E(e){var t,n,r=function(){var t=e.students.reduce((function(e,t){var n,a,r,s=t.summary.attempts.toString();return s in e||Object.assign(e,(n={},r=0,(a=function(e){var t=function(e){if("object"!=g(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=g(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(a=s))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n)),e[s]++,e}),{});return Object.keys(t).length?t:{0:0}}(),s=Math.max.apply(Math,v(Object.keys(r).map((function(e){return r[e]})))),i=Object.keys(r).reduce((function(e,t){return r[t]===s?[].concat(v(e),[t]):e}),[]),c=(t=0===r[0],{categories:Object.keys(r),series:[{type:"column",color:r[0]?"#EAEAEA":"#40C2BB",borderRadius:4,dataLabels:{enabled:!t,style:u.d,inside:!1,overflow:"allow",crop:!1},data:Object.keys(r).map((function(e){var n=0!==s&&r[e]===s;return{className:"".concat(t?p.grayChart:p.tealChart," ").concat(r[e]!==s&&0!==r[e]?"opacity-25":""),borderWidth:n?2:0,borderColor:n?"black":"",y:r[e]}}))}]});return a.createElement(l.L,{title:y("title"),svgName:d.vn.Refresh,svgClassName:"bg-light-purple text-purple"},a.createElement("p",null,i.length?a.createElement(m.x,{namespace:b,phrase:"averageAttempts",options:{smartCount:(n=Object.entries(r).reduce((function(e,t){var n,a,r=(a=2,function(e){if(Array.isArray(e))return e}(n=t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,s,i,c=[],l=!0,o=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=s.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(n,a)||f(n,a)||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.")}()),s=r[0],i=r[1];return e.totalAttempts+=+s*i,e.totalUsers+=i,e}),{totalAttempts:0,totalUsers:0}),0===n.totalUsers?0:Math.round(n.totalAttempts/n.totalUsers*100)/100)}}):a.createElement(m.x,{namespace:b,phrase:"noAttempts"})),a.createElement("div",{className:"mt-auto"},a.createElement(o.x,{label:y("attempts"),chartData:c})))}const k={redChart:"G7zOw",yellowChart:"k34mm",greenChart:"vBneA",blueChart:"RPTWm",grayChart:"k4JFZ",borderDark:"LWor3"};var N="shared.insightAverageScore",w=r.T.encloseNamespace(N);function A(e){return a.createElement(l.L,{title:w("title"),svgName:d.vn.Analytics,svgClassName:"bg-light-orange text-orange"},a.createElement("p",null,e.students.length?a.createElement(m.x,{namespace:N,phrase:"averageScore",options:(s=e.students.map((function(e){return e.summary.percentCorrect})),i=s.reduce((function(e,t){return e+t}),0)/s.length,u=c.m.last(c.m.last(e.students).results).attempts.length,{averageScore:Math.round(u*i),totalQuestions:u,averagePercentage:(100*i).toFixed(1)})}):a.createElement(m.x,{namespace:N,phrase:"noAnswers"})),a.createElement(o.x,{label:"".concat(w("studentScores")," (%)"),chartData:(t=Array(11).fill(0),n=e.students.reduce((function(e,t){return e[Math.floor(10*t.summary.percentCorrect)]++,e}),t),r=["0","10","20","30","40","50","60","70","80","90","100"],{categories:r,series:[{type:"column",color:"#4E9ACE",borderRadius:4,data:n.map((function(e,t){var n=Number(r[t]);return{className:"".concat(function(e,t){return 0===t?k.grayChart:e<50?k.redChart:e<70?k.yellowChart:e<90?k.greenChart:k.blueChart}(n,e)),y:e}}))}]})}));var t,n,r,s,i,u}var I=n(461),C=r.T.encloseNamespace("shared.insightCompletedStudents");function S(e){return a.createElement(l.L,{title:C("title"),svgName:d.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},a.createElement(I.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:C("completedStudents"),appLink:e.resultsAppLink,appLinkText:C("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var O=n(42642),U=n(39157),j=n(36848),L=n(86572),M=n(40782),T=n(80845),x="shared.insightEasiestQuestion",R=r.T.encloseNamespace(x);function B(e){var t,n=a.useMemo((function(){return t=e.interactive,n=e.results,a=(0,T.Q)(t).map((function(e){return Object.assign(Object.assign({},e),{resultsSummary:(0,U.nq)(e,n)})})).filter((function(e){return!!e.resultsSummary.answered&&!e.resultsSummary.awaitingMarking})),r=c.m.sortBy(a,(function(e){return e.resultsSummary.percentCorrect})),c.m.last(r);var t,n,a,r}),[e.results.students.length]);return a.createElement(l.L,{title:R("title"),svgName:d.vn.StarOutline,svgClassName:"bg-light-blue text-blue"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement(M.O,{percentage:null===(t=null==n?void 0:n.resultsSummary)||void 0===t?void 0:t.percentCorrect,layout:M.I.LabelInside}),n?a.createElement("div",{className:"d-flex ms-2"},a.createElement(L.y,{interaction:n,iconClassName:"flex-shrink-0"})):a.createElement("span",{className:"ms-2"},R("noAnswers"))),n&&a.createElement(j.F,{appLink:Object.assign(Object.assign({},e.questionsAppLink),{params:Object.assign(Object.assign({},e.questionsAppLink.params),{sortBy:"score_desc"})}),className:"text-info"},a.createElement(m.x,{namespace:x,phrase:"viewQuestions"})))}var q="shared.insightHardestQuestion",P=r.T.encloseNamespace(q);function _(e){var t,n=a.useMemo((function(){return t=e.interactive,n=e.results,a=(0,T.Q)(t).map((function(e){return Object.assign(Object.assign({},e),{resultsSummary:(0,U.nq)(e,n)})})).filter((function(e){return!!e.resultsSummary.answered&&!e.resultsSummary.awaitingMarking})),r=c.m.sortBy(a,(function(e){return e.resultsSummary.percentCorrect})),c.m.first(r);var t,n,a,r}),[e.results.students.length]);return a.createElement(l.L,{title:P("title"),svgName:d.vn.QuestionMark,svgClassName:"bg-light-orange text-orange"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement(M.O,{percentage:null===(t=null==n?void 0:n.resultsSummary)||void 0===t?void 0:t.percentCorrect,layout:M.I.LabelInside}),n?a.createElement("div",{className:"d-flex ms-2"},a.createElement(L.y,{interaction:n,iconClassName:"flex-shrink-0"})):a.createElement("span",{className:"ms-2"},P("noAnswers"))),n&&a.createElement(j.F,{appLink:Object.assign(Object.assign({},e.questionsAppLink),{params:Object.assign(Object.assign({},e.questionsAppLink.params),{sortBy:"score_asc"})}),className:"text-info"},a.createElement(m.x,{namespace:q,phrase:"viewQuestions"})))}var F=n(94652),H=r.T.encloseNamespace("shared.insightHighScoringStudents");function W(e){return a.createElement(l.L,{title:H("title"),svgName:d.vn.Trophy,svgClassName:"bg-light-teal text-teal",count:e.students.length},a.createElement(I.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.greenChartImageUrl,description:H(e.completed.length?"noStudents":"highScore"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:Object.assign(Object.assign({},e.resultsAppLink.params),{sortBy:"score_desc"})}),appLinkText:H("viewByHighest"),anonymiseUsers:e.anonymiseUsers}))}var Z=r.T.encloseNamespace("shared.insightLowScoringStudents");function Q(e){return a.createElement(l.L,{title:Z("title"),svgName:d.vn.Hand,svgClassName:"bg-light-red text-red",count:e.students.length},a.createElement(I.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.completed.length?e.heartImageUrl:e.redChartImageUrl,description:Z(e.completed.length?"doingWell":"lowScore"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:Object.assign(Object.assign({},e.resultsAppLink.params),{sortBy:"score_asc"})}),appLinkText:Z("viewByLowest"),anonymiseUsers:e.anonymiseUsers}))}var D=r.T.encloseNamespace("shared.insightMarkingRequired");function G(e){return a.createElement(l.L,{title:D("title"),svgName:d.vn.Hand,svgClassName:"bg-light-blue text-blue",count:e.students.length},a.createElement(I.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:D("studentsRequireMarking"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:{filterBy:"marking_required"}}),appLinkText:D("viewAll"),anonymiseUsers:e.anonymiseUsers}))}function z(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?V(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var K=r.T.encloseNamespace("shared.insightNotCompletedStudents");function J(e){var t,n,r,s=(t=e.markingRequiredStudents.map((function(e){return null==e?void 0:e.user.id})),n=e.completedStudents.map((function(e){return null==e?void 0:e.user.id})),r=e.classroomStudents.filter((function(e){return!t.includes(e.id)&&!n.includes(e.id)})),c.m.uniq([].concat(z(e.notCompletedStudents.map((function(e){return e.user}))),z(r)),"id"));return a.createElement(l.L,{title:K("title"),svgName:d.vn.Puzzle,svgClassName:"bg-light-teal text-teal",count:s.length},a.createElement(I.y,{students:s,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:K("completed"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:"not_completed"}),appLinkText:K("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var $=n(41196),Y=n(26025),X=n(74901),ee=n(40003),te=n(30439),ne=n(94892),ae=n(38143),re=n(39151),se=n(20768),ie=n(31949),ce=n(17913),le=n(91286),oe=n(93322),ue=n(79612),me=n(99742),de=n(88630),pe=n(10874),ge=n(25419),ve="lite.insightsMask";function fe(e){return a.createElement("div",{className:"".concat(e.requiresMarking&&ge.Z.mask," position-relative")},a.createElement("div",{className:e.requiresMarking?"position-absolute top-0":""},e.children),a.createElement("div",{className:e.requiresMarking?"".concat(ge.Z.backdrop," d-flex flex-column align-items-center justify-content-start py-5"):""},!!e.requiresMarking&&a.createElement("div",{className:"text-center w-50"},a.createElement("img",{src:me.W.Insights.MARKING_RESPONSES,className:"mb-3",width:288}),a.createElement("h2",{className:"h3 mb-3"},a.createElement(m.x,{namespace:ve,phrase:"markHeading"})),a.createElement("p",{className:"mb-3"},a.createElement(m.x,{namespace:ve,phrase:"markDescription"})),a.createElement(pe.h,{svgName:d.vn.Check,className:"btn btn-dark mb-3",appLink:Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},e.appLink.params),{filterBy:"marking_required"})})},a.createElement(m.x,{namespace:ve,phrase:"markResponses",options:{smartCount:e.requiresMarking}})),a.createElement("button",{className:"btn btn-link d-block p-0 mx-auto",onClick:e.hideMarkingRequiredMask},a.createElement(m.x,{namespace:ve,phrase:"seeIncomplete"})))))}var he=n(49673),be=n(5672),ye=n(93116),Ee=n(14070),ke=n(97291);const Ne={partialInsights:"hrGNN"};function we(){return a.createElement("div",null,a.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),a.createElement("div",{className:"row g-3 mb-5"},a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")}))),a.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),a.createElement("div",{className:"row g-3 mb-5"},a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")}))),a.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),a.createElement("div",{className:"row g-3 mb-5"},a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")})),a.createElement("div",{className:"col-6"},a.createElement("div",{className:"".concat(Ne.partialInsights," rounded partial-loading-background")}))))}var Ae=n(17934);function Ie(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,s,i,c=[],l=!0,o=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=s.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ce(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(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 Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Se="insights.interactiveInsightsOverview",Oe=r.T.encloseNamespace(Se);function Ue(e){var t,n,r,l,o,u,d=Ie((0,s.D)(ae.g.ANONYMISE_USERS),1)[0],p=Ie(a.useState(!1),2),g=p[0],v=p[1];(0,oe.F)();var f=i.a.useBasicFetch(ie.N.currentUser()),h=i.a.useBasicFetch(re.L.config()),b=i.a.useBasicFetch(f.data&&e.classroomId&&de.F.getClassroom(e.classroomId,f.data.id)),y=i.a.useBasicFetch(se.b.interactiveMetadata(e.interactiveId)),k=i.a.useBasicFetch((null===(t=y.data)||void 0===t?void 0:t.interactiveId)&&se.b.interactive(y.data.interactiveId)),N=Y.B.getAudienceAppLinkParams(),w=Y.B.getDateRangeAppLinkParams(),I=Object.assign(Object.assign({},(0,ee.wO)((0,ee.Hb)(),w)),(0,X.K)(N)),C=(0,$.W)(e.interactiveId,I,!0),j=a.useMemo((function(){var e,t;return!!(null===(t=null===(e=C.data)||void 0===e?void 0:e.students)||void 0===t?void 0:t.find((function(e){var t;return null===(t=e.publicUser)||void 0===t?void 0:t.profileId})))}),[C.data]),L=1===(null===(n=N.classrooms)||void 0===n?void 0:n.length)&&!(null===(r=N.classroomGroups)||void 0===r?void 0:r.length),M=i.a.useBasicFetch(L&&de.F.getClassroomStudents(c.m.first(N.classrooms))),T=i.a.useBasicFetch(C.data&&ce.u.aggregateEngagement(e.interactiveId,I,f.data.id,j)),x=i.a.useBasicFetch(f.data&&C.data&&ce.u.views(I,e.interactiveId,f.data.id,j)),R=i.a.useBasicFetch(te.o.getShareLinkByObjectId(e.interactiveId)),q=i.a.useBasicFetch(te.o.getSentDirectShareByObjectId(e.interactiveId)),P=!(!R.data&&!q.data);(0,ue.M)({title:y.data?Oe("pageTitle",{video:null===(l=y.data)||void 0===l?void 0:l.name}):null}),(0,le.v)([k,y,C]);var H,Z=f.data&&h.data&&(!e.classroomId||b.data)&&y.data&&k.data&&C.data&&(!L||M.data)&&T.data&&x.data,D=Z&&(0,U.R6)(k.data,C.data,ne.T),z=Object.assign(Object.assign({},N),w),V=function(e,t){return{resultsAppLink:{application:ke.O.INSIGHTS,action:Ee.e.Insights.INTERACTIVE_STUDENTS,args:[e],params:t},questionsAppLink:{application:ke.O.INSIGHTS,action:Ee.e.Insights.INTERACTIVE_QUESTIONS,args:[e],params:t},heatmapAppLink:{application:ke.O.INSIGHTS,action:Ee.e.Insights.INTERACTIVE_HEATMAP,args:[e],params:t}}}(e.interactiveId,z);return a.createElement("div",{className:"px-3"},a.createElement(ye.m,{video:y.data,audienceAppLinkParams:N,dateRangeAppLinkParams:w,tabs:(0,be.kj)(null===(o=y.data)||void 0===o?void 0:o.id,"insights",z)}),a.createElement(Ae.R,{audienceAppLinkParams:N,dateRangeAppLinkParams:w,video:y.data}),!Z&&a.createElement(we,null),Z&&a.createElement(he.u,{video:y.data,hasShared:P},a.createElement("section",{className:"mb-5"},a.createElement("h2",{className:"h4"},a.createElement(m.x,{namespace:Se,phrase:"studentResponses"}),a.createElement("span",null,": ",D.completed.length,M.data?"/".concat(M.data.data.length):"")),a.createElement("div",{className:"row g-3"},a.createElement("div",{className:"col"},a.createElement(G,{imageUrl:me.W.Insights.SPEECH_BUBBLE_ASTERISK,resultsAppLink:V.resultsAppLink,imageCdnUrl:h.data.imageCdnUrl,students:(H=D.markingRequired,H.map((function(e){return e.user||e.publicUser}))),anonymiseUsers:d})),L&&a.createElement("div",{className:"col"},a.createElement(J,{markingRequiredStudents:D.markingRequired,completedStudents:D.completed,notCompletedStudents:D.notCompleted,classroomStudents:M.data.data,imageCdnUrl:h.data.imageCdnUrl,imageUrl:me.W.Insights.JIGSAW,resultsAppLink:V.resultsAppLink,anonymiseUsers:d})),a.createElement("div",{className:"col"},a.createElement(S,{students:D.completed,imageCdnUrl:h.data.imageCdnUrl,imageUrl:me.W.Insights.AVATAR,resultsAppLink:V.resultsAppLink,anonymiseUsers:d})))),a.createElement(fe,{requiresMarking:!g&&D.markingRequired.length,appLink:V.resultsAppLink,hideMarkingRequiredMask:function(){return v(!0)}},a.createElement("section",{className:"mb-5"},a.createElement("h2",{className:"h4"},a.createElement(m.x,{namespace:Se,phrase:"studentsPerformance"})),a.createElement("div",{className:"row g-3"},a.createElement("div",{className:"col-6"},a.createElement(Q,{redChartImageUrl:me.W.Insights.RED_CHART,heartImageUrl:me.W.Insights.SPEECH_BUBBLE_HEART,resultsAppLink:V.resultsAppLink,imageCdnUrl:h.data.imageCdnUrl,students:D.lowScore,completed:D.completed,anonymiseUsers:d})),a.createElement("div",{className:"col-6"},a.createElement(W,{greenChartImageUrl:me.W.Insights.GREEN_CHART,resultsAppLink:V.resultsAppLink,imageCdnUrl:h.data.imageCdnUrl,students:D.highScore,completed:D.completed,anonymiseUsers:d})),a.createElement("div",{className:"col-6"},a.createElement(_,{interactive:k.data,interactiveMetadata:y.data,results:C.data,questionsAppLink:V.questionsAppLink})),a.createElement("div",{className:"col-6"},a.createElement(B,{interactive:k.data,interactiveMetadata:y.data,results:C.data,questionsAppLink:V.questionsAppLink})))),a.createElement("section",{className:"mb-5"},a.createElement("h2",{className:"h4"},a.createElement(m.x,{namespace:Se,phrase:"classPerformance"})),a.createElement("div",{className:"row g-3"},a.createElement("div",{className:"col-6"},a.createElement(A,{students:D.completed})),a.createElement("div",{className:"col-6"},a.createElement(E,{students:D.completed})),a.createElement("div",{className:"col-6"},a.createElement(O.i,{osCount:null===(u=x.data)||void 0===u?void 0:u.osCount})),a.createElement("div",{className:"col-6"},a.createElement(F.b,{engagement:T.data,heatmapAppLink:V.heatmapAppLink})))))))}}}]);
|
|
2
|
+
//# sourceMappingURL=6455-37039eb687-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6455-37039eb687-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/libs/shared/src/enums/InteractiveAnswerStatus.ts","file:///app/packages/libs/shared/src/utils/InteractiveCorrectnessHelper.ts","file:///app/packages/libs/shared/src/utils/InteractiveHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/insight-average-attempts.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/InsightAverageAttempts.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/insight-average-score.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/InsightAverageScore.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/completed-students/InsightCompletedStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/hardest-question/InsightHardestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/marking-required/InsightMarkingRequired.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents.tsx","file:///app/packages/projects/lite/src/apps/insights/components/insights-mask/InsightsMarkingRequiredMask.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/partial-loading/partial-interactive-insights-overview.scss","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/partial-loading/PartialInteractiveInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/InteractiveInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/InteractiveInsightsOverviewUtils.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n formatData: (data: any) => {\n return {\n ...data,\n students: data.students.map((student: any) => {\n if (!student.name || !student.profileId)\n return student;\n\n return {\n ...student,\n publicUser: {\n profileId: student.profileId,\n name: student.name\n }\n };\n })\n };\n },\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter: AnalyticsRequestFilter,\n includePublicResults?: boolean\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data && (!!requestFilter);\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n includePublicResults\n ));\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n if (ArrayHelper.last(s.results).attempts.length === numInteractions) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: result.attempts.length,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","export enum InteractiveAnswerStatus {\n Incorrect = 0,\n Correct = 1,\n PendingReview = 2\n}","import { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResult, StudentAnswer } from 'libs/shared/interfaces';\n\ntype GetStudentAnswerByActionableItemId = (id: string) => string;\n\nfunction notApplicable(): InteractionCorrectness {\n return InteractionCorrectness.NotApplicable;\n}\n\nfunction awaitingMarking(): InteractionCorrectness {\n return InteractionCorrectness.AwaitingMarking;\n}\n\nfunction isMissingWordCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n const items = interaction.actionableItems.filter(a => a\n .isCorrect);\n\n if (items.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n\n const correct = items.every(a => a.name.trim().toLowerCase() === getStudentAnswer(a.id)?.trim().toLowerCase());\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMultipleChoiceCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n if (interaction.actionableItems.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n \n const correctItems = interaction.actionableItems.filter(a => a.isCorrect);\n\n const correct = correctItems.every(a => {\n const studentAnswer = getStudentAnswer(a.id);\n\n /**\n * In the past we've only ever checked the answer name. But since we introduced the ability to have image interactions\n * with no question text, we've need to swap to saving the id. But past submissions still have the name\n * - Sha\n */\n return studentAnswer?.toString() === a.id?.toString() || studentAnswer === a.name;\n });\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n getStudentAnswer: (id: string) => StudentAnswer\n): InteractionCorrectness {\n let correctness: InteractionCorrectness;\n\n // There should only be one actionableItem\n interaction.actionableItems.forEach(item => {\n const studentAnswer = getStudentAnswer(item.id);\n\n if (!studentAnswer) {\n correctness = InteractionCorrectness.UnAnswered;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Correct) {\n correctness = InteractionCorrectness.Correct;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Incorrect) {\n correctness = InteractionCorrectness.Incorrect;\n return;\n }\n\n correctness = InteractionCorrectness.AwaitingMarking;\n });\n\n return correctness;\n}\n\ntype IsCorrectFunction = (interaction: Interaction, result: InteractiveResult) => InteractionCorrectness;\n\nfunction getGetStudentAnswer(interaction: Interaction, result: InteractiveResult): (id: string) => StudentAnswer {\n return (id: string) => {\n const attempt = result.attempts.find(a => a.id === interaction.id);\n return attempt?.answers.find(s => s.id === id);\n };\n}\n\nfunction wrapIsMissingWordCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMissingWordCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMultipleChoiceCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMultipleChoiceCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n result: InteractiveResult\n): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n return isMarkableAnswerMarkedCorrect(interaction, getStudentAnswer);\n}\n\nconst IsCorrectLookup: {[typeId: number]: IsCorrectFunction} = {\n [InteractionTypeId.Annotation]: notApplicable,\n [InteractionTypeId.Image]: notApplicable,\n [InteractionTypeId.MissingWord]: wrapIsMissingWordCorrect,\n [InteractionTypeId.MultipleChoice]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.ShortAnswer]: wrapIsMarkableAnswerMarkedCorrect,\n [InteractionTypeId.TrueOrFalse]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.Illustration]: wrapIsMarkableAnswerMarkedCorrect\n};\n\nfunction isInteractionCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const isCorrectFn = IsCorrectLookup[interaction.typeId];\n\n return isCorrectFn(interaction, result);\n}\n\nexport const InteractiveCorrectnessHelper = {\n notApplicable,\n awaitingMarking,\n isMissingWordCorrect,\n isMultipleChoiceCorrect,\n isInteractionCorrect\n};\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport {\n Interaction,\n InteractionTypeId,\n Interactive,\n InteractiveResult,\n StudentAttempt,\n StudentResults\n} from 'libs/shared/interfaces';\n\nfunction interactionRequiresAnswer(interaction: Interaction): boolean {\n return interaction.typeId !== InteractionTypeId.Annotation && interaction.typeId !== InteractionTypeId.Image;\n}\n\nexport function flattenInteractions(interactive: Interactive): Interaction[] {\n return ArrayHelper.flatten(interactive.timepoints.map(i => i.interactions));\n}\n\n/**\n * Centralised logic for using the most recent student result.\n */\nexport function getStudentResult(studentResults: StudentResults): InteractiveResult {\n return ArrayHelper.last(studentResults.results);\n}\n\nexport function getStudentAttempt(interactionId: string, result: InteractiveResult): StudentAttempt {\n return ArrayHelper.findWhere(result?.attempts, { id: interactionId });\n}\n\n/**\n * Returns a flat list of interactions on an interactive and filters out\n * those that don't require an answer (annotations and images).\n */\nexport function getInteractions(interactive: Interactive): Interaction [] {\n return flattenInteractions(interactive).filter(interactionRequiresAnswer);\n}","// extracted by mini-css-extract-plugin\nexport default {\"tealChart\":\"lZZf0\",\"grayChart\":\"wJQc4\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-attempts.scss';\n\nconst namespace = 'shared.insightAverageAttempts';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightAverageAttemptsProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageAttempts(props: InsightAverageAttemptsProps) {\n const categoriesData = getCategoriesData();\n const highestAttemptsCount = getHighestAttemptsCount();\n const averageAttempts = getAverageAttempts();\n const chartData = getChartData();\n\n function getCategoriesData() {\n const categoriesData = props.students.reduce((acc, student) => {\n const attemptsCategory = student.summary.attempts.toString();\n\n if (!(attemptsCategory in acc)) {\n Object.assign(acc, { [attemptsCategory]: 0 });\n }\n\n acc[attemptsCategory]++;\n\n return acc;\n }, {} as HashObject);\n return Object.keys(categoriesData).length ? categoriesData : { 0: 0 };\n }\n\n function getHighestAttemptsCount() {\n return Math.max(...Object.keys(categoriesData).map(category => categoriesData[category]));\n }\n\n function getAverageAttempts(): number[] {\n return Object.keys(categoriesData).reduce((acc, category) => {\n const userCount = categoriesData[category];\n return userCount === highestAttemptsCount ? [ ...acc, category ] : acc;\n }, []);\n }\n\n function calculateAverage() {\n const total = Object.entries(categoriesData).reduce(\n (acc, [ attemptsCount, usersCount ]) => {\n acc.totalAttempts += +attemptsCount * usersCount;\n acc.totalUsers += usersCount;\n return acc;\n },\n { totalAttempts: 0, totalUsers: 0 }\n );\n\n return total.totalUsers === 0 ? 0 : Math.round(total.totalAttempts / total.totalUsers * 100) / 100;\n }\n\n function getChartData(): ChartData {\n const noAttempts = categoriesData[0] === 0;\n\n return {\n categories: Object.keys(categoriesData),\n series: [{\n type: 'column',\n color: categoriesData[0] ? '#EAEAEA' : '#40C2BB',\n borderRadius: 4,\n dataLabels: {\n enabled: !noAttempts,\n style: CHART_FONT_STYLES,\n inside: false,\n overflow: 'allow',\n crop: false\n },\n data: Object.keys(categoriesData).map(category => {\n const highestCount = highestAttemptsCount !== 0 && categoriesData[category] === highestAttemptsCount;\n\n return {\n className: `${noAttempts ? styles.grayChart : styles.tealChart} ${categoriesData[category] !== highestAttemptsCount && categoriesData[category] !== 0 ? 'opacity-25' : ''}`,\n borderWidth: highestCount ? 2 : 0,\n borderColor: highestCount ? 'black' : '',\n y: categoriesData[category]\n };\n })\n }]\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Refresh}\n svgClassName='bg-light-purple text-purple'\n >\n <p>\n {averageAttempts.length\n ? <Text namespace={namespace} phrase='averageAttempts' options={{ smartCount: calculateAverage() }} />\n : <Text namespace={namespace} phrase='noAttempts' />\n }\n </p>\n\n <div className='mt-auto'>\n <InsightChart label={getPhrase('attempts')} chartData={chartData} />\n </div>\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"redChart\":\"G7zOw\",\"yellowChart\":\"k34mm\",\"greenChart\":\"vBneA\",\"blueChart\":\"RPTWm\",\"grayChart\":\"k4JFZ\",\"borderDark\":\"LWor3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-score.scss';\n\nconst namespace = 'shared.insightAverageScore';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightAverageScoreProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageScore(props: InsightAverageScoreProps) {\n function getChartData(): ChartData {\n const scoreCount = Array(11).fill(0);\n const scorePercentageData = props.students.reduce((acc, value) => {\n const scoreIndex = Math.floor(value.summary.percentCorrect * 10);\n acc[scoreIndex]++;\n\n return acc;\n }, scoreCount);\n\n const PERCENTAGES = [ '0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100' ];\n\n return {\n categories: PERCENTAGES,\n series: [{\n type: 'column',\n color: '#4E9ACE',\n borderRadius: 4,\n data: scorePercentageData.map((score, index) => {\n const percentageCategory = Number(PERCENTAGES[index]);\n\n const getChartColour = (percentage: number, score: number) => {\n if (score === 0)\n return styles.grayChart;\n if (percentage < 50)\n return styles.redChart;\n if (percentage < 70)\n return styles.yellowChart;\n if (percentage < 90)\n return styles.greenChart;\n\n return styles.blueChart;\n };\n\n return {\n className: `${getChartColour(percentageCategory, score)}`,\n y: score\n };\n })\n }]\n };\n }\n\n function getAverageNumbers() {\n const averageScores = props.students.map(student => student.summary.percentCorrect);\n const averagePercentage = averageScores.reduce((a, b) => a + b, 0) / averageScores.length;\n const totalQuestions = ArrayHelper.last(\n ArrayHelper.last(props.students).results\n ).attempts.length;\n\n return {\n averageScore: Math.round(totalQuestions * averagePercentage),\n totalQuestions,\n averagePercentage: (averagePercentage * 100).toFixed(1)\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Analytics}\n svgClassName='bg-light-orange text-orange'\n >\n <p>\n {props.students.length\n ? <Text namespace={namespace} phrase='averageScore' options={getAverageNumbers()} />\n : <Text namespace={namespace} phrase='noAnswers' />\n }\n </p>\n\n <InsightChart label={`${getPhrase('studentScores')} (%)`} chartData={getChartData()} />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightCompletedStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightCompletedStudents(props: InsightCompletedStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completedStudents')}\n appLink={props.resultsAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightEasiestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightEasiestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightEasiestQuestion(props: InsightEasiestQuestionProps) {\n const easiestQuestion = React.useMemo(\n () => getEasiestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getEasiestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.last(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.StarOutline}\n svgClassName='bg-light-blue text-blue'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={easiestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {easiestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={easiestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {easiestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n className='text-info'>\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHardestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHardestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightHardestQuestion(props: InsightHardestQuestionProps) {\n const hardestQuestion = React.useMemo(\n () => getHardestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getHardestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.first(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.QuestionMark}\n svgClassName='bg-light-orange text-orange'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={hardestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {hardestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={hardestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {hardestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHighScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHighScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n greenChartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers?: boolean;\n}\n\nexport function InsightHighScoringStudents(props: InsightHighScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Trophy}\n svgClassName='bg-light-teal text-teal'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.greenChartImageUrl}\n description={getPhrase(props.completed.length ? 'noStudents' : 'highScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n appLinkText={getPhrase('viewByHighest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightLowScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightLowScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n redChartImageUrl: string;\n heartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightLowScoringStudents(props: InsightLowScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-red text-red'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.completed.length ? props.heartImageUrl : props.redChartImageUrl}\n description={getPhrase(props.completed.length ? 'doingWell' : 'lowScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n appLinkText={getPhrase('viewByLowest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\n\nconst namespace = 'shared.insightMarkingRequired';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightMarkingRequiredProps {\n students: (User | PublicInteractiveUser)[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightMarkingRequired(props: InsightMarkingRequiredProps) {\n const markingRequiredFilter: FilterStudentsBy = 'marking_required';\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-blue text-blue'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsRequireMarking')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n filterBy: markingRequiredFilter\n }\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightNotCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightNotCompletedStudentsProps {\n markingRequiredStudents: StudentResultsWithSummary[];\n completedStudents: StudentResultsWithSummary[];\n notCompletedStudents: StudentResultsWithSummary[];\n classroomStudents: User[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightNotCompletedStudents(props: InsightNotCompletedStudentsProps) {\n const notCompletedStudents = getNotCompletedStudents();\n \n function getNotCompletedStudents() {\n const markingRequiredStudentIds = props.markingRequiredStudents.map(student => student?.user.id);\n const completedStudentIds = props.completedStudents.map(student => student?.user.id);\n \n const notStartedStudents = props.classroomStudents.filter(student => {\n return !markingRequiredStudentIds.includes(student.id) &&\n !completedStudentIds.includes(student.id);\n });\n \n return ArrayHelper.uniq([\n ...props.notCompletedStudents.map(student => student.user),\n ...notStartedStudents\n ], 'id');\n }\n \n const notCompletedFilter: FilterStudentsBy = 'not_completed';\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n count={notCompletedStudents.length}\n >\n <InsightStudentList\n students={notCompletedStudents}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completed')}\n appLink={{\n ...props.resultsAppLink,\n params: notCompletedFilter\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './insights-mask.scss';\n\nconst namespace = 'lite.insightsMask';\n\ninterface InsightsMarkingRequiredMaskProps extends React.PropsWithChildren {\n requiresMarking: number;\n appLink: Core.AppLink;\n hideMarkingRequiredMask: () => void;\n}\n\nexport function InsightsMarkingRequiredMask(props: InsightsMarkingRequiredMaskProps) {\n const filterBy: FilterStudentsBy = 'marking_required';\n\n return (\n <div className={`${props.requiresMarking && styles.mask} position-relative`}>\n <div className={props.requiresMarking ? 'position-absolute top-0' : ''}>{props.children}</div>\n <div\n className={props.requiresMarking ? `${styles.backdrop} d-flex flex-column align-items-center justify-content-start py-5` : ''}\n >\n {!!props.requiresMarking && (\n <div className='text-center w-50'>\n <img src={ImageUrls.Insights.MARKING_RESPONSES} className='mb-3' width={288} />\n <h2 className='h3 mb-3'><Text namespace={namespace} phrase='markHeading' /></h2>\n <p className='mb-3'><Text namespace={namespace} phrase='markDescription' /></p>\n <IconButton\n svgName={cvSvgLibrary.Check}\n className='btn btn-dark mb-3'\n appLink={{\n ...props.appLink,\n params: {\n ...props.appLink.params as HashObject,\n filterBy\n }\n }}\n >\n <Text namespace={namespace} phrase='markResponses' options={{ smartCount: props.requiresMarking }} />\n </IconButton>\n <button className='btn btn-link d-block p-0 mx-auto' onClick={props.hideMarkingRequiredMask}><Text namespace={namespace} phrase='seeIncomplete' /></button>\n </div>\n )}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"hrGNN\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-overview.scss';\n\nexport function PartialInteractiveInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightAverageAttempts } from 'libs/shared/apps/analytics/components/insights/average-attempts/InsightAverageAttempts';\nimport { InsightAverageScore } from 'libs/shared/apps/analytics/components/insights/average-score/InsightAverageScore';\nimport { InsightCompletedStudents } from 'libs/shared/apps/analytics/components/insights/completed-students/InsightCompletedStudents';\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightEasiestQuestion } from 'libs/shared/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion';\nimport { InsightHardestQuestion } from 'libs/shared/apps/analytics/components/insights/hardest-question/InsightHardestQuestion';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightHighScoringStudents } from 'libs/shared/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents';\nimport { InsightLowScoringStudents } from 'libs/shared/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents';\nimport { InsightMarkingRequired } from 'libs/shared/apps/analytics/components/insights/marking-required/InsightMarkingRequired';\nimport { InsightNotCompletedStudents } from 'libs/shared/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { groupStudents } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection, Classroom, Config, CurrentUser, DirectShare, Engagement, Interactive, InteractiveMetadata, ShareLink, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsMarkingRequiredMask } from 'apps/insights/components/insights-mask/InsightsMarkingRequiredMask';\nimport { InsightsShareMask } from 'apps/insights/components/insights-mask/InsightsShareMask';\nimport { getInsightsInteractiveTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { getInteractiveInsightsAppLinks } from 'apps/insights/views/interactive/overview/InteractiveInsightsOverviewUtils';\nimport { PartialInteractiveInsightsOverview } from 'apps/insights/views/interactive/overview/partial-loading/PartialInteractiveInsightsOverview';\nimport { ShareInfoView } from 'apps/insights/views/share-info/ShareInfoView';\n\nconst namespace = 'insights.interactiveInsightsOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsViewProps {\n interactiveId: string;\n classroomId?: string;\n}\n\nexport function InteractiveInsightsOverviewView(props: InteractiveInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n const [ hideMarkingRequiredMask, setHideMarkingRequiredMask ] = React.useState(false);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const classroom = Flight.useBasicFetch<Classroom>(currentUser.data && props.classroomId &&\n ClassroomRequests.getClassroom(props.classroomId, currentUser.data.id));\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const results = useFetchInteractiveResults(props.interactiveId, requestFilter, true);\n const hasPublicResult = React.useMemo(\n () => !!results.data?.students?.find(s => s.publicUser?.profileId),\n [results.data]\n );\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n results.data && VideoViewRequests.aggregateEngagement(\n props.interactiveId,\n requestFilter,\n currentUser.data.id,\n hasPublicResult\n )\n );\n\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(\n currentUser.data &&\n results.data &&\n VideoViewRequests.views(requestFilter, props.interactiveId, currentUser.data.id, hasPublicResult)\n );\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.interactiveId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.interactiveId)\n );\n\n const hasShared = !!(shareLink.data || sentDirectShare.data);\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n useHandleObjectError([ interactive, interactiveMetadata, results ]);\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n (!props.classroomId || classroom.data) &&\n interactiveMetadata.data &&\n interactive.data &&\n results.data &&\n (!classroomFilterOnly || classroomStudents.data) &&\n aggregateEngagement.data &&\n videoViews.data;\n\n const studentGroups = hasDataLoaded && groupStudents(interactive.data, results.data, ScoreThresholdInsights);\n\n function getUsers(studentResult: StudentResultsWithSummary[]): (User | PublicInteractiveUser)[] {\n return studentResult.map(student => student.user || student.publicUser);\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n const interactiveInsightsAppLinks = getInteractiveInsightsAppLinks(\n props.interactiveId,\n params\n );\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n video={interactiveMetadata.data}\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(interactiveMetadata.data?.id, 'insights', params)}\n />\n\n <ShareInfoView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n video={interactiveMetadata.data}\n />\n\n {!hasDataLoaded && <PartialInteractiveInsightsOverview />}\n\n {hasDataLoaded &&\n <InsightsShareMask video={interactiveMetadata.data} hasShared={hasShared}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentResponses' />\n <span>: {studentGroups.completed.length}{classroomStudents.data ? `/${classroomStudents.data.data.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n <div className='col'>\n <InsightMarkingRequired\n imageUrl={ImageUrls.Insights.SPEECH_BUBBLE_ASTERISK}\n resultsAppLink={interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={config.data.imageCdnUrl}\n students={getUsers(studentGroups.markingRequired)}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n {classroomFilterOnly && (\n <div className='col'>\n <InsightNotCompletedStudents\n markingRequiredStudents={studentGroups.markingRequired}\n completedStudents={studentGroups.completed}\n notCompletedStudents={studentGroups.notCompleted}\n classroomStudents={classroomStudents.data.data}\n imageCdnUrl={config.data.imageCdnUrl}\n imageUrl={ImageUrls.Insights.JIGSAW}\n resultsAppLink={interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n )}\n <div className='col'>\n <InsightCompletedStudents\n students={studentGroups.completed}\n imageCdnUrl={config.data.imageCdnUrl}\n imageUrl={ImageUrls.Insights.AVATAR}\n resultsAppLink={interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <InsightsMarkingRequiredMask\n requiresMarking={!hideMarkingRequiredMask && studentGroups.markingRequired.length}\n appLink={interactiveInsightsAppLinks.resultsAppLink}\n hideMarkingRequiredMask={() => setHideMarkingRequiredMask(true)}\n >\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentsPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightLowScoringStudents\n redChartImageUrl={ImageUrls.Insights.RED_CHART}\n heartImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n resultsAppLink={interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={config.data.imageCdnUrl}\n students={studentGroups.lowScore}\n completed={studentGroups.completed}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHighScoringStudents\n greenChartImageUrl={ImageUrls.Insights.GREEN_CHART}\n resultsAppLink={interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={config.data.imageCdnUrl}\n students={studentGroups.highScore}\n completed={studentGroups.completed}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHardestQuestion\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n results={results.data}\n questionsAppLink={interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n <div className='col-6'>\n <InsightEasiestQuestion\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n results={results.data}\n questionsAppLink={interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='classPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightAverageScore\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightAverageAttempts\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightDevices\n osCount={videoViews.data?.osCount}\n />\n </div>\n <div className='col-6'>\n <InsightHeatmap\n engagement={aggregateEngagement.data}\n heatmapAppLink={interactiveInsightsAppLinks.heatmapAppLink}\n />\n </div>\n </div>\n </section>\n </InsightsMarkingRequiredMask>\n </InsightsShareMask>\n }\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getInteractiveInsightsAppLinks(id: string, params?: HashObject) {\n return {\n resultsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENTS,\n args: [id],\n params\n },\n questionsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_QUESTIONS,\n args: [id],\n params\n },\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_HEATMAP,\n args: [id],\n params\n }\n };\n}"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","formatData","students","map","student","name","profileId","publicUser","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useFetchInteractiveResults","requestFilter","interactiveMetadata","interactive","shouldFetchResults","I","groupStudents","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","numInteractions","length","forEach","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","i","toString","getMarkedAnswerId","answer","questionId","getMarkedStatus","studentResults","markedAnswers","result","studentResponse","answers","every","a","status","getInteractionResultsSummary","interaction","numStudents","numCorrect","answered","unanswered","correctness","correct","interactions","interactionIds","Set","answeredInteractions","has","InteractionCorrectness","InteractiveAnswerStatus","notApplicable","isMissingWordCorrect","getStudentAnswer","items","actionableItems","isCorrect","trim","toLowerCase","isMultipleChoiceCorrect","studentAnswer","getGetStudentAnswer","attempt","wrapIsMultipleChoiceCorrect","text","wrapIsMarkableAnswerMarkedCorrect","item","isMarkableAnswerMarkedCorrect","IsCorrectLookup","InteractiveCorrectnessHelper","isInteractionCorrect","isCorrectFn","typeId","interactionRequiresAnswer","flattenInteractions","timepoints","getStudentResult","getStudentAttempt","getInteractions","namespace","getPhrase","LanguageService","InsightAverageAttempts","props","noAttempts","total","categoriesData","reduce","acc","attemptsCategory","Object","assign","keys","getCategoriesData","highestAttemptsCount","Math","max","category","averageAttempts","chartData","categories","series","color","borderRadius","dataLabels","enabled","style","inside","overflow","crop","highestCount","className","borderWidth","borderColor","y","InsightCard","title","svgName","svgClassName","Text","phrase","options","smartCount","entries","attemptsCount","usersCount","totalAttempts","totalUsers","round","InsightChart","label","InsightAverageScore","averageScores","averagePercentage","b","totalQuestions","ArrayHelper","averageScore","toFixed","scoreCount","Array","fill","scorePercentageData","value","floor","PERCENTAGES","score","index","percentageCategory","Number","percentage","getChartColour","InsightCompletedStudents","count","InsightStudentList","user","imageCdnUrl","imageUrl","description","appLink","resultsAppLink","appLinkText","anonymiseUsers","InsightEasiestQuestion","easiestQuestion","resultsSummary","sortedInteractions","PercentageIndicator","layout","InteractionLabel","iconClassName","AppLink","questionsAppLink","params","sortBy","InsightHardestQuestion","hardestQuestion","InsightHighScoringStudents","greenChartImageUrl","InsightLowScoringStudents","heartImageUrl","redChartImageUrl","InsightMarkingRequired","filterBy","InsightNotCompletedStudents","markingRequiredStudentIds","completedStudentIds","notStartedStudents","notCompletedStudents","markingRequiredStudents","completedStudents","classroomStudents","includes","InsightsMarkingRequiredMask","requiresMarking","children","src","ImageUrls","width","IconButton","onClick","hideMarkingRequiredMask","PartialInteractiveInsightsOverview","InteractiveInsightsOverviewView","SharedViewModelKeys","setHideMarkingRequiredMask","useLockContentWidth","UserRequests","config","ConfigRequests","classroom","classroomId","ClassroomRequests","InteractiveRequests","audienceAppLinkParams","dateRangeAppLinkParams","hasPublicResult","classroomFilterOnly","classrooms","classroomGroups","aggregateEngagement","VideoViewRequests","videoViews","shareLink","ShareRequests","sentDirectShare","hasShared","useSetPageMetadata","video","studentResult","hasDataLoaded","studentGroups","interactiveInsightsAppLinks","application","action","args","heatmapAppLink","getInteractiveInsightsAppLinks","InsightsHeaderView","tabs","ShareInfoView","InsightsShareMask","InsightDevices","osCount","InsightHeatmap","engagement"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 6623-84b33c6856-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6623],{2192:(e,t,n)=>{n.d(t,{M:()=>N,Q:()=>x});var r=n(32735),a=n(31453),o=n(45157),c=n(36848),l=n(60376),i=n(5465),s=n(83914),u=n(83345),m=n(7733),d=n(54610),f=n(9085),h=n(67453),v=n(45778),p=n(35223),g=n(92038),E="shared.subjectWidgetItem",y=function(e){var t=e.name,n=e.multiline,a=e.noUnderLine,o="".concat(g.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),c="";return n?c+=" ".concat(g.Z.clamped," clamp-2"):(o+=" text-nowrap",c+=" text-truncate"),r.createElement("div",{className:o},r.createElement("small",{className:"text-secondary"},r.createElement(u.x,{namespace:E,phrase:"comingSoon"})),r.createElement("p",{className:"".concat(a?"":g.Z.name," h6")},r.createElement("span",{className:c},t)))},b=function(e){var t=e.name,n=e.multiline,a=e.subtitle,o=e.noUnderLine,c=e.newVideosCount,l="px-3 d-flex flex-column justify-content-center",i="".concat(o?"":g.Z.name," h6");return n?i+=" ".concat(c?"clamp-2":"clamp-3"," text-start"):(l+=" text-nowrap text-truncate",i+=" text-truncate mb-0"),r.createElement("div",{className:l},a&&r.createElement("div",{className:"text-secondary clamp-1 ".concat(g.Z.text)},a),r.createElement("div",{className:i,title:t},t),!!c&&r.createElement("div",{className:"fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ".concat(g.Z.newVideos)},r.createElement(u.x,{namespace:E,phrase:"newVideos",options:{smartCount:c}})))};function N(e){var t,n=h.j.createUrl(e.coverUrl,{size:e.isLarge?d.h2.Medium:d.h2.Small}),c=void 0;v.G.isClassification(e.data)&&(c=e.data);var u={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?null===(t=null==c?void 0:c.externalMetadata)||void 0===t?void 0:t.childDashboardNewVideoCount:0},E={backgroundImage:n?"url('".concat(n,"')"):null,backgroundColor:e.coverBgColor},N=(0,f.x)(e.data.name,m.o);return r.createElement("div",{className:"".concat(e.themeColor?g.Z.hasThemeColor:"border"," d-flex position-relative ").concat(e.className," ").concat(g.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""," ").concat(e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""),style:e.themeColor?{"--themeColor":e.themeColor}:{},id:"".concat(e.data.id,"-").concat(o.Y.getRandomInt())},e.isSelected&&r.createElement("div",{className:"".concat(g.Z.selectedMask," border-2")}),r.createElement("div",{className:"".concat(g.Z.imagePanel," ").concat(e.isLarge?g.Z.large:"")},e.isSelected&&!e.hideCheckmark&&r.createElement("div",{className:g.Z.selected},r.createElement(l.f,{svgName:p.vn.Check,svgSize:s.S.Large,textVariant:"white",variant:"green"})),n&&r.createElement("div",{className:(0,a.A)(g.Z.image,e.imageClassName,!e.coverBgColor&&N),style:E}),!e.hideFallback&&r.createElement(i.oy,{type:i.mS.Subject,extraClasses:e.isLarge?g.Z.large:""})),e.isComingSoon?r.createElement(y,Object.assign({},u)):r.createElement(b,Object.assign({},u)))}function x(e){var t,n=e.getChildAppLink?e.getChildAppLink(e.data):null;return r.createElement(r.Fragment,null,n?r.createElement(c.F,{className:g.Z.appLink,appLink:n,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},r.createElement(N,Object.assign({},e))):r.createElement(N,Object.assign({},e)))}},75919:(e,t,n)=>{n.d(t,{N:()=>o});var r=n(32735);const a={annotation:"LkdHB",above:"ROdbm",below:"OzyHx",left:"W9EBF",right:"zhio2",divider:"cdR_p",imageContainer:"QZZMF"};function o(e){return r.createElement("div",{className:(t="d-flex align-items-center text-center position-relative w-100 ".concat(a.imageContainer),"center"===e.contentPosition&&(t+=" px-5 justify-content-center"),"right"===e.contentPosition&&(t+=" me-n5 justify-content-end"),t)},!!e.annotationUrl&&r.createElement("div",{className:function(){var t=a.annotation;switch(e.annotationPosition){case"top-left":t+=" ".concat(a.above," ").concat(a.left);break;case"top-right":t+=" ".concat(a.above," ").concat(a.right);break;case"bottom-left":t+=" ".concat(a.below," ").concat(a.left);break;case"bottom-right":t+=" ".concat(a.below," ").concat(a.right)}return e.annotationClassName&&(t+=" ".concat(e.annotationClassName)),t}()},r.createElement("img",{className:"img-fluid",src:e.annotationUrl})),e.children,"right"===e.contentPosition&&r.createElement("div",{className:a.divider}));var t}o.defaultProps={contentPosition:"center"}},39375:(e,t,n)=>{n.d(t,{Y:()=>u});var r=n(32735),a=n(54610),o=n(67453),c=n(2248);const l={magicTab:"H5jzm",subjectPlaceholder:"r1L6T",placeholderCover:"z9CFT",promotedTopicPlaceholder:"PbYs6",promotedTopicPlaceholderText:"hZ8Nf"};function i(e){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"d-flex border rounded-3 overflow-hidden ".concat(l.subjectPlaceholder)},e.coverUrl?r.createElement("div",{className:l.placeholderCover},r.createElement("img",{className:"img-fluid",src:o.j.createUrl(e.coverUrl,{size:a.h2.Small})})):r.createElement("div",{className:"".concat(l.placeholderCover," bg-light-blue")})))}function s(){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"bg-light-blue rounded-3 w-100 p-1 ".concat(l.promotedTopicPlaceholder)}))}function u(e){var t,n,a,o=Math.max(12-(null!==(n=null===(t=e.subjects)||void 0===t?void 0:t.length)&&void 0!==n?n:0),0);return r.createElement(c.L,{presentation:e.presentation,curriculum:e.curriculum,editingCurriculum:e.editingCurriculum},r.createElement("div",{className:"px-3 pt-3 w-100 d-flex flex-column align-items-center"},r.createElement("div",{className:"rounded-3 border overflow-hidden d-flex mb-2"},r.createElement("div",{className:"bg-light ".concat(l.magicTab)}),r.createElement("div",{className:"".concat(l.magicTab)})),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2"},null===(a=e.subjects)||void 0===a?void 0:a.map((function(e){var t;return r.createElement(i,{key:e.id,coverUrl:null===(t=e.cover)||void 0===t?void 0:t.url})})),new Array(o).fill(0).map((function(e,t){return r.createElement(i,{key:t})}))),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1"},r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null))))}},2248:(e,t,n)=>{n.d(t,{L:()=>g});var r=n(32735),a=n(60376),o=n(83914),c=n(2786),l=n(83345),i=n(54610),s=n(72639),u=n(79967),m=n(67453),d=n(35223),f=n(87114);const h={dot:"AlRQD",logo:"L42gR",blackBar:"ESCxm",topNav:"a3G_4",leftNav:"YxGVV",belowHeader:"jc_cg",leftNavIcon:"U6i6r",leftNavText:"LnYlW",presentationPlaceholderIcon:"Ljaju",presentationIcon:"QdwPq",presentationPlaceholderText:"af06V",curriculumIcon:"N7T4T",curriculumIconSmall:"_6xrUg",curriculumContainer:"Z65qX",iconPlaceholder:"CKOXL",shadow:"zygeJ",presentationName:"Oj7Dt"};var v="onboarding.mockLayout";function p(){return r.createElement("div",{className:"d-flex align-items-center justify-content-center mb-2 px-3"},r.createElement("div",{className:"".concat(h.leftNavIcon," rounded-circle")}),r.createElement("div",{className:"".concat(h.leftNavText," rounded-pill")}))}function g(e){var t,n,g=(0,u.k)();return r.createElement("div",{className:"border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100"},!!e.editingCurriculum&&r.createElement("div",{className:"w-100 h-100 position-absolute ".concat(h.shadow)},r.createElement("div",{className:"d-flex align-items-center h-100 w-50 ".concat(h.curriculumContainer)},r.createElement("div",{className:"bg-white rounded-3 border p-3 w-100"},r.createElement("h2",{className:"h6 text-start"},r.createElement(l.x,{namespace:v,phrase:"curriculum"})),e.curriculum?r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(h.curriculumIcon," rounded-circle me-2 border")},r.createElement(a.f,{imageUrl:m.j.createUrl(null===(t=e.curriculum.cover)||void 0===t?void 0:t.url,{size:i.h2.Small})})),r.createElement("div",{className:"text-start"},e.curriculum.name)):r.createElement("div",{className:"d-flex align-items-center text-secondary"},r.createElement("div",{className:"me-2 rounded-circle p-1 ".concat(h.iconPlaceholder)},r.createElement(a.f,{svgSize:o.S.Large,textVariant:"secondary",svgName:d.vn.GraduationCap})),r.createElement(l.x,{namespace:v,phrase:"selectCurriculum"}))))),r.createElement("div",{className:"bg-dark d-flex px-3 py-2 ".concat(h.blackBar)},r.createElement("div",{className:"rounded-circle me-2 ".concat(h.dot)}),r.createElement("div",{className:"rounded-circle me-2 ".concat(h.dot)}),r.createElement("div",{className:"rounded-circle ".concat(h.dot)})),r.createElement("div",{className:"border-bottom px-3 py-2 d-flex align-items-center ".concat(h.topNav)},r.createElement("div",{className:"".concat(h.logo," me-4")},g.xs?r.createElement(c.bc,null):r.createElement(c.$S,null)),r.createElement("div",{className:"form-control w-75 d-flex justify-content-start"},r.createElement(o.x,{svgName:d.vn.Search})),!!e.curriculum&&r.createElement("div",{className:"".concat(h.curriculumIconSmall," rounded-circle ms-2 me-n1 border")},r.createElement(a.f,{imageUrl:null===(n=e.curriculum.cover)||void 0===n?void 0:n.url}))),r.createElement("div",{className:"d-flex ".concat(h.belowHeader)},r.createElement("div",{className:"".concat(h.leftNav," border-end")},r.createElement("div",{className:"d-flex flex-column pt-3 h-100"},r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement("div",{className:"d-flex align-items-end h-100 w-100"},r.createElement("div",{className:"border-top p-3 w-100"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(function(){if(!e.presentation)return h.presentationPlaceholderIcon;switch(f.i.getMappedPresentationLevel(e.presentation.learningLevel)){case s.p.Level_1:return"bg-indigo ".concat(h.presentationIcon);case s.p.Level_3:return"bg-blue ".concat(h.presentationIcon);default:case s.p.Level_2:return"bg-green ".concat(h.presentationIcon)}}()," text-white rounded")},r.createElement(o.x,{svgName:d.vn.School,size:o.S.Large})),e.presentation?r.createElement("span",{className:"fw-semibold text-truncate ".concat(h.presentationName)},e.presentation.name):r.createElement("div",{className:"".concat(h.presentationPlaceholderText," fw-semibold")},r.createElement(l.x,{namespace:v,phrase:"schoolLevel"}))))))),r.createElement("div",{className:"w-100 h-100 overflow-hidden"},e.children)))}},1039:(e,t,n)=>{n.r(t),n.d(t,{OnboardingSchoolLevelView:()=>U});var r=n(32735),a=n(57900),o=n(2948),c=n(20354),l=n(65858),i=n(45716),s=n(11607),u=n(83345),m=n(2192),d=n(38143),f=n(19808),h=n(72639),v=n(31949),p=n(84703),g=n(79612),E=n(87114),y=n(99742),b=n(86698),N=n(75359),x=n(12058),w=n(56080),L=n(75919),_=n(39375),C=n(73190),O=n(90815);const S={cover:"p3PFT",presentationList:"PT_ec"};function k(e){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},k(e)}function P(){P=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",l=o.asyncIterator||"@@asyncIterator",i=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof g?t:g,c=Object.create(o.prototype),l=new I(r||[]);return a(c,"_invoke",{value:C(e,n,l)}),c}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",h="executing",v="completed",p={};function g(){}function E(){}function y(){}var b={};s(b,c,(function(){return this}));var N=Object.getPrototypeOf,x=N&&N(N(j([])));x&&x!==n&&r.call(x,c)&&(b=x);var w=y.prototype=g.prototype=Object.create(b);function L(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function n(a,o,c,l){var i=m(e[a],e,o);if("throw"!==i.type){var s=i.arg,u=s.value;return u&&"object"==k(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,c,l)}),(function(e){n("throw",e,c,l)})):t.resolve(u).then((function(e){s.value=e,c(s)}),(function(e){return n("throw",e,c,l)}))}l(i.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function C(t,n,r){var a=d;return function(o,c){if(a===h)throw Error("Generator is already running");if(a===v){if("throw"===o)throw c;return{value:e,done:!0}}for(r.method=o,r.arg=c;;){var l=r.delegate;if(l){var i=O(l,r);if(i){if(i===p)continue;return i}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===p)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function O(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,O(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var o=m(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,p;var c=o.arg;return c?c.done?(n[t.resultName]=c.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):c:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function j(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(k(t)+" is not iterable")}return E.prototype=y,a(w,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:E,configurable:!0}),E.displayName=s(y,i,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===E||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,s(e,i,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},L(_.prototype),s(_.prototype,l,(function(){return this})),t.AsyncIterator=_,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var c=new _(u(e,n,r,a),o);return t.isGeneratorFunction(n)?c:c.next().then((function(e){return e.done?e.value:c.next()}))},L(w),s(w,i,"Generator"),s(w,c,(function(){return this})),s(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=j,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return l.type="throw",l.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var c=this.tryEntries[o],l=c.completion;if("root"===c.tryLoc)return a("end");if(c.tryLoc<=this.prev){var i=r.call(c,"catchLoc"),s=r.call(c,"finallyLoc");if(i&&s){if(this.prev<c.catchLoc)return a(c.catchLoc,!0);if(this.prev<c.finallyLoc)return a(c.finallyLoc)}else if(i){if(this.prev<c.catchLoc)return a(c.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return a(c.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var c=o?o.completion:{};return c.type=e,c.arg=t,o?(this.method="next",this.next=o.finallyLoc,p):this.complete(c)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;T(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}function T(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?I(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 I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var j=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function c(e){try{i(r.next(e))}catch(e){o(e)}}function l(e){try{i(r.throw(e))}catch(e){o(e)}}function i(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(c,l)}i((r=r.apply(e,t||[])).next())}))},A="onboarding.schoolLevel";function U(e){var t=(0,C.Q)(e.redirectUrl),n=t.onClickBack,k=t.exitOnboarding,I=t.completeStepAsync,U=t.onSaveError,V=(0,O.H)().logEvent,Z=(0,b.y)(),F=Z.availablePresentations,z=Z.setPresentation;(0,g.M)({title:i.H["school-level"].getPageTitle()});var G=c.a.useBasicFetch(v.N.currentUser()),D=(0,p.n)(),B=T((0,o.D)(d.g.AUDIENCE_FILTER,void 0,{storage:a.Z1.SessionStorage}),2)[1],M=T(r.useState(),2),H=M[0],R=M[1];return r.createElement(w.z,{namespace:A},r.createElement(w.z.Left,{className:"bg-ultramarine d-flex flex-column align-items-end justify-content-center"},r.createElement(L.N,{contentPosition:"right",annotationUrl:function(){var e,t=y.W.OnboardingV2.SchoolLevel,n=(null===(e=G.data)||void 0===e?void 0:e.instanceRegion)===f.b.US;if(!H)return t.ANNOTATION_NONE_SELECTED;switch(E.i.getMappedPresentationLevel(H.learningLevel)){case h.p.Level_1:return D?t.ANNOTATION_LEVEL_1_ICP:t.ANNOTATION_LEVEL_1;case h.p.Level_2:return D?t.ANNOTATION_LEVEL_2_ICP:n?t.ANNOTATION_LEVEL_2_US:t.ANNOTATION_LEVEL_2;case h.p.Level_3:return D?n?t.ANNOTATION_LEVEL_3_ICP_US:t.ANNOTATION_LEVEL_3_ICP:n?t.ANNOTATION_LEVEL_3_US:t.ANNOTATION_LEVEL_3;default:return t.ANNOTATION_LEVEL_1}}(),annotationPosition:"bottom-left"},r.createElement(_.Y,{presentation:H}))),r.createElement(w.z.Right,{hasCustomButtons:!1,onClickNext:function(){return j(this,void 0,void 0,P().mark((function e(){return P().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return V(l.Vw.Click,l.Ix.Next,{presentationId:H.id,presentationName:H.name,presentationDescription:H.description},{preferredPresentationOverride:H}),B(null),e.prev=2,e.next=5,z(H,"activeAndPreferred");case 5:return e.next=7,I({preferredPresentationOverride:H});case 7:e.next=13;break;case 9:return e.prev=9,e.t0=e.catch(2),U(),e.abrupt("return",Promise.reject());case 13:case"end":return e.stop()}}),e,null,[[2,9]])})))},onClickBack:n,onClickComeBackLater:k,disableNext:!H},r.createElement(N.W,null,r.createElement(u.x,{phrase:D?"headingKdm":"heading"})),r.createElement(x.X,null,r.createElement(u.x,{phrase:"info"})),r.createElement("ul",{className:"list-unstyled mb-1 ".concat(S.presentationList)},F.map((function(e){var t;return r.createElement("li",{key:e.id,className:"mb-2"},r.createElement(s.L,{onClick:function(){return function(e){V(l.Vw.Select,l.Ix.SelectPresentation,{presentationId:e.id,presentationName:e.name,presentationDescription:e.description}),R(e)}(e)}},r.createElement(m.M,{data:e,coverUrl:null===(t=e.cover)||void 0===t?void 0:t.url,imageClassName:S.cover,isSelected:e.id===(null==H?void 0:H.id)})))}))),r.createElement(x.X,null,r.createElement(u.x,{phrase:"dontWorry"}))))}},92038:(e,t,n)=>{n.d(t,{Z:()=>r});const r={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",hasThemeColor:"DX2ua",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",newVideos:"s61h8",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}}}]);
|
|
3
|
+
//# sourceMappingURL=6623-84b33c6856-lite.chunk.js.map
|