@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.3
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/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
- package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
- package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
- package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
- package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
- package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
- package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
- package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
- package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
- package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
- package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
- package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
- package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
- package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
- package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
- package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
- package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
- package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
- package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
- package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
- package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
- package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
- package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
- package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
- package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
- package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
- package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
- package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
- package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
- package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
- package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
- package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
- package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
- package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
- package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
- package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
- package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
- package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
- package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
- package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
- package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
- package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
- package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
- package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
- package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
- package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
- package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
- package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
- package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
- package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
- package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
- package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
- package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
- package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
- package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
- package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
- package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
- package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
- package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
- package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
- package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
- /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
- /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
- /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
- /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
- /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/8410-1f1fd5ccf0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-header/classrooms-header.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-header/ClassroomsHeader.tsx","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useFetchClassrooms.ts","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms/empty-state/ClassroomsEmptySearchState.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms/empty-state/ClassroomsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms/ClassroomsView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"searchContainer\":\"rwTB7\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ActionOptions, Actions as ActionButton } from 'libs/shared/components/actions/Actions';\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { RosteringAlert } from 'libs/shared/components/rostering/rostering-alert/RosteringAlert';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './classrooms-header.scss';\n\nconst namespace = 'classrooms.classroomsHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomsHeaderProps {\n activeTab: 'classrooms' | 'open-classrooms';\n actions?: ActionOptions[];\n searchBar?: React.ReactNode;\n hasRostering: boolean;\n hasShareFlowV2: boolean;\n}\n\nexport function ClassroomsHeader(props: ClassroomsHeaderProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const isMobile = breakpoints.xs || breakpoints.sm;\n \n const tabs: PillTab[] = [{\n name: getPhrase('classroomsTab'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n },\n active: props.activeTab === 'classrooms'\n }];\n\n if (props.hasShareFlowV2) {\n tabs.push({\n name: getPhrase('openClassroomsTab'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n },\n active: props.activeTab === 'open-classrooms'\n });\n }\n\n return (\n <div>\n {!!props.hasRostering && (\n <div className='my-3'>\n <RosteringAlert type='general' />\n </div>\n )}\n\n <div className='d-flex align-items-center mb-3'>\n <h1 className='flex-fill h2 me-3 my-1'><Text namespace={namespace} phrase='heading' /></h1>\n\n {props.searchBar && (\n <div className='d-flex'>\n {!isMobile && (\n <div className={`${styles.searchContainer} d-flex mb-2 mb-sm-0 me-2`}>\n {props.searchBar}\n </div>\n )}\n\n <ActionButton\n actions={props.actions ?? []}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n )}\n </div>\n\n {tabs.length > 1 && (\n <div className='mb-3'>\n <PillTabSelector tabs={tabs} />\n </div>\n )}\n\n {isMobile && props.searchBar ? (\n <div className='mb-3'>\n {props.searchBar}\n </div>\n ) : null}\n </div>\n );\n}","import { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList, UseInfiniteListResult } from 'libs/shared/hooks/UseInfiniteList';\nimport { BasePaginatedCollection, Classroom, CurrentUser } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { SearchRequests } from 'apps/search/flight-requests/SearchRequests';\n\nconst namespace = 'classrooms.hooks';\n\nexport type GetClassroomsResponse = UseInfiniteListResult<Classroom> & {\n fetchNext: (cursor?: string) => void;\n};\n\ninterface UseFetchClassroomOptions {\n withStudentsCount?: boolean;\n}\n\nexport const useFetchClassrooms = (query?: string, options?: UseFetchClassroomOptions): GetClassroomsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const alerts = useAlerts();\n const dispatch = useDispatch();\n\n const getClassroomsRequest = (cursor?: string) => {\n if (!query) {\n if (options?.withStudentsCount) {\n return ClassroomRequests.getPublishedWithStudents(currentUser.data.id, cursor);\n }\n\n return ClassroomRequests.getPublished(currentUser.data.id, cursor);\n }\n \n if (options?.withStudentsCount) {\n return SearchRequests.searchClassroomsV4(query, cursor);\n }\n \n return SearchRequests.searchClassrooms(query, currentUser.data.customerId, cursor);\n };\n\n const fetchNextPage = (cursor?: string) => Flight.getFetch(dispatch)(getClassroomsRequest(cursor));\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const response = useInfiniteList<Classroom, SearchResults<Classroom> | BasePaginatedCollection<Classroom>>(\n currentUser.data ? getClassroomsRequest : false,\n fetchNextPage,\n onError,\n response => {\n if (query)\n return (response as SearchResults<Classroom>).results;\n\n return (response as BasePaginatedCollection<Classroom>).data;\n }\n );\n\n return {\n ...response,\n fetchNext: fetchNextPage\n };\n};","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'classrooms.classroomsEmptyState';\n\ninterface ClassroomsEmptySearchStateProps {\n query: string;\n}\n\nexport function ClassroomsEmptySearchState({ query }: ClassroomsEmptySearchStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.CLASSROOMS} />\n\n <EmptyState.Heading><Text phrase='empty' options={{ query }} /></EmptyState.Heading>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'classrooms.classroomsEmptyState';\n\nexport function ClassroomsEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.CLASSROOMS} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.NEW_CLASSROOM\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ScopedSearchBar } from 'libs/shared/apps/search/components/scoped-search-bar/ScopedSearchBar';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classroom, ClassroomCollection, Config, CurrentUser, RosteringResponse } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { ClassroomsTable } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { PartialClassroomsTable } from 'apps/classrooms/components/classrooms-table/partial-classrooms-table/PartialClassroomsTable';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { useFetchClassrooms } from 'apps/classrooms/hooks/useFetchClassrooms';\nimport { ActiveClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\nimport { ClassroomsEmptySearchState } from 'apps/classrooms/views/classrooms/empty-state/ClassroomsEmptySearchState';\n\nimport { ClassroomsEmptyState } from './empty-state/ClassroomsEmptyState';\n\nconst namespace = 'classrooms.classrooms';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst CLASSROOM_APPLICATION = AppChannels.CLASSROOMS;\n\nconst newClassroomAppLink = {\n application: CLASSROOM_APPLICATION,\n action: Actions.Classrooms.NEW_CLASSROOM\n};\n\nconst classroomsTableApplinks: ActiveClassroomsTableApplinks = {\n link: {\n application: CLASSROOM_APPLICATION,\n action: Actions.Classrooms.GENERATE_JOIN_LINK\n },\n archive: {\n application: CLASSROOM_APPLICATION,\n action: Actions.Classrooms.ARCHIVE_CLASSROOM\n },\n edit: {\n application: CLASSROOM_APPLICATION,\n action: Actions.Classrooms.EDIT_CLASSROOM\n },\n classroom: {\n application: CLASSROOM_APPLICATION,\n action: Actions.Classrooms.CLASSROOM_HOME\n }\n};\n\nfunction ClassroomSearchBar() {\n return (\n <ScopedSearchBar\n id='classroom-search'\n searchAppLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }}\n searchIndices={['classroom']}\n analyticsOptions={{ entity: EntityType.Classroom, location: LocationContext.ClassroomsList }}\n placeholder={getPhrase('searchBarPlaceholder')}\n />\n );\n}\n\ninterface ClassroomsViewProps {\n query: string;\n}\n\nexport function ClassroomsView(props: ClassroomsViewProps): JSX.Element {\n const { hasShareFlowV2 } = useSettings(null);\n const { hasPermissions } = usePermissions();\n const breakpoints = useBreakpoints();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n const pinnedClassrooms = Flight.useBasicFetch<ClassroomCollection>(\n ClassroomRequests.getPinnedClassrooms(currentUser.data?.id, currentUser.data?.customerId)\n );\n\n const classroomsResponse = useFetchClassrooms(props.query);\n\n useHandleObjectError(pinnedClassrooms);\n\n async function onTogglePin(\n classroom: Classroom,\n shouldPin: boolean,\n onSuccess: () => void,\n onError: () => void\n ): Promise<void> {\n const request = shouldPin\n ? ClassroomRequests.pinClassroom\n : ClassroomRequests.unpinClassroom;\n\n try {\n await fetchAsync(request(classroom));\n \n onSuccess();\n } catch (ex) {\n onError();\n }\n }\n\n if (!hasPermissions(PermissionName.ViewClassrooms)) {\n Core.ErrorHelper.throw(new NotFoundError());\n return <></>;\n }\n\n function getActions(): ActionOptions[] {\n return [{\n label: LanguageService.getPhrase(namespace, 'newClassroom'),\n appLink: newClassroomAppLink,\n svgName: cvSvgLibrary.Plus,\n className: 'btn btn-outline-dark',\n disabled: hasRostering,\n tooltip: hasRostering ? getPhrase('disabledByRostering') : '',\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.ClassroomsList\n },\n button: !breakpoints.xs\n }];\n }\n\n const hasClassrooms = !!classroomsResponse?.items?.length;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-3'>\n <ClassroomsHeader\n searchBar={hasClassrooms || props.query ? <ClassroomSearchBar /> : null}\n actions={getActions()}\n activeTab='classrooms'\n hasRostering={hasRostering}\n hasShareFlowV2={hasShareFlowV2}\n />\n\n {(() => {\n const isFetchingClassrooms = !classroomsResponse.items\n || !pinnedClassrooms.hasCompleted\n || !rostering.hasCompleted;\n\n if (isFetchingClassrooms)\n return <PartialClassroomsTable />;\n\n if (!hasClassrooms && !props.query)\n return <ClassroomsEmptyState />;\n\n if (!hasClassrooms && props.query)\n return <ClassroomsEmptySearchState query={props.query} />;\n\n return (\n <>\n <ClassroomsTable\n pinnedClassrooms={pinnedClassrooms.data?.data ?? []}\n allClassrooms={classroomsResponse.items}\n query={props.query}\n imageCdnUrl={config.data.imageCdnUrl}\n appLinks={classroomsTableApplinks}\n onTogglePin={onTogglePin}\n refreshTable={classroomsResponse.isFetching}\n currentUser={currentUser.data}\n hasRostering={hasRostering}\n />\n {(classroomsResponse.isFetching || classroomsResponse.nextCursor) && (\n <InfiniteScrollFooter\n isFetching={classroomsResponse.isFetching}\n fetchNext={classroomsResponse.fetchNext}\n nextCursor={classroomsResponse.nextCursor}\n />\n )}\n </>\n );\n })()}\n\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["TabContents","props","tab","svgName","className","name","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","namespace","getPhrase","LanguageService","ClassroomsHeader","breakpoints","useBreakpoints","isMobile","xs","sm","application","action","activeTab","hasShareFlowV2","push","hasRostering","RosteringAlert","Text","phrase","searchBar","actions","actionsDropdownClassName","length","useFetchClassrooms","query","options","currentUser","alerts","dispatch","getClassroomsRequest","cursor","withStudentsCount","customerId","id","fetchNextPage","response","pageNumber","httpStatus","error","results","fetchNext","ClassroomsEmptySearchState","value","EmptyState","src","ImageUrls","ClassroomsEmptyState","text","icon","CLASSROOM_APPLICATION","newClassroomAppLink","classroomsTableApplinks","link","archive","edit","classroom","ClassroomSearchBar","ScopedSearchBar","searchAppLink","searchIndices","entity","location","placeholder","ClassroomsView","useSettings","hasPermissions","usePermissions","useSetPageMetadata","title","fetchAsync","UserRequests","config","ConfigRequests","rostering","RosteringRequests","status","pinnedClassrooms","ClassroomRequests","classroomsResponse","onTogglePin","shouldPin","onSuccess","onError","request","PermissionName","NotFoundError","hasClassrooms","items","label","disabled","tooltip","actionType","workflowPhase","button","hasCompleted","ClassroomsTable","allClassrooms","imageCdnUrl","appLinks","refreshTable","isFetching","nextCursor","InfiniteScrollFooter","PartialClassroomsTable"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8705],{1704:(e,t,r)=>{r.d(t,{l:()=>s});var n=r(32735),a=r(23481),i=r(9111),l=r(13876);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var o=a.T.encloseNamespace("shared.confirmationPopup");function s(e){var t,r,a=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(t,r)||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=a[0],u=a[1];return n.createElement(i.G,{title:e.title,closePopup:e.closePopup},n.createElement(n.Fragment,null,e.children,n.createElement(l.u,null,n.createElement(l.u.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||o("cancel")}),n.createElement(l.u.Submit,{onClick:function(){u(!0),e.onClickConfirm()},text:e.confirmButtonText||o("confirm"),variant:e.confirmButtonVariant,showSpinner:s,disabled:e.disabledConfirmButton}))))}s.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"}},57266:(e,t,r)=>{r.d(t,{e:()=>l});var n=r(81886),a=r(1048),i=r(75795),l={updateParams:function(e,t){var r=i.O.getCurrentRoute().appLink,l="string"==typeof r.params?n.Q.Ab.DeserializeQueryParams(r.params):r.params;t.keysToRemove&&(l=a.t.omit(l,t.keysToRemove));var c=(null==t?void 0:t.merge)?Object.assign(Object.assign({},l),e):e,o=Object.assign(Object.assign({},r),{params:c});a.t.isEqual(r,o)||n.Q.C$.trigger(o,a.t.omit(t,["merge","keysToRemove"]))}}},48705:(e,t,r)=>{r.d(t,{x:()=>we});var n=r(32735),a=r(23481),i=r(92869),l=r(75896),c=r(97958),o=a.T.encloseNamespace("shared.interactionQuestionsEmptyState");function s(e){return n.createElement(c.u,{className:"rounded h-100 bg-white justify-content-center py-4"},n.createElement(c.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(c.u.Info,{className:"w-100"},o("emptyStateText")))}var u=r(69087),m=r(83345),d="shared.interactionResponseList";function f(e){return n.createElement(n.Fragment,null,n.createElement(c.u,{className:"m-4"},n.createElement(c.u.Image,{src:function(){switch(e.filter){case"correct":return e.correctImageUrl;case"incorrect":return e.incorrectImageUrl;case"marking_required":return e.markingRequiredImageUrl;case"skipped":return e.skippedImageUrl}}(),className:"w-25 h-auto"}),n.createElement(c.u.Info,null,n.createElement(m.x,{namespace:d,phrase:function(){switch(e.filter){case"correct":return"correctEmptyState";case"incorrect":return"incorrectEmptyState";case"marking_required":return"markingRequiredEmptyState";case"skipped":return"skippedEmptyState"}}()}))))}function p(e){function t(t){return"rounded-pill bg-light ".concat(function(t){return t===e.filter}(t)?"bg-dark text-white":"")}return n.createElement("div",{className:"d-flex gap-2 m-3"},n.createElement("button",{className:t("marking_required"),onClick:function(){return e.toggleFilter("marking_required")}},n.createElement(m.x,{namespace:d,phrase:"markingRequired"})),n.createElement("button",{className:t("correct"),onClick:function(){return e.toggleFilter("correct")}},n.createElement(m.x,{namespace:d,phrase:"correct"})),n.createElement("button",{className:t("incorrect"),onClick:function(){return e.toggleFilter("incorrect")}},n.createElement(m.x,{namespace:d,phrase:"incorrect"})),n.createElement("button",{className:t("skipped"),onClick:function(){return e.toggleFilter("skipped")}},n.createElement(m.x,{namespace:d,phrase:"skipped"})))}var g=r(86572),b=a.T.encloseNamespace("interactives.interactionResponseListHeader");function y(e){var t,r=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return n.createElement("div",{className:"rounded bg-white"},n.createElement("div",{className:"p-2 position-relative"},n.createElement("div",{className:"d-flex"},n.createElement(g.y,{interaction:e.interaction,iconClassName:"flex-shrink-0"})),!!r&&n.createElement("div",{className:"mt-2"},n.createElement("strong",null,b("suggestedResponse")),n.createElement("p",{className:"m-0"},r))))}var v=a.T.encloseNamespace("shared.submitMarkedAnswers");function h(e){return n.createElement("div",{className:"d-flex justify-content-end"},n.createElement("button",{className:"btn btn-outline-dark",onClick:e.submit,disabled:e.disabled},v("submitAnswers")))}var E=r(26136),w=r(39157),I=r(69186),S=r(36532),k=r(28972),N=r(83140),A=r(80845);const C={awaitingMarking:"PPNkp"};function x(e){return x="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},x(e)}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var j="shared.interactionResponseList",T=a.T.encloseNamespace(j);function O(e){var t,r,a,i,l=(a=n.useState(),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,i)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?U(e,t):void 0}}(a,i)||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.")}()),o=l[0],s=l[1],d=(r=e.interaction,e.results.students.filter((function(e){return N.A.isInteractionCorrect(r,(0,A.j_)(e))===k.w.AwaitingMarking})).reduce((function(e,t){var r,n;return Object.assign(Object.assign({},e),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=x(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=x(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},(null===(r=t.user)||void 0===r?void 0:r.id)||(null===(n=t.user)||void 0===n?void 0:n.sessionId),!0))}),{})),g=Object.keys(e.markedAnswers).length;if(!(null===(t=e.results.students)||void 0===t?void 0:t.length))return n.createElement("div",{className:"d-flex flex-column h-100"},n.createElement(c.u,{className:"bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center"},n.createElement(c.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(c.u.Heading,null,T("emptyStateHeading")),n.createElement(c.u.Info,{className:"w-100"},T("emptyStateDescription"))));var b=e.results.students.filter((function(t){var r=(0,A.j_)(t),n=N.A.isInteractionCorrect(e.interaction,r),a={correct:k.w.Correct,incorrect:k.w.Incorrect,marking_required:k.w.AwaitingMarking,skipped:k.w.UnAnswered};return!o||o in a&&n===a[o]}));return n.createElement(n.Fragment,null,e.reportsStyling&&n.createElement(y,{interaction:e.interaction}),n.createElement("div",{className:e.reportsStyling?"d-flex justify-content-end":"d-flex align-items-center justify-content-between border-bottom px-3 py-2"},!e.reportsStyling&&n.createElement("p",{className:"fw-semibold mb-0"},n.createElement(m.x,{namespace:j,phrase:"studentAnswers"})),!!Object.keys(d).length&&n.createElement(S.u,{id:"submitAnswers",title:T("demoOnly"),spanHack:e.isDemo},n.createElement("div",{className:"".concat(e.isDemo?"pointer-events-none":""," ").concat(e.reportsStyling?"mt-2":"")},n.createElement(h,{submit:e.submitMarkedAnswers,disabled:!g})))),n.createElement(n.Fragment,null,!e.reportsStyling&&n.createElement(p,{filter:o,toggleFilter:function(e){s(o===e?null:e)}}),!e.reportsStyling&&!b.length&&o&&n.createElement(f,{filter:o,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl}),b&&n.createElement("ul",{className:"list-unstyled mb-0"},b.map((function(t,r){var a,i,l=(0,E.B)(t.user,e.anonymiseUsers),c=d[(null===(a=t.user)||void 0===a?void 0:a.id)||(null===(i=t.user)||void 0===i?void 0:i.sessionId)],o=e.reportsStyling?"bg-white p-2":"bg-white px-3 pt-3 pb-2";return c&&(o+=" ".concat(C.awaitingMarking," my-1")),n.createElement("li",{key:r,className:e.reportsStyling?"":"border-bottom"},e.reportsStyling?n.createElement(I.O,{interaction:e.interaction,studentResults:t,markedStatus:(0,w.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:l,className:o,showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):n.createElement(u.d,{interaction:e.interaction,studentResults:t,markedStatus:(0,w.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:l,className:o,showFeedback:!0}))}))),e.reportsStyling&&!!d.length&&n.createElement("div",{className:"mt-2"},n.createElement(h,{submit:e.submitMarkedAnswers,disabled:!g}))))}var R=r(34079);function M(e){var t;return n.createElement("div",null,n.createElement("p",{className:"mb-0"},(t=e.interaction.data.sentence)?t.split(/({\d+})/).map((function(t,r){var a=t.match(/{(\d+)}/);if(a){var i=a[1],l=e.interaction.actionableItems.find((function(e){return+e.order==+i}));if(l)return n.createElement("span",{className:"bg-white border border-gray-300 rounded p-1 lh-lg",key:r},l.name)}return t})):""))}var W=r(7730);const q={row:"fXno_",answerImage:"pDAuW",answerWidth:"YHK27"};function P(e){var t,r;return(null===(r=l.m.first(null===(t=e.interaction)||void 0===t?void 0:t.actionableItems).data)||void 0===r?void 0:r.imageUrl)?n.createElement("div",{className:q.answerWidth},n.createElement(W.n,{interaction:e.interaction,size:"sm",showFeedback:!1,showCorrectnessIcons:!0,isDisplayOnly:!0})):n.createElement("ul",{className:"".concat(q.answerWidth," list-unstyled row g-2")},e.interaction.actionableItems.map((function(t){return n.createElement("li",{key:t.id,className:"col-12"},n.createElement("div",{className:"".concat(t.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border py-1 px-2 m-0")},n.createElement("span",{className:"fw-semibold"},e.indexToLetter(t.order),". "),n.createElement("span",null,t.name)))})))}var B="shared.questionTable";function D(e){var t,r=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return r?n.createElement("div",{className:"".concat(q.answerWidth," bg-light-blue rounded p-2 mb-2")},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("p",{className:"fw-semibold mb-2"},n.createElement(m.x,{namespace:B,phrase:"suggestedResponse"}))),n.createElement("p",{className:"mb-0"},r)):n.createElement(n.Fragment,null)}function F(e){return n.createElement("ul",{className:"list-unstyled d-flex gap-2"},e.interaction.actionableItems.map((function(t){return n.createElement("li",{key:t.id,className:"".concat(t.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border px-2 py-1 mb-2 w-50")},n.createElement("span",{className:"fw-semibold"},e.indexToLetter(t.order),". "),n.createElement("span",null,t.name))})))}var _=r(38129);function L(e){var t=function(){switch(e.interaction.typeId){case _.Z9.MultipleChoice:return n.createElement(P,{interaction:e.interaction,indexToLetter:$});case _.Z9.TrueOrFalse:return n.createElement(F,{interaction:e.interaction,indexToLetter:$});case _.Z9.ShortAnswer:return n.createElement(D,{interaction:e.interaction});case _.Z9.MissingWord:return n.createElement(M,{interaction:e.interaction});default:return null}}();return t?n.createElement("div",{className:"w-100 mt-3"},t):n.createElement(n.Fragment,null)}var Q=r(40782);function Z(e){return Z="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},Z(e)}var H=a.T.encloseNamespace("shared.questionTable");function z(e,t,r){var n=e.cells.find((function(e){return e.column.id===r})).value,a=t.cells.find((function(e){return e.column.id===r})).value;return n.awaitingMarking?-1:a.awaitingMarking||n.percentCorrect>=a.percentCorrect?1:-1}function K(e){var t;return n.createElement("div",{className:"d-flex ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function V(e){return n.createElement(K,{className:e.column.isSorted&&"fw-bold"},H(e.phraseKey))}function $(e){return String.fromCharCode(e+"A".charCodeAt(0))}var G=r(8246),J=a.T.encloseNamespace("shared.questionTable");function X(e,t){var r=e.actionableItems.map((function(t,r){return{id:t.id,label:e.typeId===_.Z9.MultipleChoice?$(r):t.name,isCorrect:t.isCorrect,count:0}}));return t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){var t=l.m.findWhere(r,{id:e.id});t&&t.count++}))})),r}function Y(e,t){var r=e.actionableItems.map((function(e){return{id:e.id,label:e.name,isCorrect:e.isCorrect,count:0}}));return r.push({label:J("incorrect"),count:0,isCorrect:!1}),t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){var t=l.m.findWhere(r,{id:e.id});t&&e.status===G.N.Correct?t.count++:l.m.findWhere(r,{label:J("incorrect")}).count++}))})),r}function ee(e,t){var r=[{label:J("correct"),isCorrect:!0,count:0},{label:J("incorrect"),isCorrect:!1,count:0}];return t.students.forEach((function(t){var n=l.m.last(t.results).attempts,a=l.m.findWhere(n,{id:e.id});a&&a.answers.forEach((function(e){if(e.status===G.N.Correct&&l.m.findWhere(r,{label:J("correct")}).count++,e.status===G.N.Incorrect&&l.m.findWhere(r,{label:J("incorrect")}).count++,e.status===G.N.PendingReview){var t=l.m.findWhere(r,{label:J("pending")});t||(r.push({label:J("pending"),count:0,isCorrect:!1}),t=l.m.findWhere(r,{label:J("pending")})),t.count++}}))})),r}var te=r(83914),re=r(35223),ne="shared.questionTable",ae=a.T.encloseNamespace(ne);function ie(e){var t=function(){if(e.interaction&&e.results){var t;switch(e.interaction.typeId){case _.Z9.ShortAnswer:case _.Z9.Illustration:t=ee;break;case _.Z9.MissingWord:t=Y;break;case _.Z9.MultipleChoice:case _.Z9.TrueOrFalse:t=X}return t(e.interaction,e.results)}}(),r=null==t?void 0:t.reduce((function(e,t){return t.count>e?t.count:e}),0);function a(e){var t="border rounded me-2";return e.count?e.label===ae("pending")?"".concat(t," border-blue bg-light-blue"):e.isCorrect?"".concat(t," border-green bg-light-green"):"".concat(t," border-red bg-light-red"):"".concat(t," border bg-light px-1")}return n.createElement("div",{className:"border border rounded p-3 mb-3"},n.createElement("div",{className:"d-flex align-items-center gap-2 mb-3"},n.createElement("div",{className:"rounded-circle bg-light-teal text-teal"},n.createElement(te.x,{svgName:re.vn.Lightbulb,size:te.S.Large})),n.createElement("h2",{className:"h6 mb-0"},n.createElement("span",null,n.createElement(m.x,{namespace:ne,phrase:"questionSummary"})))),n.createElement("div",{className:"d-flex gap-2"},n.createElement("div",{className:"max-w-25"},null==t?void 0:t.map((function(e){return n.createElement("p",{key:e.label,className:"text-truncate mb-2"},e.label)}))),n.createElement("div",{className:"flex-grow-1"},null==t?void 0:t.map((function(t,i){return n.createElement("div",{key:"".concat(e.interaction.id).concat(i),className:"d-flex mb-2"},n.createElement("div",{className:a(t),style:{width:"".concat(t.count/r*100,"%"),height:20}}),n.createElement("span",null,t.count))})))))}var le=a.T.encloseNamespace("shared.selectedInteractionEmptyState");function ce(e){return n.createElement(c.u,{className:"rounded h-100 bg-white justify-content-center py-4"},n.createElement(c.u.Image,{src:e.emptyStateUrl,size:"small"}),n.createElement(c.u.Info,{className:"w-100"},le("emptyStateText")))}var oe=r(97364),se=r(6748),ue=r(57266);function me(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function de(e){var t,r,a,c,o=(a=n.useState((0,oe.P)(e.sortBy,"correctlyAnswered")),c=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,c)||function(e,t){if(e){if("string"==typeof e)return me(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?me(e,t):void 0}}(a,c)||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.")}()),u=o[0],m=o[1],d=function(e,t,r,a){return n.useMemo((function(){var r=(0,A.Q)(e),n=r.reduce((function(e,t,r){return Object.assign(Object.assign({},e),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},t.id,r))}),{}),i=r.map((function(e){return Object.assign(Object.assign({},e),{questionNumber:n[e.id],resultsSummary:(0,w.nq)(e,t)})}));if("correctlyAnswered"===(null==a?void 0:a.id)){var c=l.m.sortBy(i,(function(e){return e.resultsSummary.awaitingMarking?-1:e.resultsSummary.percentCorrect}));return a.desc?c.reverse():c}return i}),[r,a])}(e.interactive,e.results,e.refreshTable,l.m.first(u)),f=e.selectedInteractionId&&(0,w.Zs)(e.interactive,e.selectedInteractionId);return n.createElement("div",{className:"row"},n.createElement("div",{className:"col-6 flex-grow-1"},n.createElement(se.i,{key:e.selectedInteractionId,columns:(r=e.showAnswersInTable,[{Header:function(e){var t=e.column;return n.createElement(V,{column:t,phraseKey:"#"})},accessor:"questionNumber",id:"index",Cell:function(e){var t=e.row.original.questionNumber;return n.createElement(K,null,t+1,".")},width:15,disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(V,{column:t,phraseKey:"question"})},accessor:"data",Cell:function(e){var t=e.row.original,a=e.initialState.selectedRowIds,i=null==a?void 0:a[null==t?void 0:t.id];return n.createElement(K,{className:"flex-column"},n.createElement("div",{className:"".concat(i?"":"clamp-1"," pe-2")},n.createElement(g.y,{interaction:t,containerClassName:"d-flex"})),r&&i&&n.createElement(L,{interaction:t}))},disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(V,{column:t,phraseKey:"score"})},accessor:"resultsSummary",id:"correctlyAnswered",Cell:function(e){var t=e.value,r=t.percentCorrect;return t.awaitingMarking?n.createElement(R.O,{title:H("markingRequired"),className:"flex-grow-1",tooltipClassName:"d-block",showLabel:!0}):n.createElement(Q.O,{percentage:r,layout:Q.I.LabelBefore})},width:60,sortDescFirst:!0,sortType:z}]),data:d,theme:e.theme,onSelectRow:function(e){var t=e.original;i.t.preventScrollTop(),ue.e.updateParams({interactionId:t.id},{merge:!0})},initialSelectedRowIds:f?[f.id]:null,getRowId:function(e){return e.id},enableSort:!0,manualSort:!0,onSort:m,initialSortBy:u,emptyState:n.createElement(s,{emptyStateImageUrl:e.emptyQuestionsStateImageUrl})})),n.createElement("div",{className:"col-6 d-flex flex-column"},!e.reportsStyling&&e.selectedInteractionId&&!!(null===(t=e.results.students)||void 0===t?void 0:t.length)&&n.createElement(ie,{interaction:f,results:e.results}),n.createElement("div",{className:"rounded flex-grow-1 ".concat(e.reportsStyling?"":"border")},!!f&&n.createElement(O,{interaction:f,results:e.results,markedAnswers:e.markedAnswers,addMarkedAnswers:e.addMarkedAnswers,submitMarkedAnswers:e.submitMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,emptyStateImageUrl:e.emptyResponseStateImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl,reportsStyling:e.reportsStyling,isDemo:e.isDemo}),!f&&n.createElement(ce,{emptyStateUrl:e.selectQuestionImageUrl}))))}var fe=r(9193),pe=r(1704),ge=r(99742);const be={partialInsights:"mhxg4"};function ye(){return n.createElement("div",null,n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(be.partialInsights," rounded partial-loading-background")})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(be.partialInsights," rounded partial-loading-background")}))))}function ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var he=a.T.encloseNamespace("shared.interactiveInsightsQuestions"),Ee={table:"bg-white rounded border h-100 pb-2",header:"border-bottom px-3 py-2 mb-2",headerCell:"d-flex align-items-center",cell:"",row:"px-3 py-2 bg-light-blue-hover",selectedRow:"bg-gray-100",sortIndicator:"ms-2"};function we(e){var t,r,a,i,l,c=(i=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,c=[],o=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{if(!o&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(i,l)||function(e,t){if(e){if("string"==typeof e)return ve(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ve(e,t):void 0}}(i,l)||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.")}()),o=c[0],s=c[1],u=(0,fe.D)(null===(t=e.interactive)||void 0===t?void 0:t.id,null===(r=e.interactiveMetadata)||void 0===r?void 0:r.id,(function(){return s(!1)})),m=u.markedAnswers,d=u.addMarkedAnswers,f=u.submitMarkedAnswers;return n.createElement(n.Fragment,null,!e.hasDataLoaded&&n.createElement(ye,null),e.hasDataLoaded&&n.createElement(de,{interactive:e.interactive,results:e.results,markedAnswers:m,addMarkedAnswers:d,submitMarkedAnswers:function(){return s(!0)},imageCdnUrl:e.config.imageCdnUrl,selectedInteractionId:e.interactionId,refreshTable:e.isFetching,emptyResponseStateImageUrl:ge.W.Insights.NO_RESPONSES,emptyQuestionsStateImageUrl:ge.W.Insights.NO_QUESTIONS,selectQuestionImageUrl:ge.W.Insights.NO_DATA,anonymiseUsers:e.anonymiseUsers,sortBy:e.sortBy,showAnswersInTable:!0,theme:Ee,correctImageUrl:ge.W.Insights.JIGSAW,incorrectImageUrl:ge.W.Insights.RED_JIGSAW,skippedImageUrl:ge.W.Insights.SKIPPED,markingRequiredImageUrl:ge.W.Insights.CLIPBOARD,isDemo:e.isDemo}),o&&n.createElement(pe.l,{title:he("markPopupTitle",{smartCount:null!==(a=Object.keys(m).length)&&void 0!==a?a:0}),closePopup:function(){return s(!1)},confirmButtonText:he("submit"),confirmButtonVariant:"dark",onClickConfirm:f},n.createElement("p",null,he("markPopupBody"))))}}}]);
|
|
2
|
+
//# sourceMappingURL=8705-ecd20ef6cb-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/8705-ecd20ef6cb-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/libs/shared/src/utils/AppRouteHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-questions-empty-state/InteractionQuestionsEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/interaction-response-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMissingWord.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/question-table-answers.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMultipleChoice.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableShortAnswer.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableTrueOrFalse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTableUtils.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummaryUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummary.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/partial-loading/partial-interactive-insights-questions.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/partial-loading/PartialInteractiveInsightsQuestions.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","import { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\ninterface UpdateParamsOptions extends Core.AppLinkOptions {\n merge?: boolean;\n keysToRemove?: string[]\n}\n\nexport const AppRouteHelper = {\n /**\n * Utility to update the params on the current appRoute.\n * \n * This is built on top of ContextService rather than build into AppLink\n * as we will generally only want to update params on appRoutes, not appLinks.\n */\n updateParams(params: HashObject, options?: UpdateParamsOptions): void {\n const { appLink } = ContextService.getCurrentRoute();\n\n let currentParams = typeof(appLink.params) === 'string'\n ? Core.LocationUtils.DeserializeQueryParams(appLink.params)\n : appLink.params as HashObject;\n\n if (options.keysToRemove)\n currentParams = ObjectHelper.omit(currentParams, options.keysToRemove);\n\n const updatedParams = options?.merge\n ? { ...currentParams, ...params }\n : params;\n\n const updatedAppLink = {\n ...appLink,\n params: updatedParams\n };\n\n /**\n * This prevents us pointlessly re-triggering if we're already on the right applink.\n */\n if (ObjectHelper.isEqual(appLink, updatedAppLink))\n return;\n \n Core.AppLinkHelper.trigger(updatedAppLink, ObjectHelper.omit(options, [ 'merge', 'keysToRemove' ]));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'shared.interactionQuestionsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractionQuestionsEmptyStateProps {\n emptyStateImageUrl: string;\n}\n\nexport function InteractionQuestionsEmptyState(props: InteractionQuestionsEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='rounded h-100 bg-white justify-content-center py-4'>\n <EmptyState.Image\n src={props.emptyStateImageUrl}\n size='small'\n />\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateText')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.interactionResponseList';\n\nexport type InteractionResponseFilterType = 'marking_required' | 'correct' | 'incorrect' | 'skipped';\n\ninterface InteractionResponseListFiltersEmptyStatesProps {\n filter: InteractionResponseFilterType;\n markingRequiredImageUrl: string;\n correctImageUrl: string;\n incorrectImageUrl: string;\n skippedImageUrl: string;\n}\n\nexport function InteractionResponseListFiltersEmptyStates(props: InteractionResponseListFiltersEmptyStatesProps) {\n function getFilterEmptyStateImageUrl() {\n switch (props.filter) {\n case 'correct': return props.correctImageUrl;\n case 'incorrect': return props.incorrectImageUrl;\n case 'marking_required': return props.markingRequiredImageUrl;\n case 'skipped': return props.skippedImageUrl;\n }\n }\n\n function getFilterEmptyStatePhrase() {\n switch (props.filter) {\n case 'correct': return 'correctEmptyState';\n case 'incorrect': return 'incorrectEmptyState';\n case 'marking_required': return 'markingRequiredEmptyState';\n case 'skipped': return 'skippedEmptyState';\n }\n }\n\n return (\n <>\n <EmptyState className='m-4'>\n <EmptyState.Image src={getFilterEmptyStateImageUrl()} className='w-25 h-auto' />\n <EmptyState.Info>\n <Text namespace={namespace} phrase={getFilterEmptyStatePhrase()} />\n </EmptyState.Info>\n </EmptyState>\n </>\n );\n}\n\ninterface InteractionResponseListFiltersProps {\n filter: InteractionResponseFilterType;\n toggleFilter: (filter: InteractionResponseFilterType) => void\n}\n\nexport function InteractionResponseListFilters(props: InteractionResponseListFiltersProps) {\n function isFilterSelected(filterButton: InteractionResponseFilterType) {\n return filterButton === props.filter;\n }\n\n function getFilterClassName(filterButton: InteractionResponseFilterType) {\n return `rounded-pill bg-light ${isFilterSelected(filterButton) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n\n <div className='d-flex gap-2 m-3'>\n <button className={getFilterClassName('marking_required')} onClick={() => props.toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequired' />\n </button>\n <button className={getFilterClassName('correct')} onClick={() => props.toggleFilter('correct')}>\n <Text namespace={namespace} phrase='correct' />\n </button>\n <button className={getFilterClassName('incorrect')} onClick={() => props.toggleFilter('incorrect')}>\n <Text namespace={namespace} phrase='incorrect' />\n </button>\n <button className={getFilterClassName('skipped')} onClick={() => props.toggleFilter('skipped')}>\n <Text namespace={namespace} phrase='skipped' />\n </button>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.interactionResponseListHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractionResponseListHeaderProps {\n interaction: Interaction;\n}\n\nexport function InteractionResponseListHeader(props: InteractionResponseListHeaderProps): JSX.Element {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n return (\n <div className='rounded bg-white'>\n <div className='p-2 position-relative'>\n <div className='d-flex'>\n <InteractionLabel\n interaction={props.interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {!!suggestedResponse &&\n <div className='mt-2'>\n <strong>{getPhrase('suggestedResponse')}</strong>\n <p className='m-0'>{suggestedResponse}</p>\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.submitMarkedAnswers';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubmitMarkedAnswersProps {\n submit: () => void;\n disabled: boolean\n}\n\nexport function SubmitMarkedAnswers(props: SubmitMarkedAnswersProps): JSX.Element {\n return (\n <div className='d-flex justify-content-end'>\n <button\n className='btn btn-outline-dark'\n onClick={props.submit}\n disabled={props.disabled}\n >\n {getPhrase('submitAnswers')}\n </button>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"awaitingMarking\":\"PPNkp\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { InteractionResponseFilterType, InteractionResponseListFilters, InteractionResponseListFiltersEmptyStates } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListFilters';\nimport { InteractionResponseListHeader } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader';\nimport { SubmitMarkedAnswers } from 'libs/shared/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractiveResultSet, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport styles from './interaction-response-list.scss';\n\nconst namespace = 'shared.interactionResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getResponsesToMark(\n interaction: Interaction,\n studentResults: StudentResults[]\n): HashObject {\n const responsesToMark = studentResults.filter(s => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(\n interaction,\n getStudentResult(s)\n );\n return correctness === InteractionCorrectness.AwaitingMarking;\n });\n\n return responsesToMark.reduce((acc, s) => ({\n ...acc,\n [s.user?.id || s.user?.sessionId]: true\n }), {});\n}\n\ninterface InteractionResponseListProps {\n interaction: Interaction\n results: InteractiveResultSet;\n markedAnswers: MarkedAnswerHash;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n imageCdnUrl: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n emptyStateImageUrl: string;\n markingRequiredImageUrl: string;\n correctImageUrl: string;\n incorrectImageUrl: string;\n skippedImageUrl: string;\n isDemo?: boolean;\n}\n\nexport function InteractionResponseList(props: InteractionResponseListProps): JSX.Element {\n const [ filter, setFilter ] = React.useState<InteractionResponseFilterType>();\n\n const responsesToMark = getResponsesToMark(props.interaction, props.results.students);\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n if (!props.results.students?.length)\n return (\n <div className='d-flex flex-column h-100'>\n <EmptyState className='bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n </div>\n );\n\n\n function toggleFilter(selectedFilter: InteractionResponseFilterType) {\n setFilter(filter === selectedFilter ? null : selectedFilter);\n }\n\n function filterStudentResults() {\n return props.results.students.filter(s => {\n const result = getStudentResult(s);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n const filterMap = {\n correct: InteractionCorrectness.Correct,\n incorrect: InteractionCorrectness.Incorrect,\n marking_required: InteractionCorrectness.AwaitingMarking,\n skipped: InteractionCorrectness.UnAnswered\n };\n\n return !filter || (filter in filterMap && correctness === filterMap[filter]);\n });\n }\n\n const filteredStudentResults = filterStudentResults();\n\n return (\n <>\n {props.reportsStyling && <InteractionResponseListHeader interaction={props.interaction} />}\n <div className={props.reportsStyling\n ? 'd-flex justify-content-end'\n : 'd-flex align-items-center justify-content-between border-bottom px-3 py-2'\n }>\n {!props.reportsStyling && <p className='fw-semibold mb-0'><Text namespace={namespace} phrase='studentAnswers' /></p>}\n {!!Object.keys(responsesToMark).length &&\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack={props.isDemo}>\n <div className={`${props.isDemo ? 'pointer-events-none' : ''} ${props.reportsStyling ? 'mt-2' : ''}`}>\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n </div>\n </Tooltip>\n }\n </div>\n <>\n {!props.reportsStyling && <InteractionResponseListFilters filter={filter} toggleFilter={toggleFilter} />}\n\n {!props.reportsStyling && !filteredStudentResults.length && filter && (\n <InteractionResponseListFiltersEmptyStates\n filter={filter}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n correctImageUrl={props.correctImageUrl}\n incorrectImageUrl={props.incorrectImageUrl}\n skippedImageUrl={props.skippedImageUrl}\n />\n )}\n \n {filteredStudentResults && (\n <ul className='list-unstyled mb-0'>\n {filteredStudentResults.map((s, idx) => {\n const anonymisedUserName = anonymiseUserName(s.user, props.anonymiseUsers);\n const markingRequired = responsesToMark[s.user?.id || s.user?.sessionId];\n\n let className = props.reportsStyling ? 'bg-white p-2' : 'bg-white px-3 pt-3 pb-2';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking} my-1`;\n\n return (\n <li key={idx} className={props.reportsStyling ? '' : 'border-bottom'}>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={anonymisedUserName}\n className={className}\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={anonymisedUserName}\n className={className}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n )}\n {props.reportsStyling && !!responsesToMark.length &&\n <div className='mt-2'>\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n </div>\n }\n </>\n </>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\n\nexport function QuestionTableMissingWord(props: QuestionTableAnswersProps) {\n const replacePlaceholders = (str: string) => {\n if (!str) return '';\n\n return str.split(/({\\d+})/).map((part, index) => {\n const match = part.match(/{(\\d+)}/);\n\n if (match) {\n const key = match[1];\n\n const replacement = props.interaction.actionableItems.find(answer => +answer.order === +key);\n\n\n if (replacement) {\n return <span className='bg-white border border-gray-300 rounded p-1 lh-lg' key={index}>{replacement.name}</span>;\n }\n }\n\n return part;\n });\n };\n\n return (\n <div>\n <p className='mb-0'>{replacePlaceholders(props.interaction.data.sentence)}</p>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"fXno_\",\"answerImage\":\"pDAuW\",\"answerWidth\":\"YHK27\"};","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { MultipleChoiceInteractionAnswers } from 'libs/shared/components/interaction-answers/multiple-choice/MultipleChoiceInteractionAnswers';\n\nimport styles from './question-table-answers.scss';\n\nexport function QuestionTableMultipleChoice(props: QuestionTableAnswersProps) {\n const hasImages = !!ArrayHelper.first(props.interaction?.actionableItems).data?.imageUrl;\n\n if (!hasImages) {\n return (\n <ul className={`${styles.answerWidth} list-unstyled row g-2`}>\n {props.interaction.actionableItems.map(option => {\n return (\n <li key={option.id} className='col-12'>\n <div className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border py-1 px-2 m-0`}>\n <span className='fw-semibold'>{props.indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </div>\n </li>\n );\n })}\n </ul>\n );\n }\n\n return (\n <div className={styles.answerWidth}>\n <MultipleChoiceInteractionAnswers\n interaction={props.interaction}\n size='sm'\n showFeedback={false}\n showCorrectnessIcons\n isDisplayOnly\n />\n </div>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './question-table-answers.scss';\n\nconst namespace = 'shared.questionTable';\n\nexport function QuestionTableShortAnswer(props: QuestionTableAnswersProps) {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n if (!suggestedResponse) return <></>;\n\n return (\n <div className={`${styles.answerWidth} bg-light-blue rounded p-2 mb-2`}>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold mb-2'>\n <Text namespace={namespace} phrase='suggestedResponse' />\n </p>\n </div>\n\n <p className='mb-0'>{suggestedResponse}</p>\n </div>\n );\n}","import React from 'react';\n\nimport { QuestionTableAnswersProps } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\n\n\nexport function QuestionTableTrueOrFalse(props: QuestionTableAnswersProps) {\n return (\n <ul className='list-unstyled d-flex gap-2'>\n {props.interaction.actionableItems.map(option => {\n return (\n <li\n key={option.id}\n className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border px-2 py-1 mb-2 w-50`}\n >\n <span className='fw-semibold'>{props.indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </li>\n );\n })}\n </ul>\n );\n}","import React from 'react';\n\nimport { QuestionTableMissingWord } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMissingWord';\nimport { QuestionTableMultipleChoice } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableMultipleChoice';\nimport { QuestionTableShortAnswer } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableShortAnswer';\nimport { QuestionTableTrueOrFalse } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableTrueOrFalse';\nimport { indexToLetter } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTableUtils';\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\n\nexport interface QuestionTableAnswersProps {\n interaction: Interaction;\n indexToLetter?: (index: number) => string;\n}\n\nexport function QuestionTableAnswers(props: QuestionTableAnswersProps) {\n function getQuestionTableAnswerComponent(): JSX.Element {\n switch (props.interaction.typeId) {\n case InteractionTypeId.MultipleChoice:\n return <QuestionTableMultipleChoice interaction={props.interaction} indexToLetter={indexToLetter} />;\n case InteractionTypeId.TrueOrFalse:\n return <QuestionTableTrueOrFalse interaction={props.interaction} indexToLetter={indexToLetter} />;\n case InteractionTypeId.ShortAnswer:\n return <QuestionTableShortAnswer interaction={props.interaction} />;\n case InteractionTypeId.MissingWord:\n return <QuestionTableMissingWord interaction={props.interaction} />;\n default: return null;\n }\n }\n\n const QuestionTableAnswerComponent = getQuestionTableAnswerComponent();\n\n if (!QuestionTableAnswerComponent) return <></>;\n\n return (\n <div className='w-100 mt-3'>\n {QuestionTableAnswerComponent}\n </div>\n );\n}","import React from 'react';\nimport { Column, ColumnInstance, Row, SortingRule } from 'react-table';\n\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 { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { QuestionTableAnswers } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-table-answers/QuestionTableAnswers';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction sortScore(\n rowA: Row<InteractionWithResultsSummary>,\n rowB: Row<InteractionWithResultsSummary>,\n columnId: string\n): 1 | -1 {\n const cellA = rowA.cells.find(cell => cell.column.id === columnId).value;\n const cellB = rowB.cells.find(cell => cell.column.id === columnId).value;\n\n if (cellA.awaitingMarking)\n return -1;\n\n if (cellB.awaitingMarking)\n return 1;\n\n return cellA.percentCorrect >= cellB.percentCorrect\n ? 1\n : -1;\n}\ninterface CellWrapperProps {\n className?: string;\n}\n\nfunction CellWrapper(props: React.PropsWithChildren<CellWrapperProps>): JSX.Element {\n return (\n <div className={`d-flex ${props.className ?? ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderCellProps {\n column: ColumnInstance<InteractionWithResultsSummary>;\n phraseKey: string;\n}\n\nfunction HeaderCell(props: HeaderCellProps): JSX.Element {\n return (\n <CellWrapper className={props.column.isSorted && 'fw-bold'}>\n {getPhrase(props.phraseKey)}\n </CellWrapper>\n );\n}\n\nexport function getColumns(\n showAnswersInTable: boolean\n): Column<InteractionWithResultsSummary>[] {\n return [\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='#' />,\n accessor: 'questionNumber',\n id: 'index',\n Cell: ({ row: { original: { questionNumber } } }) => {\n return <CellWrapper>{questionNumber + 1}.</CellWrapper>;\n },\n width: 15,\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='question' />,\n accessor: 'data', // This isn't used but it's needed for the typings on row,\n Cell: ({ row: { original: interaction }, initialState: { selectedRowIds } }) => {\n const selectedRow = selectedRowIds?.[interaction?.id];\n\n return (\n <CellWrapper className='flex-column'>\n <div className={`${!selectedRow ? 'clamp-1' : ''} pe-2`}>\n <InteractionLabel interaction={interaction} containerClassName='d-flex' />\n </div>\n\n {showAnswersInTable && selectedRow && (\n <QuestionTableAnswers interaction={interaction} />\n )}\n </CellWrapper>\n );\n },\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='score' />,\n accessor: 'resultsSummary',\n id: 'correctlyAnswered',\n Cell: ({ value: { percentCorrect, awaitingMarking } }) => {\n if (awaitingMarking) {\n return (\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n tooltipClassName='d-block'\n showLabel\n />\n );\n }\n\n return (\n <PercentageIndicator\n percentage={percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n />\n );\n },\n width: 60,\n sortDescFirst: true,\n sortType: sortScore\n }\n ];\n}\n\n/**\n * Returns memoized table data. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetTableData(\n interactive: Interactive,\n results: InteractiveResultSet,\n refreshData: boolean,\n sortBy?: SortingRule<InteractionWithResultsSummary>\n): InteractionWithResultsSummary[] {\n return React.useMemo(() => {\n const flattenedInteractions = getInteractions(interactive);\n const questionNumbers: HashObject = flattenedInteractions.reduce((acc, interaction, index) => ({\n ...acc, [interaction.id]: index\n }), {});\n\n const interactions = flattenedInteractions.map(i => ({\n ...i,\n questionNumber: questionNumbers[i.id],\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n if (sortBy?.id === 'correctlyAnswered') {\n const sorted = ArrayHelper.sortBy(interactions, interaction => {\n if (interaction.resultsSummary.awaitingMarking)\n return -1;\n\n return interaction.resultsSummary.percentCorrect;\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n return interactions;\n }, [ refreshData, sortBy ]);\n}\n\nexport function indexToLetter(index: number) {\n return String.fromCharCode(index + 'A'.charCodeAt(0));\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { indexToLetter } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTableUtils';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResultSet } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface QuestionSummary {\n id?: string;\n count: number;\n isCorrect: boolean;\n label?: string | number;\n}\n\nexport function multipleChoiceSummary(\n interaction: Interaction,\n studentResults: InteractiveResultSet\n): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = interaction.actionableItems.map((item, i) => {\n return {\n id: item.id,\n label: interaction.typeId === InteractionTypeId.MultipleChoice ? indexToLetter(i) : item.name,\n isCorrect: item.isCorrect,\n count: 0\n };\n });\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n const questionSummary = ArrayHelper.findWhere(questionsSummary, { id: answer.id });\n\n if (questionSummary)\n questionSummary.count++;\n });\n });\n\n return questionsSummary;\n}\n\nexport function missingWordSummary(interaction: Interaction, studentResults: InteractiveResultSet): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = interaction.actionableItems.map(item => {\n return {\n id: item.id,\n label: item.name,\n isCorrect: item.isCorrect,\n count: 0\n };\n });\n\n questionsSummary.push({\n label: getPhrase('incorrect'),\n count: 0,\n isCorrect: false\n });\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n const questionSummary = ArrayHelper.findWhere(questionsSummary, { id: answer.id });\n\n if (questionSummary && answer.status === InteractiveAnswerStatus.Correct) {\n questionSummary.count++;\n } else {\n const incorrectSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('incorrect') });\n\n incorrectSummary.count++;\n }\n });\n });\n\n return questionsSummary;\n}\n\nexport function markedSummary(interaction: Interaction, studentResults: InteractiveResultSet): QuestionSummary[] {\n const questionsSummary: QuestionSummary[] = [\n {\n label: getPhrase('correct'),\n isCorrect: true,\n count: 0\n },\n {\n label: getPhrase('incorrect'),\n isCorrect: false,\n count: 0\n }\n ];\n\n studentResults.students.forEach(student => {\n const latestAttempts = ArrayHelper.last(student.results).attempts;\n const response = ArrayHelper.findWhere(latestAttempts, { id: interaction.id });\n\n if (!response) return;\n\n response.answers.forEach(answer => {\n if (answer.status === InteractiveAnswerStatus.Correct) {\n const correctSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('correct') });\n correctSummary.count++;\n }\n if (answer.status === InteractiveAnswerStatus.Incorrect) {\n const incorrectSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('incorrect') });\n incorrectSummary.count++;\n }\n if (answer.status === InteractiveAnswerStatus.PendingReview) {\n let pendingSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('pending') });\n\n if (!pendingSummary) {\n questionsSummary.push({\n label: getPhrase('pending'),\n count: 0,\n isCorrect: false\n });\n pendingSummary = ArrayHelper.findWhere(questionsSummary, { label: getPhrase('pending') });\n }\n\n pendingSummary.count++;\n }\n });\n });\n\n return questionsSummary;\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { markedSummary, missingWordSummary, multipleChoiceSummary, QuestionSummary } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummaryUtils';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interaction, InteractionTypeId, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface QuestionResultsSummaryProps {\n interaction: Interaction;\n results: InteractiveResultSet;\n}\n\nexport function QuestionResultsSummary(props: QuestionResultsSummaryProps) {\n const questionSummary = getQuestionSummary();\n const maxResponseCount = getMaxResponseCount();\n\n function getQuestionSummary(): QuestionSummary[] {\n if (!props.interaction || !props.results) return;\n\n let summaryMethod: (\n interaction: Interaction,\n results: InteractiveResultSet,\n interactionTypeId?: InteractionTypeId\n ) => QuestionSummary[];\n\n switch (props.interaction.typeId) {\n case InteractionTypeId.ShortAnswer:\n case InteractionTypeId.Illustration:\n summaryMethod = markedSummary;\n break;\n case InteractionTypeId.MissingWord:\n summaryMethod = missingWordSummary;\n break;\n case InteractionTypeId.MultipleChoice:\n case InteractionTypeId.TrueOrFalse:\n summaryMethod = multipleChoiceSummary;\n break;\n }\n\n return summaryMethod(props.interaction, props.results);\n }\n\n function getMaxResponseCount() {\n return questionSummary?.reduce((acc, summary) => summary.count > acc ? summary.count : acc, 0);\n }\n\n function getBarClassName(summary: QuestionSummary) {\n const className = 'border rounded me-2';\n\n if (!summary.count)\n return `${className} border bg-light px-1`;\n\n if (summary.label === getPhrase('pending'))\n return `${className} border-blue bg-light-blue`;\n\n if (summary.isCorrect)\n return `${className} border-green bg-light-green`;\n\n return `${className} border-red bg-light-red`;\n }\n\n return (\n <div className='border border rounded p-3 mb-3'>\n <div className='d-flex align-items-center gap-2 mb-3'>\n <div className='rounded-circle bg-light-teal text-teal'>\n <SvgContainer svgName={cvSvgLibrary.Lightbulb} size={SvgContainerSize.Large} />\n </div>\n <h2 className='h6 mb-0'>\n <span><Text namespace={namespace} phrase='questionSummary' /></span>\n </h2>\n </div>\n <div className='d-flex gap-2'>\n <div className='max-w-25'>\n {questionSummary?.map(summary => {\n return (\n <p key={summary.label} className='text-truncate mb-2'>{summary.label}</p>\n );\n })}\n </div>\n <div className='flex-grow-1'>\n {questionSummary?.map((summary, i) => {\n return (\n <div key={`${props.interaction.id}${i}`} className='d-flex mb-2'>\n <div\n className={getBarClassName(summary)}\n style={{ width: `${(summary.count / maxResponseCount) * 100}%`, height: 20 }}>\n </div>\n <span>{summary.count}</span>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'shared.selectedInteractionEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SelectedInteractionEmptyStateProps {\n emptyStateUrl: string;\n}\n\nexport function SelectedInteractionEmptyState(props: SelectedInteractionEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='rounded h-100 bg-white justify-content-center py-4'>\n <EmptyState.Image\n src={props.emptyStateUrl}\n size='small'\n />\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateText')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\nimport { Row, SortingRule } from 'react-table';\n\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractionQuestionsEmptyState } from 'libs/shared/apps/analytics/components/questions-list/interaction-questions-empty-state/InteractionQuestionsEmptyState';\nimport { InteractionResponseList } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList';\nimport { QuestionResultsSummary } from 'libs/shared/apps/analytics/components/questions-list/question-table/question-results-summary/QuestionResultsSummary';\nimport { SelectedInteractionEmptyState } from 'libs/shared/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionById } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interactive, InteractiveResultSet, StudentAnswer } from 'libs/shared/interfaces';\nimport { AppRouteHelper } from 'libs/shared/utils/AppRouteHelper';\n\nimport { getColumns, useGetTableData } from './QuestionTableUtils';\n\ninterface QuestionTableProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n markedAnswers: { [id: string]: StudentAnswer };\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n editSuggestedResponse?: () => void;\n imageCdnUrl: string;\n selectQuestionImageUrl: string;\n anonymiseUsers: boolean;\n sortBy?: SortStudentsBy;\n emptyResponseStateImageUrl: string;\n emptyQuestionsStateImageUrl: string;\n markingRequiredImageUrl?: string;\n correctImageUrl?: string;\n incorrectImageUrl?: string;\n skippedImageUrl?: string;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n selectedInteractionId?: string;\n showAnswersInTable?: boolean;\n theme: TableTheme;\n reportsStyling?: boolean;\n isDemo?: boolean;\n}\n\nexport function QuestionTable(props: QuestionTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<InteractionWithResultsSummary>[]>(\n getSortStudents(props.sortBy, 'correctlyAnswered')\n );\n const data = useGetTableData(props.interactive, props.results, props.refreshTable, ArrayHelper.first(sortBy));\n\n const selectedInteraction = props.selectedInteractionId &&\n getInteractionById(props.interactive, props.selectedInteractionId);\n\n function onSelectRow({ original: interaction }: Row<InteractionWithResultsSummary>): void {\n ScrollHelper.preventScrollTop();\n\n AppRouteHelper.updateParams(\n { interactionId: interaction.id },\n { merge: true }\n );\n }\n\n return (\n <div className='row'>\n <div className='col-6 flex-grow-1'>\n <Table\n key={props.selectedInteractionId}\n columns={getColumns(props.showAnswersInTable)}\n data={data}\n theme={props.theme}\n onSelectRow={onSelectRow}\n initialSelectedRowIds={selectedInteraction ? [selectedInteraction.id] : null}\n getRowId={(row: InteractionWithResultsSummary) => row.id}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n emptyState={<InteractionQuestionsEmptyState emptyStateImageUrl={props.emptyQuestionsStateImageUrl} />}\n />\n </div>\n <div className='col-6 d-flex flex-column'>\n {!props.reportsStyling && props.selectedInteractionId && !!props.results.students?.length && (\n <QuestionResultsSummary\n interaction={selectedInteraction}\n results={props.results}\n />\n )}\n\n <div className={`rounded flex-grow-1 ${props.reportsStyling ? '' : 'border'}`}>\n {!!selectedInteraction &&\n <InteractionResponseList\n interaction={selectedInteraction}\n results={props.results}\n markedAnswers={props.markedAnswers}\n addMarkedAnswers={props.addMarkedAnswers}\n submitMarkedAnswers={props.submitMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymiseUsers={props.anonymiseUsers}\n emptyStateImageUrl={props.emptyResponseStateImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n correctImageUrl={props.correctImageUrl}\n incorrectImageUrl={props.incorrectImageUrl}\n skippedImageUrl={props.skippedImageUrl}\n reportsStyling={props.reportsStyling}\n isDemo={props.isDemo}\n />\n }\n {!selectedInteraction && <SelectedInteractionEmptyState emptyStateUrl={props.selectQuestionImageUrl} />}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"mhxg4\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-questions.scss';\n\nexport function PartialInteractiveInsightsQuestions() {\n return (\n <div>\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 </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { QuestionTable } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTable';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { TableTheme } from 'libs/shared/components/table/Table';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { PartialInteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/partial-loading/PartialInteractiveInsightsQuestions';\n\n\nconst namespace = 'shared.interactiveInsightsQuestions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst theme: TableTheme = {\n table: 'bg-white rounded border h-100 pb-2',\n header: 'border-bottom px-3 py-2 mb-2',\n headerCell: 'd-flex align-items-center',\n cell: '',\n row: `px-3 py-2 bg-light-blue-hover`,\n selectedRow: 'bg-gray-100',\n sortIndicator: 'ms-2'\n};\n\ninterface InteractiveInsightsQuestionsProps {\n interactionId: string;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n isFetching: boolean;\n config: Config;\n hasDataLoaded: boolean;\n anonymiseUsers: boolean;\n sortBy: SortStudentsBy;\n isDemo?: boolean;\n}\n\nexport function InteractiveInsightsQuestions(props: InteractiveInsightsQuestionsProps) {\n const [ showMarkConfirmationPopup, setShowMarkConfirmationPopup ] = React.useState(false);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n props.interactive?.id,\n props.interactiveMetadata?.id,\n () => setShowMarkConfirmationPopup(false)\n );\n\n return (\n <>\n {!props.hasDataLoaded && <PartialInteractiveInsightsQuestions />}\n\n {props.hasDataLoaded &&\n <QuestionTable\n interactive={props.interactive}\n results={props.results}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={() => setShowMarkConfirmationPopup(true)}\n imageCdnUrl={props.config.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n refreshTable={props.isFetching}\n emptyResponseStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n emptyQuestionsStateImageUrl={ImageUrls.Insights.NO_QUESTIONS}\n selectQuestionImageUrl={ImageUrls.Insights.NO_DATA}\n anonymiseUsers={props.anonymiseUsers}\n sortBy={props.sortBy}\n showAnswersInTable\n theme={theme}\n correctImageUrl={ImageUrls.Insights.JIGSAW}\n incorrectImageUrl={ImageUrls.Insights.RED_JIGSAW}\n skippedImageUrl={ImageUrls.Insights.SKIPPED}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n isDemo={props.isDemo}\n />\n }\n\n {showMarkConfirmationPopup &&\n <ConfirmationPopup\n title={getPhrase('markPopupTitle', { smartCount: Object.keys(markedAnswers).length ?? 0 })}\n closePopup={() => setShowMarkConfirmationPopup(false)}\n confirmButtonText={getPhrase('submit')}\n confirmButtonVariant='dark'\n onClickConfirm={submitMarkedAnswers}\n >\n <p>{getPhrase('markPopupBody')}</p>\n </ConfirmationPopup>\n }\n </>\n );\n}"],"names":["getPhrase","ConfirmationPopup","props","showButtonSpinner","setShowButtonSpinner","title","closePopup","children","onClick","variant","cancelButtonVariant","text","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","AppRouteHelper","updateParams","params","options","appLink","currentParams","keysToRemove","updatedParams","merge","updatedAppLink","LanguageService","InteractionQuestionsEmptyState","EmptyState","className","src","emptyStateImageUrl","size","InteractionResponseListFiltersEmptyStates","filter","correctImageUrl","incorrectImageUrl","markingRequiredImageUrl","skippedImageUrl","getFilterEmptyStateImageUrl","Text","namespace","phrase","getFilterEmptyStatePhrase","InteractionResponseListFilters","getFilterClassName","filterButton","isFilterSelected","toggleFilter","InteractionResponseListHeader","suggestedResponse","interaction","data","InteractionLabel","iconClassName","SubmitMarkedAnswers","submit","InteractionResponseList","setFilter","responsesToMark","results","students","s","InteractiveCorrectnessHelper","InteractionCorrectness","reduce","acc","user","id","sessionId","numMarkedAnswers","Object","keys","markedAnswers","length","filteredStudentResults","result","correctness","filterMap","correct","incorrect","marking_required","skipped","reportsStyling","Tooltip","spanHack","isDemo","submitMarkedAnswers","selectedFilter","map","idx","anonymisedUserName","anonymiseUsers","markingRequired","key","InteractionResponse","studentResults","markedStatus","markInteraction","addMarkedAnswers","imageCdnUrl","showStudentDetails","showFeedback","responseComponentClass","InteractionResponseItem","QuestionTableMissingWord","str","sentence","split","part","index","match","replacement","actionableItems","find","answer","order","name","QuestionTableMultipleChoice","ArrayHelper","imageUrl","MultipleChoiceInteractionAnswers","showCorrectnessIcons","isDisplayOnly","option","isCorrect","indexToLetter","QuestionTableShortAnswer","QuestionTableTrueOrFalse","QuestionTableAnswers","QuestionTableAnswerComponent","typeId","getQuestionTableAnswerComponent","sortScore","rowA","rowB","columnId","cellA","cells","cell","column","value","cellB","awaitingMarking","percentCorrect","CellWrapper","HeaderCell","isSorted","phraseKey","String","fromCharCode","charCodeAt","multipleChoiceSummary","questionsSummary","item","i","label","count","forEach","student","latestAttempts","attempts","response","answers","questionSummary","missingWordSummary","push","status","InteractiveAnswerStatus","markedSummary","pendingSummary","QuestionResultsSummary","summaryMethod","getQuestionSummary","maxResponseCount","summary","getBarClassName","SvgContainer","svgName","S","style","width","height","SelectedInteractionEmptyState","emptyStateUrl","QuestionTable","showAnswersInTable","sortBy","setSortBy","interactive","refreshData","flattenedInteractions","questionNumbers","interactions","questionNumber","resultsSummary","sorted","desc","reverse","useGetTableData","refreshTable","selectedInteraction","selectedInteractionId","Table","columns","Header","accessor","Cell","row","original","disableSortBy","selectedRowIds","initialState","selectedRow","containerClassName","PendingIndicator","tooltipClassName","showLabel","PercentageIndicator","percentage","layout","sortDescFirst","sortType","theme","onSelectRow","ScrollHelper","interactionId","initialSelectedRowIds","getRowId","enableSort","manualSort","onSort","initialSortBy","emptyState","emptyQuestionsStateImageUrl","emptyResponseStateImageUrl","selectQuestionImageUrl","PartialInteractiveInsightsQuestions","table","header","headerCell","sortIndicator","InteractiveInsightsQuestions","showMarkConfirmationPopup","setShowMarkConfirmationPopup","interactiveMetadata","hasDataLoaded","config","isFetching","ImageUrls","smartCount"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8856],{41196:(e,t,a)=>{a.d(t,{W:()=>o});var r=a(20354),n=a(93479),i=a(20768),s=a(31949);function o(e,t,a){var o,l=r.a.useBasicFetch(s.N.currentUser()),c=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),u=r.a.useBasicFetch(!!(null===(o=c.data)||void 0===o?void 0:o.interactiveId)&&i.b.interactive(c.data.interactiveId)),d=!!l.data&&!!u.data;return r.a.useBasicFetch(d&&n.I.interactiveResultSet(c.data.interactiveId,c.data.id,l.data,t,a))}},18488:(e,t,a)=>{a.d(t,{o:()=>s});var r=a(99940),n=a(97395),i={namespace:"share-v2"},s={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:r.k.PUT,data:t,normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:r.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:n._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:r.k.GET,normalize:!1}},getShareLink:function(e){return{url:n._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:i}},createShareLink:function(e){return{type:r.k.POST,url:n._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:i}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:r.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var r=a(50242),n=a(81886),i=a(67058),s=a(14553),o=a(49267),l=a(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:o.a,privacy:s.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),t);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?a.badRequest||n.Q.Ry.throw(new s.badRequest):a.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):a.notFound||n.Q.Ry.throw(new s.notFound):a.internalServerError||n.Q.Ry.throw(new l._))}}},39902:(e,t,a)=>{a.d(t,{FN:()=>v,SW:()=>f,fh:()=>h});var r=a(32735),n=a(20354),i=a(75896);function s(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(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 o(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function c(e){return c="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},c(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var d=function(e,t){var a={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(a[r[n]]=e[r[n]])}return a},m=50;function h(e,t){var a=i.m.chunk(e,m).map((function(e){return t(i.m.uniq(e))})),r=n.a.useBasicFetchAll(a),s=i.m.flatten(r.data),o=r.data.length?s.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:s,items:o,isFetching:r.isFetching,hasCompleted:r.hasCompleted}}function v(e,t,a){var n=null!=a?a:function(e){return"object"===c(e)?e.id:e},i=f({getRequest:t,_getKey:a}),s=i.fetchItems,o=d(i,["fetchItems"]);return r.useEffect((function(){(null==e?void 0:e.length)&&s(e)}),[null==e?void 0:e.map(n).join(",")]),o}function f(e){var t,a,l,d,h,v=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===c(e)?e.id:e},f=r.useRef(new Set),g=(d=r.useState([]),h=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(d,h)||o(d,h)||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.")}()),p=g[0],y=g[1],b=n.a.useBasicFetchAll(p),I=i.m.flatten(b.data),E=b.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},v(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(l=null===(a=b.responses)||void 0===a?void 0:a[0])||void 0===l?void 0:l.hasCompleted),itemsArr:I,items:E,isFetching:b.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var a=[];t.forEach((function(e){var t=v(e);f.current.has(t)||(a.push(e),f.current.add(t))})),a.length&&y((function(t){return[].concat(s(t),s(i.m.chunk(a,m).map(e.getRequest)))}))}}}}},91286:(e,t,a)=>{a.d(t,{v:()=>s});var r=a(32735),n=a(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,t,a){var s=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){s.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[i(s),t,a])}},78057:(e,t,a)=>{a.d(t,{R:()=>C});var r=a(32735),n=a(75896),i=a(23481),s=a(97958),o=i.T.encloseNamespace("shared.studentResultsTable");function l(e){return"not_completed"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.notCompletedImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("notCompletedDescription"))):"marking_required"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("markingRequiredDescription"))):"helping_hand"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.helpingHandImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("helpingHandDescription"))):r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.emptyStateImageUrl,size:"small"}),r.createElement(s.u.Heading,null,o("emptyStateHeading")),r.createElement(s.u.Info,null,o("emptyStateDescription")))}var c=a(83345),u="shared.studentResultsTable";function d(e){function t(t){var a=e.filter===t?null:t;e.setFilter(a)}function a(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 mb-0"},r.createElement(c.x,{namespace:u,phrase:"filters"})),r.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},r.createElement("button",{className:a("not_completed"),onClick:function(){return t("not_completed")}},r.createElement(c.x,{namespace:u,phrase:"notCompletedFilter"})),r.createElement("button",{className:a("marking_required"),onClick:function(){return t("marking_required")}},r.createElement(c.x,{namespace:u,phrase:"markingRequiredFilter"})),r.createElement("button",{className:a("helping_hand"),onClick:function(){return t("helping_hand")}},r.createElement(c.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=a(97364),h=a(6748),v=a(84806),f=a(19912);function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var y={table:"".concat(f.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(f.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:f.Z.row},b={header:"".concat(f.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(f.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(f.Z.row," ").concat(f.Z.resultsRow),cell:f.Z.resultsCellOuter};function I(e){var t,a=g(r.useState((0,m.P)(e.sortBy,"score")),2),i=a[0],s=a[1],o=g(r.useState(e.filterBy),2),c=o[0],u=o[1],p=r.useRef(null),I=(0,v.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl),E=(0,v.lE)(e.interactive,e.interactiveMetadata,e.results,(function(e){(0,v.bB)(p.current,e)}),e.refreshTable),S=(0,v.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,n.m.first(i),c);function w(e){(0,v.l8)(p.current,e)}return r.createElement("div",null,!!e.results.students.length&&r.createElement(d,{filter:c,setFilter:u}),!S.length&&r.createElement(l,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:c}),!!S.length&&r.createElement("div",{ref:p,className:"d-flex".concat(S.length?" ".concat(f.Z.hasResults):"")},r.createElement(h.i,{columns:I,data:S,theme:y,onSelectRow:function(t){var a=t.original;e.viewStudentResults(a.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return w(e.index)},onRowMouseLeave:function(){return w()},enableSort:!0,manualSort:!0,onSort:s,initialSortBy:i}),r.createElement(h.i,{columns:E,data:S,theme:b,enableSlider:!0,scrollIncrement:8*v.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var E=a(99742);const S={partialInsights:"qSeTe"};function w(){return r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),r.createElement("div",{className:"row g-2 w-50"},r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(S.partialInsights," rounded partial-loading-background")}))))}function C(e){return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(w,null),e.hasDataLoaded&&r.createElement(I,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:E.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:E.W.Insights.JIGSAW,markingRequiredImageUrl:E.W.Insights.CLIPBOARD,helpingHandImageUrl:E.W.Insights.SPEECH_BUBBLE_HEART,config:e.config}))}},9447:(e,t,a)=>{a.d(t,{Y:()=>s});var r=a(20354),n=a(30439);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 s(e){var t,a=r.a.useBasicFetch(n.o.getAnonSessions(e));return{items:(null===(t=a.data)||void 0===t?void 0:t.reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},r=t.sessionId,n={sessionId:(s=t).sessionId,name:s.sessionName},(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in a?Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):a[r]=n,a));var a,r,n,s}),{}))||{},hasCompleted:a.hasCompleted}}},5780:(e,t,a)=>{a.d(t,{p:()=>c});var r=a(20354),n=a(2510),i=a(18488),s=a(4594),o=a(3010),l=a(88630);function c(e){var t,a,c,u,d=r.a.useGetFetch(),m=r.a.useBasicFetch(i.o.getShare(e)),h=(null===(t=m.data)||void 0===t?void 0:t.type)===n.y.Classroom&&(null===(u=null===(c=null===(a=m.data)||void 0===a?void 0:a.recipients)||void 0===c?void 0:c.find((function(e){return e.recipientTypeId===s.E.Classroom})))||void 0===u?void 0:u.recipientId),v=function(e){return l.F.getClassroomStudents(h,e)},f=(0,o.i)(h&&v,(function(e){return d(v(e))}));return Object.assign(Object.assign({},f),{hasCompleted:!h||f.hasCompleted})}},52389:(e,t,a)=>{a.d(t,{_:()=>d});var r=a(20354),n=a(41196),i=a(18488),s=a(91286),o=a(9447),l=a(5780);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var u=[{id:"0",attempts:[{id:"0",answeredAt:0,answers:[]}]}];function d(e){var t,a,d=r.a.useBasicFetch(i.o.getShare(e)),m=(0,n.W)(null===(t=d.data)||void 0===t?void 0:t.objectId,null,!0),h=(0,o.Y)(e),v=(0,l.p)(e);(0,s.v)(m);var f=m.hasCompleted&&h.hasCompleted&&v.hasCompleted;if(!f)return{data:null,hasCompleted:!1};var g,p=new Set,y=m.data.students.map((function(e){return e.user?(p.add(e.user.id),e):Object.assign(Object.assign({},e),{user:h.items[e.sessionId]||{sessionId:e.sessionId}})}));return(null===(a=null==v?void 0:v.items)||void 0===a?void 0:a.length)&&y.push.apply(y,function(e){if(Array.isArray(e))return c(e)}(g=v.items.filter((function(e){return!p.has(e.id)})).map((function(e){return{user:e,results:u}})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(g)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?c(e,t):void 0}}(g)||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.")}()),{hasCompleted:f,data:Object.assign(Object.assign({},m.data),{students:y})}}},50808:(e,t,a)=>{a.r(t),a.d(t,{BaseInsightsView:()=>je});var r=a(32735),n=a(81886),i=a(20354),s=a(18488),o=a(86099),l=a(4594),c=a(23481),u=a(2948),d=a(21789),m=a(60051),h=a(16714),v=a(39151),f=a(1666),g=a(47812),p=a(31949),y=a(91286),b=a(93322),I=a(22902),E=a(79612),S=a(31908),w=a(86702),C=a(88630),j=a(9540),A=a(17132),F=function(e,t){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/").concat(t),key:"video:views:v2:share:aggregation:".concat(e,":").concat(t),normalize:!1}},B=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/heat-map"),key:"video:views:v2:share:heatmap:".concat(e),normalize:!1}},k=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/heat-map"),key:"video:views:v2:share:heatmap:aggregation:".concat(e),normalize:!1}},N=a(39902),O=a(9447);function U(e){var t,a,r=i.a.useBasicFetch(B(e)),n=(0,O.Y)(e),s=(null===(t=r.data)||void 0===t?void 0:t.map((function(e){return e.userId})).filter((function(e){return!!e})))||[],o=(0,N.fh)(s,p.N.getById),l=Object.assign(Object.assign({},n.items),o.items),c=null===(a=r.data)||void 0===a?void 0:a.map((function(e){var t=l[e.userId||e.sessionId]||{sessionId:e.sessionId};return Object.assign(Object.assign({},t),{percentage:e.engagementRate})}));return{engagement:r.data,users:c,hasCompleted:r.hasCompleted&&n.hasCompleted&&(!(null==s?void 0:s.length)||o.hasCompleted)}}var T=a(5780),R=a(10447);function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var x=c.T.encloseNamespace("shared.insightsHeatmap");function _(e){var t,a,n,o,c,B=(o=(0,u.D)(w.y.ANONYMISE_USERS),c=1,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(o,c)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?L(e,t):void 0}}(o,c)||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.")}())[0];(0,b.F)();var N=(0,I.T)().hasPermissions,O=i.a.useBasicFetch(s.o.getShare(e.shareId)),_=d.x.getClassroomIdFromShare(O.data),M=i.a.useBasicFetch(_&&C.F.getClassroom(_)),P=(0,T.p)(e.shareId),q=O.data&&S.M.getVideoRequest(O.data.objectId,O.data.objectTypeId),D=i.a.useBasicFetch(q),W=i.a.useBasicFetch(v.L.config()),z=i.a.useBasicFetch(p.N.currentUser()),V=i.a.useBasicFetch(z.data&&f.h.yearGroups(z.data.customerId)),G=i.a.useBasicFetch(k(e.shareId)),H=U(e.shareId),$=H.users,Z=H.engagement,Q=H.hasCompleted,Y=i.a.useBasicFetch(F(e.shareId,"year_group")),K=i.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.objectId)&&g.k.createViewKey(O.data.objectId,m.f.MasterObject));(0,E.M)({title:D.data?x("pageTitle",{video:null===(a=D.data)||void 0===a?void 0:a.name}):null}),(0,y.v)([O,D]);var J=O.hasCompleted&&D.hasCompleted&&W.hasCompleted&&G.hasCompleted&&Y.hasCompleted&&K.hasCompleted&&V.hasCompleted;return r.createElement("div",{className:"px-3"},r.createElement(j.j,{video:D.data,tabs:function(){var e;return(null===(e=O.data)||void 0===e?void 0:e.objectTypeId)===l.E.Interactive?(0,R.kj)(O.data,"heatmap"):(0,R.$6)(O.data,"heatmap")}(),hasAnalytics:N(h.C.ViewCustomerAnalytics),analyticsWebUrl:null===(n=W.data)||void 0===n?void 0:n.analyticsWebUrl,share:O.data,yearGroups:V.data,classroom:M.data}),r.createElement(A.w,{aggregateEngagement:G.data,individualEngagement:Z,yearGroups:Y.data,config:W.data,users:$,viewKey:K.data,hasDataLoaded:J,tableDataLoaded:Q,anonymiseUsers:B,classroomStudents:P.items}))}var M=a(38143),P=a(20768),q=a(54948),D=a(52389);function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var z=c.T.encloseNamespace("insights.interactiveInsightsOverviewView");function V(e){var t,a,n,l,c,m,g=(c=(0,u.D)(M.g.ANONYMISE_USERS),m=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,m)||function(e,t){if(e){if("string"==typeof e)return W(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?W(e,t):void 0}}(c,m)||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.")}())[0];(0,b.F)();var S=(0,I.T)().hasPermissions,w=i.a.useBasicFetch(v.L.config()),A=i.a.useBasicFetch(p.N.currentUser()),N=i.a.useBasicFetch(A.data&&f.h.yearGroups(A.data.customerId)),O=i.a.useBasicFetch(s.o.getShare(e.shareId)),U=d.x.getClassroomIdFromShare(O.data),L=i.a.useBasicFetch(U&&C.F.getClassroom(U)),x=(0,T.p)(e.shareId),_=i.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.objectId)&&P.b.interactiveMetadata(O.data.objectId)),V=i.a.useBasicFetch((null===(a=_.data)||void 0===a?void 0:a.interactiveId)&&P.b.interactive(_.data.interactiveId)),G=(0,D._)(e.shareId),H=i.a.useBasicFetch(B(e.shareId)),$=i.a.useBasicFetch(k(e.shareId)),Z=i.a.useBasicFetch(F(e.shareId,"os_name"));(0,E.M)({title:_.data?z("pageTitle",{video:null===(n=_.data)||void 0===n?void 0:n.name}):null}),(0,y.v)([O,V,_]);var Q=w.hasCompleted&&_.hasCompleted&&V.data&&$.hasCompleted&&H.hasCompleted&&Z.hasCompleted&&G.hasCompleted&&N.hasCompleted,Y=function(e,t){return{resultsAppLink:(0,o.rq)(e,t),questionsAppLink:(0,o.Sj)(e,t),heatmapAppLink:(0,o.Rv)(e,t)}}(O.data);return r.createElement("div",{className:"px-3"},r.createElement(j.j,{video:_.data,tabs:(0,R.kj)(O.data,"insights"),hasAnalytics:S(h.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=w.data)||void 0===l?void 0:l.analyticsWebUrl,share:O.data,yearGroups:N.data,classroom:L.data}),r.createElement(q.m,{aggregateEngagement:$.data,individualEngagement:H.data,interactive:V.data,interactiveMetadata:_.data,interactiveInsightsAppLinks:Y,classroomStudents:x.items,results:G.data,osCount:Z.data,config:w.data,anonymiseUsers:g,hasDataLoaded:Q,share:O.data}))}var G=a(48705);function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var $=c.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function Z(e){var t,a,n,o,l,c,m,g=(c=(0,u.D)(M.g.ANONYMISE_USERS),m=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,m)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?H(e,t):void 0}}(c,m)||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.")}())[0];(0,b.F)();var S=(0,I.T)().hasPermissions,w=i.a.useBasicFetch(p.N.currentUser()),A=i.a.useBasicFetch(v.L.config()),F=i.a.useBasicFetch(w.data&&f.h.yearGroups(w.data.customerId)),B=i.a.useBasicFetch(s.o.getShare(e.shareId)),k=d.x.getClassroomIdFromShare(B.data),N=i.a.useBasicFetch(k&&C.F.getClassroom(k)),O=i.a.useBasicFetch((null===(t=B.data)||void 0===t?void 0:t.objectId)&&P.b.interactiveMetadata(null===(a=B.data)||void 0===a?void 0:a.objectId)),U=i.a.useBasicFetch((null===(n=O.data)||void 0===n?void 0:n.interactiveId)&&P.b.interactive(O.data.interactiveId)),T=(0,D._)(e.shareId);(0,E.M)({title:O.data?$("pageTitle",{video:null===(o=O.data)||void 0===o?void 0:o.name}):null}),(0,y.v)([B,U,O]);var L=U.data&&O.data&&!!T.data&&!!F.data;return r.createElement("div",{className:"px-3"},r.createElement(j.j,{tabs:(0,R.kj)(B.data,"questions"),video:O.data,hasAnalytics:S(h.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=A.data)||void 0===l?void 0:l.analyticsWebUrl,share:B.data,yearGroups:F.data,classroom:N.data}),r.createElement(G.x,{interactive:U.data,interactiveMetadata:O.data,interactionId:e.interactionId,config:A.data,sortBy:e.sortBy,isFetching:!T.hasCompleted||U.isFetching,anonymiseUsers:g,results:T.data,hasDataLoaded:L}))}var Q=a(14070),Y=a(97291),K=a(78057);function J(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var X=c.T.encloseNamespace("insights.interactiveInsightsStudents");function ee(e){var t,a,o,l,c,m,g=(c=(0,u.D)(M.g.ANONYMISE_USERS),m=1,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(c,m)||function(e,t){if(e){if("string"==typeof e)return J(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?J(e,t):void 0}}(c,m)||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.")}())[0],b=(0,I.T)().hasPermissions,S=i.a.useBasicFetch(p.N.currentUser()),w=i.a.useBasicFetch(v.L.config()),A=i.a.useBasicFetch(S.data&&f.h.yearGroups(S.data.customerId)),F=i.a.useBasicFetch(s.o.getShare(e.shareId)),B=d.x.getClassroomIdFromShare(F.data),k=i.a.useBasicFetch(B&&C.F.getClassroom(B)),N=i.a.useBasicFetch((null===(t=F.data)||void 0===t?void 0:t.objectId)&&P.b.interactiveMetadata(F.data.objectId)),O=i.a.useBasicFetch((null===(a=N.data)||void 0===a?void 0:a.interactiveId)&&P.b.interactive(N.data.interactiveId)),U=(0,D._)(e.shareId),T=O.data&&N.data&&!!U.data&&!!A.data;return(0,E.M)({title:N.data?X("pageTitle",{video:null===(o=N.data)||void 0===o?void 0:o.name}):null}),(0,y.v)([F,O,N]),r.createElement("div",{className:"px-3"},r.createElement(j.j,{tabs:(0,R.kj)(F.data,"results"),video:N.data,hasAnalytics:b(h.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=w.data)||void 0===l?void 0:l.analyticsWebUrl,share:F.data,yearGroups:A.data,classroom:k.data}),r.createElement(K.R,{interactiveMetadata:N.data,viewStudentResults:function(t,a,r){n.Q.C$.trigger({application:Y.O.MY_SHARES,action:Q.e.MyShares.INTERACTIVE_STUDENT_RESULTS,params:{studentId:t.id,shareId:e.shareId,interactionId:r,sessionId:t.sessionId}})},interactive:O.data,results:U.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:!U.hasCompleted,anonymiseUsers:g,hasDataLoaded:T,config:w.data}))}var te=a(37802),ae=a(51870),re=a(50916),ne=a(84621),ie=a(98551),se=a(35223),oe=c.T.encloseNamespace("shared.insightStudentsNotWatched");function le(e){var t,a=(null===(t=e.students)||void 0===t?void 0:t.filter((function(t){var a;return!(null===(a=e.watchedIds)||void 0===a?void 0:a.includes(t.id))})))||[];return r.createElement(ne.L,{title:oe("title"),svgName:se.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},r.createElement(ie.y,{students:a,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:oe("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var ce=c.T.encloseNamespace("shared.insightStudentsWatched");function ue(e){return r.createElement(ne.L,{title:ce("title"),svgName:se.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},r.createElement(ie.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:ce("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:ce("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var de=a(8604),me=a(83345),he=a(99742),ve=a(53214);const fe="oHwkx";function ge(){return r.createElement("div",null,r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(fe," rounded partial-loading-background")}))),r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(fe," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(fe," rounded partial-loading-background")}))))}var pe="insights.videoInsightsOverview";function ye(e){var t,a,n,i=e.hasDataLoaded&&!!(null===(t=e.viewers)||void 0===t?void 0:t.length);function s(){return e.viewers?Object.values(e.viewers):[]}return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(ge,null),e.hasDataLoaded&&r.createElement(ve.u,{video:e.video,hasData:i,share:e.share},r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(me.x,{namespace:pe,phrase:"studentViewing"}),r.createElement("span",null,": ",s().length,e.classroomStudents?"/".concat(e.classroomStudents.length):"")),r.createElement("div",{className:"row g-3"},!!(null===(a=e.classroomStudents)||void 0===a?void 0:a.length)&&r.createElement("div",{className:"col-12 col-md"},r.createElement(le,{students:e.classroomStudents,watchedIds:null===(n=e.viewers)||void 0===n?void 0:n.map((function(e){return e.id})),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:he.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col-12 col-md"},r.createElement(ue,{students:s(),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:he.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})))),r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(me.x,{namespace:pe,phrase:e.hasClassrooms?"classEngagement":"engagement"})),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col-12 col-md-6"},r.createElement(ae.i,{osCount:e.osCount})),r.createElement("div",{className:"col-12 col-md-6"},r.createElement(re.b,{engagement:e.aggregateEngagement,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,engagementRate:(0,de.Q)(e.individualEngagement)}))))))}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var Ie=c.T.encloseNamespace("insights.videoInsightsOverviewView");function Ee(e){var t,a,n,l,c=(n=(0,u.D)(M.g.ANONYMISE_USERS),l=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(n,l)||function(e,t){if(e){if("string"==typeof e)return be(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?be(e,t):void 0}}(n,l)||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.")}())[0];(0,b.F)();var m=(0,te.r)(null).hasClassrooms,g=(0,I.T)().hasPermissions,w=i.a.useBasicFetch(v.L.config()),A=i.a.useBasicFetch(p.N.currentUser()),N=i.a.useBasicFetch(A.data&&f.h.yearGroups(A.data.customerId)),O=i.a.useBasicFetch(s.o.getShare(e.shareId)),L=d.x.getClassroomIdFromShare(O.data),x=i.a.useBasicFetch(L&&C.F.getClassroom(L)),_=(0,T.p)(e.shareId),P=O.data&&S.M.getVideoRequest(O.data.objectId,O.data.objectTypeId),q=i.a.useBasicFetch(P);(0,E.M)({title:q.data?Ie("pageTitle",{video:null===(t=q.data)||void 0===t?void 0:t.name}):null}),(0,y.v)([O,q]);var D=i.a.useBasicFetch(B(e.shareId)),W=i.a.useBasicFetch(k(e.shareId)),z=i.a.useBasicFetch(F(e.shareId,"os_name")),V=U(e.shareId),G=V.users,H=V.hasCompleted,$=w.hasCompleted&&q.hasCompleted&&D.hasCompleted&&W.hasCompleted&&z.hasCompleted&&N.data&&H,Z=function(e){return{heatmapAppLink:(0,o.Rv)(e,void 0)}}(O.data);return r.createElement("div",{className:"px-3"},r.createElement(j.j,{video:q.data,classroom:x.data,tabs:(0,R.$6)(O.data,"insights"),hasAnalytics:g(h.C.ViewCustomerAnalytics),analyticsWebUrl:null===(a=w.data)||void 0===a?void 0:a.analyticsWebUrl,share:O.data,yearGroups:N.data}),r.createElement(ye,{hasDataLoaded:!!$,hasClassrooms:m,anonymiseUsers:c,videoInsightsAppLinks:Z,config:w.data,video:q.data,classroomStudents:_.items,viewers:G,individualEngagement:D.data,aggregateEngagement:W.data,share:O.data,osCount:z.data}))}function Se(e){return Se="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},Se(e)}function we(e,t,a){return(t=function(e){var t=function(e){if("object"!=Se(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=Se(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Se(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var Ce=we(we(we({},l.E.Video,{insights:function(e){return r.createElement(Ee,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(_,{shareId:e.share.shareId})}}),l.E.Clip,{insights:function(e){return r.createElement(Ee,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(_,{shareId:e.share.shareId})}}),l.E.Interactive,{insights:function(e){return r.createElement(V,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(_,{shareId:e.share.shareId})},questions:function(e){return r.createElement(Z,{interactionId:e.interactionId,sortBy:e.sortBy,shareId:e.share.shareId})},results:function(e){return r.createElement(ee,{filterBy:e.filterBy,sortBy:e.sortBy,shareId:e.share.shareId})}});function je(e){var t=i.a.useBasicFetch(s.o.getShare(e.shareId)),a=function(e){var t,a=e.share,n=e.tab,i=null===(t=Ce[null==a?void 0:a.objectTypeId])||void 0===t?void 0:t[n];return i?i(e):r.createElement(r.Fragment,null)}({share:t.data,tab:e.tab,interactionId:e.interactionId,sortBy:e.sortBy,filterBy:e.filterBy});return r.useEffect((function(){if(e.showShareOptions&&t.data){var a=(0,o.Zm)(t.data);a&&n.Q.C$.trigger(a)}}),[t.data,e.showShareOptions]),r.createElement(r.Fragment,null,a)}}}]);
|
|
2
|
+
//# sourceMappingURL=8856-02dd2e486c-lite.chunk.js.map
|