@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4948-66ba60c8e3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/insight-chart/InsightChart.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insight-student-list/insight-student-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insight-student-list/InsightStudentList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/devices/insight-devices.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/devices/InsightDevices.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/insight-heatmap.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/InsightHeatmap.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-mask/InsightsShareMask.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/insight-average-attempts.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-attempts/InsightAverageAttempts.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/insight-average-score.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/average-score/InsightAverageScore.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/completed-students/InsightCompletedStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/hardest-question/InsightHardestQuestion.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/marking-required/InsightMarkingRequired.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-mask/InsightsMarkingRequiredMask.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-overview/partial-loading/partial-interactive-insights-overview.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-overview/partial-loading/PartialInteractiveInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-overview/InteractiveInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-mask/insights-mask.scss"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\n\nconst getStaticChartOptions = (label: string): Highcharts.Options => {\n return {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n enabled: false\n },\n gridLineWidth: 0,\n tickPixelInterval: 1,\n startOnTick: false,\n endOnTick: false,\n min: -0.2\n },\n xAxis: {\n title: {\n text: label,\n margin: 8,\n style: CHART_FONT_STYLES\n },\n labels: {\n style: CHART_FONT_STYLES\n },\n lineWidth: 0\n },\n legend: {\n enabled: false\n },\n chart: {\n type: 'column',\n backgroundColor: 'transparent',\n height: '160px',\n spacingTop: 20\n },\n plotOptions: {\n column: {\n dataLabels: {\n enabled: false\n },\n enableMouseTracking: false,\n minPointLength: 8\n }\n }\n };\n};\n\ninterface InsightChartProps {\n label: string;\n chartData: ChartData;\n xAxis?: Highcharts.XAxisOptions;\n withObserver?: boolean;\n}\n\nexport function InsightChart(props: InsightChartProps) {\n const ref = React.useRef<{ chart: Highcharts.Chart, container: React.RefObject<HTMLDivElement> }>();\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!props.withObserver || !window.ResizeObserver)\n return;\n\n const observer = new window.ResizeObserver(() => {\n ref.current?.chart.reflow();\n });\n\n if (ref.current)\n observer.observe(containerRef.current);\n\n return () => observer.disconnect();\n }, [props.withObserver]);\n\n function getChartOptions(): Highcharts.Options {\n const data = props.chartData;\n const staticChartOptions = getStaticChartOptions(props.label);\n\n const hasData = ArrayHelper.first(data.series)?.data.some((data: Highcharts.PointOptionsObject) => data.y > 0);\n\n return {\n ...staticChartOptions,\n yAxis: {\n ...staticChartOptions.yAxis,\n ...(hasData ? {\n min: -0.2\n } : {\n min: 0,\n max: 1\n })\n },\n xAxis: {\n ...staticChartOptions.xAxis,\n ...props.xAxis,\n categories: data.categories\n },\n series: data.series\n };\n }\n\n return (\n <div ref={containerRef}>\n <HighchartsReact\n highcharts={Highcharts}\n options={getChartOptions()}\n ref={ref}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"uMuZt\",\"image\":\"WdKiU\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UserRecipientItemMetadata } from 'libs/shared/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { ProgressCircleSize } from 'libs/shared/components/percentage-indicator/PercentageIndicatorUtils';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport styles from './insight-student-list.scss';\n\ntype UserPercentage = AnonUser & {\n percentage?: number;\n}\n\nconst MAX_ITEMS = 3;\n\ninterface InsightStudentListProps {\n students: UserPercentage[];\n imageUrl: string;\n imageCdnUrl: string;\n description: string;\n anonymiseUsers: boolean;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\nexport function InsightStudentList(props: InsightStudentListProps) {\n return (\n <>\n {props.students.length ? (\n <ul className='list-unstyled mb-2'>\n {props.students.slice(0, MAX_ITEMS).map((student, index) => (\n <li key={index} className='d-flex align-items-center mb-2'>\n <UserRecipientItemMetadata\n user={student}\n imageCdnUrl={props.imageCdnUrl}\n avatarClassName={styles.avatar}\n detailsClassName='ms-2'\n showDisplayName\n showSubText={false}\n anonymiseUsers={props.anonymiseUsers}\n />\n\n <div className='d-flex align-items-center ms-auto'>\n <span className='me-2'>{student.percentage === undefined ? '- ' : Math.round(student.percentage * 100)}%</span>\n <PercentageIndicator percentage={student.percentage} size={ProgressCircleSize.ExtraSmall} />\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <div className='text-center'>\n <img className={`${styles.image} mb-2`} src={props.imageUrl} />\n <p className='text-secondary mb-0' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n )}\n\n {!!props.students.length && props.appLink && (\n <AppLink appLink={props.appLink} className='text-info mt-auto'>\n {props.appLinkText}\n </AppLink>\n )}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"purpleChart\":\"OPcvi\",\"grayChart\":\"HlWj7\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-devices.scss';\n\nconst namespace = 'shared.insightDevices';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n// Names from UserAgentHelper.getOperatingSystem()\nfunction getDeviceType(name: string) {\n switch (name) {\n case 'Android':\n case 'Windows Phone':\n case 'iOS':\n case 'BlackBerry':\n return 'Phone';\n case 'Linux':\n case 'Unix':\n case 'Macintosh':\n case 'Windows':\n return 'Computer';\n }\n}\n\nfunction getDeviceIcon(name: string) {\n let svgName = '';\n \n switch (name) {\n case 'Computer':\n svgName = cvSvgLibrary.Monitor;\n break;\n case 'Phone':\n svgName = cvSvgLibrary.Mobile;\n break;\n case 'Tablet':\n svgName = cvSvgLibrary.Tablet;\n break;\n default: return;\n }\n \n // Default svg attributes causes Highcharts error\n return SvgHelper.getSvg(svgName).replace(/<svg[^>]*>/g, '<svg class=\"svg-container\">');\n}\n\ninterface InsightDevicesProps {\n osCount: GroupedAnalyticsCount[]\n}\n\nexport function InsightDevices(props: InsightDevicesProps) {\n const categoriesData = getCategoriesData();\n const topDeviceCount = getTopDeviceCount();\n const topDevices = getTopDevices();\n\n function getCategoriesData() {\n const defaultDevices: HashObject = { Phone: 0, Computer: 0 };\n\n if (!props.osCount?.length)\n return defaultDevices;\n\n return props.osCount.reduce((acc, group) => {\n if (!group.name) return acc;\n\n const deviceCategory = getDeviceType(group.name);\n\n if (!deviceCategory) return acc;\n\n acc[deviceCategory] = acc[deviceCategory] + group.count;\n\n return acc;\n }, defaultDevices);\n }\n\n function getTopDeviceCount() {\n return Math.max(...Object.keys(categoriesData).map(category => categoriesData[category]));\n }\n\n function getTopDevices() {\n return Object.keys(categoriesData).filter(category => categoriesData[category] === topDeviceCount);\n }\n\n function getXAxisLabelIcons(): any {\n return {\n labels: {\n useHTML: true,\n formatter: function () {\n return `\n <div class=\"d-flex flex-column align-items-center\">\n <span class=\"${styles.font} font-size-sm text-dark mb-1\">${this.value}</span>\n ${getDeviceIcon(this.value)}\n </div>\n `;\n }\n }\n };\n }\n\n function getChartData(): ChartData {\n return {\n categories: Object.keys(categoriesData),\n series: [{\n type: 'column',\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n overflow: 'allow',\n crop: false\n },\n data: Object.keys(categoriesData).map(category => {\n const highestCount =\n topDeviceCount !== 0 && categoriesData[category] === topDeviceCount;\n\n return {\n className: `${categoriesData[category] === 0 ? styles.grayChart : styles.purpleChart} ${!highestCount ? 'opacity-25' : ''}`,\n borderWidth: highestCount ? 2 : 0,\n borderColor: highestCount ? 'black' : '',\n y: categoriesData[category]\n };\n })\n }]\n };\n }\n\n const chartData = getChartData();\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgClassName='bg-light-ultramarine text-ultramarine'\n svgName={cvSvgLibrary.Monitor}\n >\n <p className='mb-0'>\n {props.osCount?.filter(group => group.name).length\n ? (\n <Text\n namespace={namespace}\n phrase='description'\n options={{\n smartCount: topDevices.length,\n device: topDevices.length === 1 ? topDevices[0].toLowerCase() : null\n }}\n />\n ) : (\n <Text\n namespace={namespace}\n phrase='notViewed'\n />\n )}\n </p>\n\n <div className='position-relative mt-auto'>\n <InsightChart\n label={getPhrase('device')}\n chartData={chartData} xAxis={getXAxisLabelIcons()}\n withObserver\n />\n </div>\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"heatMap\":\"Rfr9N\",\"heatMapTimepointIndicator\":\"s6JbA\",\"heatMapTimepointIndicatorVisible\":\"mgjWX\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EngagementHeatMap } from 'libs/shared/apps/analytics/components/engagement-heat-map/EngagementHeatMap';\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-heatmap.scss';\n\nconst namespace = 'shared.insightHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHeatmapProps {\n engagement: Engagement;\n heatmapAppLink: Core.AppLink;\n engagementRate?: number;\n}\n\nexport function InsightHeatmap(props: InsightHeatmapProps) {\n const engagementRate = props.engagementRate || props.engagement?.engagementRate;\n const roundedRate = engagementRate > 0\n ? Math.round(engagementRate * 100)\n : null;\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Timer}\n svgClassName='bg-light-green text-green'\n >\n <div className='mb-2'>\n <p className='mb-0'>\n {roundedRate\n ? (\n <Text namespace={namespace} phrase='everyoneWatched' options={{ engagementRate: roundedRate }} />\n )\n : <Text namespace={namespace} phrase='notWatched' />\n }\n </p>\n {!!roundedRate &&\n <AppLink appLink={props.heatmapAppLink} className='text-info'>\n <Text namespace={namespace} phrase='viewHeatmap' />\n </AppLink>\n }\n </div>\n\n <div className='mb-2'>\n <EngagementHeatMap\n engagement={props.engagement}\n className={styles.heatMap}\n />\n </div>\n\n <p className='h3 text-center mb-2'>{roundedRate || '--'}%</p>\n <p className='text-center mb-0 font-size-sm'><Text namespace={namespace} phrase='amountWatched' /></p>\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport styles from './insights-mask.scss';\n\nconst namespace = 'lite.insightsMask';\n\ninterface InsightsShareMaskProps extends React.PropsWithChildren {\n hasData: boolean;\n video: VideoTypes;\n share: Share;\n}\n\nexport function InsightsShareMask(props: InsightsShareMaskProps) {\n const appLink = getShareOptionsAppLink(props.share);\n\n return (\n <div className={`${!props.hasData && styles.mask} position-relative`}>\n <div className={!props.hasData ? 'position-absolute' : ''}>{props.children}</div>\n <div\n className={!props.hasData ? `${styles.backdrop} d-flex flex-column align-items-center justify-content-start py-5` : ''}\n >\n {!props.hasData && (\n <div className='text-center p-5 m-5 w-50'>\n <img className='mb-3' src={ImageUrls.Insights.SEND_PAPER_PLANE} width={288} />\n <h2 className='h3 mb-3'><Text namespace={namespace} phrase='shareHeading' /></h2>\n <p className='mb-3'><Text namespace={namespace} phrase='shareDescription' /></p>\n <IconButton svgName={cvSvgLibrary.Share} className='btn btn-dark' appLink={appLink}>\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n )}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tealChart\":\"lZZf0\",\"grayChart\":\"wJQc4\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-attempts.scss';\n\nconst namespace = 'shared.insightAverageAttempts';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightAverageAttemptsProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageAttempts(props: InsightAverageAttemptsProps) {\n const categoriesData = getCategoriesData();\n const highestAttemptsCount = getHighestAttemptsCount();\n const averageAttempts = getAverageAttempts();\n const chartData = getChartData();\n\n function getCategoriesData() {\n const categoriesData = props.students.reduce((acc, student) => {\n const attemptsCategory = student.summary.attempts.toString();\n\n if (!(attemptsCategory in acc)) {\n Object.assign(acc, { [attemptsCategory]: 0 });\n }\n\n acc[attemptsCategory]++;\n\n return acc;\n }, {} as HashObject);\n return Object.keys(categoriesData).length ? categoriesData : { 0: 0 };\n }\n\n function getHighestAttemptsCount() {\n return Math.max(...Object.keys(categoriesData).map(category => categoriesData[category]));\n }\n\n function getAverageAttempts(): number[] {\n return Object.keys(categoriesData).reduce((acc, category) => {\n const userCount = categoriesData[category];\n return userCount === highestAttemptsCount ? [ ...acc, category ] : acc;\n }, []);\n }\n\n function calculateAverage() {\n const total = Object.entries(categoriesData).reduce(\n (acc, [ attemptsCount, usersCount ]) => {\n acc.totalAttempts += +attemptsCount * usersCount;\n acc.totalUsers += usersCount;\n return acc;\n },\n { totalAttempts: 0, totalUsers: 0 }\n );\n\n return total.totalUsers === 0 ? 0 : Math.round(total.totalAttempts / total.totalUsers * 100) / 100;\n }\n\n function getChartData(): ChartData {\n const noAttempts = categoriesData[0] === 0;\n\n return {\n categories: Object.keys(categoriesData),\n series: [{\n type: 'column',\n color: categoriesData[0] ? '#EAEAEA' : '#40C2BB',\n borderRadius: 4,\n dataLabels: {\n enabled: !noAttempts,\n style: CHART_FONT_STYLES,\n inside: false,\n overflow: 'allow',\n crop: false\n },\n data: Object.keys(categoriesData).map(category => {\n const highestCount = highestAttemptsCount !== 0 && categoriesData[category] === highestAttemptsCount;\n\n return {\n className: `${noAttempts ? styles.grayChart : styles.tealChart} ${categoriesData[category] !== highestAttemptsCount && categoriesData[category] !== 0 ? 'opacity-25' : ''}`,\n borderWidth: highestCount ? 2 : 0,\n borderColor: highestCount ? 'black' : '',\n y: categoriesData[category]\n };\n })\n }]\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Refresh}\n svgClassName='bg-light-purple text-purple'\n >\n <p>\n {averageAttempts.length\n ? <Text namespace={namespace} phrase='averageAttempts' options={{ smartCount: calculateAverage() }} />\n : <Text namespace={namespace} phrase='noAttempts' />\n }\n </p>\n\n <div className='mt-auto'>\n <InsightChart label={getPhrase('attempts')} chartData={chartData} />\n </div>\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"redChart\":\"G7zOw\",\"yellowChart\":\"k34mm\",\"greenChart\":\"vBneA\",\"blueChart\":\"RPTWm\",\"grayChart\":\"k4JFZ\",\"borderDark\":\"LWor3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-average-score.scss';\n\nconst namespace = 'shared.insightAverageScore';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightAverageScoreProps {\n students: StudentResultsWithSummary[];\n}\n\nexport function InsightAverageScore(props: InsightAverageScoreProps) {\n function getChartData(): ChartData {\n const scoreCount = Array(11).fill(0);\n const scorePercentageData = props.students.reduce((acc, value) => {\n const scoreIndex = Math.floor(value.summary.percentCorrect * 10);\n acc[scoreIndex]++;\n\n return acc;\n }, scoreCount);\n\n const PERCENTAGES = [ '0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100' ];\n\n return {\n categories: PERCENTAGES,\n series: [{\n type: 'column',\n color: '#4E9ACE',\n borderRadius: 4,\n data: scorePercentageData.map((score, index) => {\n const percentageCategory = Number(PERCENTAGES[index]);\n\n const getChartColour = (percentage: number, score: number) => {\n if (score === 0)\n return styles.grayChart;\n if (percentage < 50)\n return styles.redChart;\n if (percentage < 70)\n return styles.yellowChart;\n if (percentage < 90)\n return styles.greenChart;\n\n return styles.blueChart;\n };\n\n return {\n className: `${getChartColour(percentageCategory, score)}`,\n y: score\n };\n })\n }]\n };\n }\n\n function getAverageNumbers() {\n const averageScores = props.students.map(student => student.summary.percentCorrect);\n const averagePercentage = averageScores.reduce((a, b) => a + b, 0) / averageScores.length;\n const totalQuestions = ArrayHelper.last(\n ArrayHelper.last(props.students).results\n ).attempts.length;\n\n return {\n averageScore: Math.round(totalQuestions * averagePercentage),\n totalQuestions,\n averagePercentage: (averagePercentage * 100).toFixed(1)\n };\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Analytics}\n svgClassName='bg-light-orange text-orange'\n >\n <p>\n {props.students.length\n ? <Text namespace={namespace} phrase='averageScore' options={getAverageNumbers()} />\n : <Text namespace={namespace} phrase='noAnswers' />\n }\n </p>\n\n <InsightChart label={`${getPhrase('studentScores')} (%)`} chartData={getChartData()} />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightCompletedStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightCompletedStudents(props: InsightCompletedStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completedStudents')}\n appLink={props.resultsAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightEasiestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightEasiestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightEasiestQuestion(props: InsightEasiestQuestionProps) {\n const easiestQuestion = React.useMemo(\n () => getEasiestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getEasiestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.last(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.StarOutline}\n svgClassName='bg-light-blue text-blue'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={easiestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {easiestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={easiestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {easiestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n className='text-info'>\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHardestQuestion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHardestQuestionProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n questionsAppLink: Core.AppLink;\n}\n\nexport function InsightHardestQuestion(props: InsightHardestQuestionProps) {\n const hardestQuestion = React.useMemo(\n () => getHardestQuestion(props.interactive, props.results),\n [props.results.students.length]\n );\n\n function getHardestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.first(sortedInteractions);\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.QuestionMark}\n svgClassName='bg-light-orange text-orange'\n >\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={hardestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {hardestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={hardestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('noAnswers')}</span>\n }\n </div>\n\n {hardestQuestion && (\n <AppLink\n appLink={{\n ...props.questionsAppLink,\n params: {\n ...props.questionsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='viewQuestions' />\n </AppLink>\n )}\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightHighScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHighScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n greenChartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers?: boolean;\n}\n\nexport function InsightHighScoringStudents(props: InsightHighScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Trophy}\n svgClassName='bg-light-teal text-teal'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.greenChartImageUrl}\n description={getPhrase(props.completed.length ? 'noStudents' : 'highScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_desc'\n }\n }}\n appLinkText={getPhrase('viewByHighest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightLowScoringStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightLowScoringStudentsProps {\n students: StudentResultsWithSummary[];\n imageCdnUrl: string;\n redChartImageUrl: string;\n heartImageUrl: string;\n resultsAppLink: Core.AppLink;\n completed: StudentResultsWithSummary[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightLowScoringStudents(props: InsightLowScoringStudentsProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-red text-red'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students.map(student => ({ ...student.user, percentage: student.summary.percentCorrect }))}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.completed.length ? props.heartImageUrl : props.redChartImageUrl}\n description={getPhrase(props.completed.length ? 'doingWell' : 'lowScore')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n ...props.resultsAppLink.params as HashObject,\n sortBy: 'score_asc'\n }\n }}\n appLinkText={getPhrase('viewByLowest')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\n\nconst namespace = 'shared.insightMarkingRequired';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface InsightMarkingRequiredProps {\n students: AnonUser[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightMarkingRequired(props: InsightMarkingRequiredProps) {\n const markingRequiredFilter: FilterStudentsBy = 'marking_required';\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Hand}\n svgClassName='bg-light-blue text-blue'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsRequireMarking')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n filterBy: markingRequiredFilter\n }\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightNotCompletedStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightNotCompletedStudentsProps {\n markingRequiredStudents: StudentResultsWithSummary[];\n completedStudents: StudentResultsWithSummary[];\n notCompletedStudents: StudentResultsWithSummary[];\n classroomStudents: User[];\n imageCdnUrl: string;\n imageUrl: string;\n resultsAppLink: Core.AppLink;\n anonymiseUsers: boolean;\n}\n\nexport function InsightNotCompletedStudents(props: InsightNotCompletedStudentsProps) {\n const notCompletedStudents = getNotCompletedStudents();\n \n function getNotCompletedStudents() {\n const markingRequiredStudentIds = props.markingRequiredStudents.map(student => student?.user.id);\n const completedStudentIds = props.completedStudents.map(student => student?.user.id);\n \n const notStartedStudents = props.classroomStudents.filter(student => {\n return !markingRequiredStudentIds.includes(student.id) &&\n !completedStudentIds.includes(student.id);\n });\n \n return ArrayHelper.uniq([\n ...props.notCompletedStudents.map(student => student.user),\n ...notStartedStudents\n ], 'id');\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n count={notCompletedStudents.length}\n >\n <InsightStudentList\n students={notCompletedStudents}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('completed')}\n appLink={{\n ...props.resultsAppLink,\n params: {\n filterBy: 'not_completed'\n }\n }}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './insights-mask.scss';\n\nconst namespace = 'lite.insightsMask';\n\ninterface InsightsMarkingRequiredMaskProps extends React.PropsWithChildren {\n requiresMarking: number;\n appLink: Core.AppLink;\n hideMarkingRequiredMask: () => void;\n}\n\nexport function InsightsMarkingRequiredMask(props: InsightsMarkingRequiredMaskProps) {\n const filterBy: FilterStudentsBy = 'marking_required';\n\n return (\n <div className={`${props.requiresMarking && styles.mask} position-relative`}>\n <div className={props.requiresMarking ? 'position-absolute top-0' : ''}>{props.children}</div>\n <div\n className={props.requiresMarking ? `${styles.backdrop} d-flex flex-column align-items-center justify-content-start py-5` : ''}\n >\n {!!props.requiresMarking && (\n <div className='text-center w-50'>\n <img src={ImageUrls.Insights.MARKING_RESPONSES} className='mb-3' width={288} />\n <h2 className='h3 mb-3'><Text namespace={namespace} phrase='markHeading' /></h2>\n <p className='mb-3'><Text namespace={namespace} phrase='markDescription' /></p>\n <IconButton\n svgName={cvSvgLibrary.Check}\n className='btn btn-dark mb-3'\n appLink={{\n ...props.appLink,\n params: {\n ...props.appLink.params as HashObject,\n filterBy\n }\n }}\n >\n <Text namespace={namespace} phrase='markResponses' options={{ smartCount: props.requiresMarking }} />\n </IconButton>\n <button className='btn btn-link d-block p-0 mx-auto' onClick={props.hideMarkingRequiredMask}><Text namespace={namespace} phrase='seeIncomplete' /></button>\n </div>\n )}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"pG0Jh\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-overview.scss';\n\nexport function PartialInteractiveInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightAverageAttempts } from 'libs/shared/apps/analytics/components/insights/average-attempts/InsightAverageAttempts';\nimport { InsightAverageScore } from 'libs/shared/apps/analytics/components/insights/average-score/InsightAverageScore';\nimport { InsightCompletedStudents } from 'libs/shared/apps/analytics/components/insights/completed-students/InsightCompletedStudents';\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightEasiestQuestion } from 'libs/shared/apps/analytics/components/insights/easiest-question/InsightEasiestQuestion';\nimport { InsightHardestQuestion } from 'libs/shared/apps/analytics/components/insights/hardest-question/InsightHardestQuestion';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightHighScoringStudents } from 'libs/shared/apps/analytics/components/insights/high-scoring-students/InsightHighScoringStudents';\nimport { InsightLowScoringStudents } from 'libs/shared/apps/analytics/components/insights/low-scoring-students/InsightLowScoringStudents';\nimport { InsightMarkingRequired } from 'libs/shared/apps/analytics/components/insights/marking-required/InsightMarkingRequired';\nimport { InsightNotCompletedStudents } from 'libs/shared/apps/analytics/components/insights/not-completed-students/InsightNotCompletedStudents';\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { getEngagementRate } from 'libs/shared/apps/analytics/utils/EngagementUtils';\nimport { groupStudents } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\nimport { Config, Engagement, Interactive, InteractiveMetadata, InteractiveResultSet, User } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { InsightsMarkingRequiredMask } from 'apps/my-shares/components/insights-mask/InsightsMarkingRequiredMask';\nimport { InsightsShareMask } from 'apps/my-shares/components/insights-mask/InsightsShareMask';\nimport { PartialInteractiveInsightsOverview } from 'apps/my-shares/components/interactive-insights-overview/partial-loading/PartialInteractiveInsightsOverview';\n\nconst namespace = 'insights.interactiveInsightsOverview';\n\ninterface InteractiveInsightsOverviewProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n interactiveMetadata: InteractiveMetadata;\n osCount: GroupedAnalyticsCount[];\n classroomStudents: User[];\n aggregateEngagement: Engagement\n individualEngagement?: Engagement[];\n interactiveInsightsAppLinks: HashObject;\n config: Config;\n anonymiseUsers: boolean;\n hasDataLoaded: boolean;\n share: Share;\n}\n\nexport function InteractiveInsightsOverview(props: InteractiveInsightsOverviewProps) {\n const [ hideMarkingRequiredMask, setHideMarkingRequiredMask ] = React.useState(false);\n\n const studentGroups = props.hasDataLoaded && groupStudents(props.interactive, props.results, ScoreThresholdInsights);\n const hasData = props.hasDataLoaded && !!props.results.students.length;\n\n function getUsers(studentResult: StudentResultsWithSummary[]): (AnonUser)[] {\n return studentResult.map(student => student.user);\n }\n\n return (\n <>\n {!props.hasDataLoaded && <PartialInteractiveInsightsOverview />}\n\n {props.hasDataLoaded &&\n <InsightsShareMask video={props.interactiveMetadata} hasData={hasData} share={props.share}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentResponses' />\n <span>: {props.results.students.length}{props.classroomStudents ? `/${props.classroomStudents.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n <div className='col'>\n <InsightMarkingRequired\n imageUrl={ImageUrls.Insights.SPEECH_BUBBLE_ASTERISK}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={getUsers(studentGroups.markingRequired)}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n {!!props.classroomStudents?.length && (\n <div className='col'>\n <InsightNotCompletedStudents\n markingRequiredStudents={studentGroups.markingRequired}\n completedStudents={studentGroups.completed}\n notCompletedStudents={studentGroups.notCompleted}\n classroomStudents={props.classroomStudents}\n imageCdnUrl={props.config.imageCdnUrl}\n imageUrl={ImageUrls.Insights.JIGSAW}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n )}\n <div className='col'>\n <InsightCompletedStudents\n students={studentGroups.completed}\n imageCdnUrl={props.config.imageCdnUrl}\n imageUrl={ImageUrls.Insights.AVATAR}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <InsightsMarkingRequiredMask\n requiresMarking={!hideMarkingRequiredMask && studentGroups.markingRequired.length}\n appLink={props.interactiveInsightsAppLinks.resultsAppLink}\n hideMarkingRequiredMask={() => setHideMarkingRequiredMask(true)}\n >\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentsPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightLowScoringStudents\n redChartImageUrl={ImageUrls.Insights.RED_CHART}\n heartImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={studentGroups.lowScore}\n completed={studentGroups.completed}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHighScoringStudents\n greenChartImageUrl={ImageUrls.Insights.GREEN_CHART}\n resultsAppLink={props.interactiveInsightsAppLinks.resultsAppLink}\n imageCdnUrl={props.config.imageCdnUrl}\n students={studentGroups.highScore}\n completed={studentGroups.completed}\n anonymiseUsers={props.anonymiseUsers}\n />\n </div>\n <div className='col-6'>\n <InsightHardestQuestion\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n questionsAppLink={props.interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n <div className='col-6'>\n <InsightEasiestQuestion\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n questionsAppLink={props.interactiveInsightsAppLinks.questionsAppLink}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='classPerformance' />\n </h2>\n <div className='row g-3'>\n <div className='col-6'>\n <InsightAverageScore\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightAverageAttempts\n students={studentGroups.completed}\n />\n </div>\n <div className='col-6'>\n <InsightDevices osCount={props.osCount} />\n </div>\n <div className='col-6'>\n <InsightHeatmap\n engagement={props.aggregateEngagement}\n heatmapAppLink={props.interactiveInsightsAppLinks.heatmapAppLink}\n // Average of all the individual engagements\n engagementRate={getEngagementRate(props.individualEngagement)}\n />\n </div>\n </div>\n </section>\n </InsightsMarkingRequiredMask>\n </InsightsShareMask>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"VRTes\",\"backdrop\":\"XzVXl\"};"],"names":["getStaticChartOptions","label","title","text","credits","enabled","yAxis","labels","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","min","xAxis","margin","style","lineWidth","legend","chart","type","backgroundColor","height","spacingTop","plotOptions","column","dataLabels","enableMouseTracking","minPointLength","InsightChart","props","data","staticChartOptions","hasData","ref","containerRef","withObserver","window","ResizeObserver","observer","current","reflow","observe","disconnect","highcharts","options","chartData","series","some","y","max","categories","MAX_ITEMS","InsightStudentList","students","length","className","slice","map","student","index","key","UserRecipientItemMetadata","user","imageCdnUrl","avatarClassName","detailsClassName","showDisplayName","showSubText","anonymiseUsers","undefined","percentage","Math","round","PercentageIndicator","size","src","imageUrl","dangerouslySetInnerHTML","__html","description","appLink","AppLink","appLinkText","namespace","getPhrase","LanguageService","InsightDevices","categoriesData","defaultDevices","Phone","Computer","osCount","reduce","acc","group","name","deviceCategory","getDeviceType","count","getCategoriesData","topDeviceCount","Object","keys","category","topDevices","filter","borderRadius","inside","overflow","crop","highestCount","borderWidth","borderColor","InsightCard","svgClassName","svgName","Text","phrase","smartCount","device","toLowerCase","useHTML","formatter","this","value","SvgHelper","replace","getDeviceIcon","InsightHeatmap","engagementRate","engagement","roundedRate","heatmapAppLink","EngagementHeatMap","InsightsShareMask","share","children","width","InsightAverageAttempts","noAttempts","total","attemptsCategory","summary","attempts","toString","assign","highestAttemptsCount","averageAttempts","color","entries","attemptsCount","usersCount","totalAttempts","totalUsers","InsightAverageScore","averageScores","percentCorrect","averagePercentage","a","b","totalQuestions","ArrayHelper","results","averageScore","toFixed","scoreCount","Array","fill","scorePercentageData","floor","PERCENTAGES","score","percentageCategory","Number","getChartColour","InsightCompletedStudents","resultsAppLink","InsightEasiestQuestion","easiestQuestion","interactive","answeredInteractions","i","resultsSummary","answered","awaitingMarking","sortedInteractions","layout","InteractionLabel","interaction","iconClassName","questionsAppLink","params","sortBy","InsightHardestQuestion","hardestQuestion","InsightHighScoringStudents","greenChartImageUrl","completed","InsightLowScoringStudents","heartImageUrl","redChartImageUrl","InsightMarkingRequired","filterBy","InsightNotCompletedStudents","markingRequiredStudentIds","completedStudentIds","notStartedStudents","notCompletedStudents","markingRequiredStudents","id","completedStudents","classroomStudents","includes","InsightsMarkingRequiredMask","requiresMarking","ImageUrls","IconButton","onClick","hideMarkingRequiredMask","PartialInteractiveInsightsOverview","InteractiveInsightsOverview","studentResult","setHideMarkingRequiredMask","studentGroups","hasDataLoaded","video","interactiveMetadata","interactiveInsightsAppLinks","config","markingRequired","notCompleted","lowScore","highScore","aggregateEngagement","individualEngagement"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5153-079b4125ae-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","file:///app/packages/libs/shared/src/components/launchpad/v2/launchpad-v2.scss","file:///app/packages/libs/shared/src/components/launchpad/v2/LaunchpadV2.tsx","file:///app/packages/projects/lite/src/apps/share/views/pincode/pincode.scss","file:///app/packages/projects/lite/src/apps/share/views/pincode/PincodeView.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}` ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2' ],\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"s6wnJ\",\"leftWithImage\":\"UFQ2T\",\"bgCover\":\"Tp9_3\",\"bgFull\":\"AlF2T\",\"right\":\"eoZzJ\",\"rightContent\":\"RVyLM\",\"narrowContent\":\"INvJ0\",\"logo\":\"YHNgA\",\"buttonContainer\":\"ZW85Q\",\"blur\":\"Mtlg9\",\"imageContainer\":\"NxEjh\",\"imagePosition\":\"NN9cV\",\"image\":\"PkJ8J\",\"thumbnail\":\"y0V3Z\",\"tallposter\":\"Wrg5x\",\"cover\":\"x3h8F\",\"contentBody\":\"aLd5V\",\"contentBodyBase\":\"uQ2rm\"};","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport styles from './launchpad-v2.scss';\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadV2Props {\n}\n\nexport function LaunchpadV2(props: React.PropsWithChildren<LaunchpadV2Props>): JSX.Element {\n return (\n <div className='d-flex'>\n {props.children}\n </div>\n );\n}\n\ninterface LeftPanelProps {\n className?: string;\n}\n\n\nfunction LeftPanel(props: React.PropsWithChildren<LeftPanelProps>): JSX.Element {\n return (\n <div className={`${styles.left} ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface LeftImageProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n fallbackImages: LaunchImage[];\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction LeftImage(props: LeftImageProps): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n React.useEffect(() => {\n if (!props.imageUrl) {\n const image = props.fallbackImages[Math.floor(Math.random() * props.fallbackImages.length)];\n setImage(image.bgUrl);\n return;\n }\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = props.imageUrl;\n return () => img.onload = null;\n }, [props.imageUrl]);\n\n return (\n <div\n className={`${styles.left} ${styles.leftWithImage} ${styles.bgCover} bg-light`}\n style={{ backgroundImage: image ? `url('${image}')` : '' }}\n >\n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${props.imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={props.imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n );\n}\n\ntype ImageSizeType = 'cover' | 'full';\n\ninterface LeftImageWithBackgroundProps {\n imageUrl: string;\n imageSize?: ImageSizeType;\n backgroundColor?: string;\n title?: string;\n}\n\nconst imageSizeMap: {[key in ImageSizeType]: string} = {\n cover: styles.bgCover,\n full: styles.bgFull\n};\n\nfunction LeftImageWithBackground(props: LeftImageWithBackgroundProps): JSX.Element {\n const bgStyles: React.CSSProperties = {\n backgroundImage: props.imageUrl ? `url(\"${props.imageUrl}\")` : ''\n };\n\n if (props.backgroundColor)\n bgStyles.backgroundColor = props.backgroundColor;\n \n return (\n <div\n className={`${styles.left} ${styles.leftWithImage} ${imageSizeMap[props.imageSize || 'cover']} d-flex align-items-center`}\n style={bgStyles}\n title={props.title}\n />\n );\n}\n\ninterface RightPanelProps {\n className?: string;\n}\n\nexport function RightPanel(props: React.PropsWithChildren<RightPanelProps>): JSX.Element {\n return (\n <div className={`${styles.right} ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderProps {\n bannerComponent?: JSX.Element;\n logoComponent?: () => JSX.Element;\n className?: {\n logoContainer?: string;\n }\n}\n\n\nfunction Header(props: React.PropsWithChildren<HeaderProps>): JSX.Element {\n const LogoComponent = props?.logoComponent || ClickViewLogo;\n \n return (\n <div className='position-relative'>\n {!!props.bannerComponent &&\n props.bannerComponent\n }\n <div className={classNames(styles.logo, 'position-absolute', props.className?.logoContainer)}>\n <LogoComponent />\n </div>\n {props.children}\n </div>\n );\n}\n\ninterface ContentProps {\n className?: string;\n}\n\nfunction Content(props: React.PropsWithChildren<ContentProps>): JSX.Element {\n return (\n <div className={classNames(styles.rightContent, 'd-flex flex-column justify-content-center h-100', props?.className)}>\n {props.children}\n </div>\n );\n}\n\ninterface ContentBodyProps {\n className?: string;\n width?: 'base' | 'full';\n}\n\nconst widthClassNameMap: {[key in ContentBodyProps['width']]: string} = {\n base: styles.contentBodyBase,\n full: ''\n};\n\nfunction ContentBody(props: React.PropsWithChildren<ContentBodyProps>): JSX.Element {\n const widthClassName = widthClassNameMap[props.width || 'base'];\n return (\n <div className={classNames(styles.contentBody, widthClassName, 'm-auto p-3', props.className)}>\n {props.children}\n </div>\n );\n}\n\ninterface NarrowContentProps {\n className?: string;\n}\n\nLaunchpadV2.NarrowContent = NarrowContent;\nfunction NarrowContent(props: React.PropsWithChildren<NarrowContentProps>): JSX.Element {\n return (\n <div className={`${styles.narrowContent} mx-auto w-100 ${props.className ? props.className : ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface ButtonsProps {\n className?: string;\n}\n\nfunction Buttons(props: React.PropsWithChildren<ButtonsProps>): JSX.Element {\n return (\n <div className={classNames('position-fixed bg-white d-flex align-items-center', styles.buttonContainer, props?.className)}>\n {props.children}\n </div>\n );\n}\n\n/**\n * Intended ussage below:\n * \n * <LaunchpadV2>\n * <LaunchpadV2.Left>\n * // Your LHS content here\n * </LaunchpadV2.Left>\n * <LaunchpadV2.Right>\n * <LaunchpadV2.Header />\n * <LaunchpadV2.Content>\n * // Can omit this if it needs to be full width\n * <LaunchpadV2.ContentBody width=\"...\">\n * // Your main content here\n * </LaunchpadV2.ContentBody>\n * </LaunchpadV2.Content>\n * \n * // Omit this and put your buttons in content\n * // if you want your buttons immediately under your content rather \n * // than at the bottom of the screen\n * <LaunchpadV2.Buttons />\n * \n * </LaunchpadV2.Right>\n * </LaunchpadV2>\n * \n * - Sha\n */\n\nLaunchpadV2.Left = LeftPanel;\nLaunchpadV2.LeftImage = LeftImage;\nLaunchpadV2.LeftImageWithBackground = LeftImageWithBackground;\nLaunchpadV2.Right = RightPanel;\nLaunchpadV2.Header = Header;\nLaunchpadV2.Content = Content;\nLaunchpadV2.ContentBody = ContentBody;\nLaunchpadV2.Buttons = Buttons;\n","// extracted by mini-css-extract-plugin\nexport default {\"formContainer\":\"S2zsG\",\"toggleEye\":\"xC7VO\",\"input\":\"UpZdh\"};","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { LaunchpadV2 } from 'libs/shared/components/launchpad/v2/LaunchpadV2';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { LAUNCHPAD_FALLBACK_IMAGES } from 'shared/components/launchpad/Launchpad';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkFilterHelpers } from 'apps/share/filters/share-link-filter/ShareLinkFilterHelpers';\n\nimport styles from './pincode.scss';\n\n\nconst namespace = 'share.pincode';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function PincodeView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const [ pincode, setPincode ] = React.useState('');\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n const [ errorMessage, setErrorMessage ] = React.useState('');\n \n\n const fetchAsync = Flight.useGetFetchAsync();\n\n async function onSubmit(e: React.FormEvent): Promise<void> {\n e.preventDefault();\n\n if (!pincode)\n return;\n\n setShowSpinner(true);\n\n try {\n const pincodeData = await fetchAsync<SharePincode>(ShareRequests.getPincodeByCode(pincode));\n\n const appLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [pincodeData.shareId]\n };\n\n ShareLinkFilterHelpers.setPincode(pincodeData.shareId, pincode);\n const href = Core.AppLinkHelper.getHref(appLink);\n Core.LocationUtils.PageLoad(href);\n } catch (error) {\n if (error.responseJSON?.status === HttpStatus.NotFound) {\n setErrorMessage(getPhrase('incorrectPincodeError'));\n setShowSpinner(false);\n return;\n }\n\n setErrorMessage(getPhrase('ajaxErrorMessage'));\n setShowSpinner(false);\n }\n }\n\n return (\n <LaunchpadV2>\n <LaunchpadV2.LeftImage fallbackImages={LAUNCHPAD_FALLBACK_IMAGES} />\n <LaunchpadV2.Right>\n <LaunchpadV2.Header />\n <LaunchpadV2.Content>\n <LaunchpadV2.NarrowContent>\n <form onSubmit={onSubmit} className='position-relative'>\n <div className='form-group'>\n <label className='h2' htmlFor='link-password'>\n <Text namespace={namespace} phrase='info' />\n </label>\n <input\n id='link-password'\n type='text'\n className={`form-control form-control-lg ${styles.input} ${errorMessage ? 'is-invalid' : ''}`}\n placeholder={getPhrase('placeholder')}\n onChange={e => setPincode(e.target.value)}\n value={pincode}\n autoComplete='off'\n aria-errormessage='linkPasswordError'\n />\n\n {errorMessage && (\n <FormFeedback className='mb-3' name='linkPassword'>{errorMessage}</FormFeedback>\n )}\n </div>\n\n <SpinnerButton\n variant='dark'\n showSpinner={showSpinner}\n type='submit'\n className='w-100 mt-3 btn-lg'\n disabled={showSpinner || !pincode}\n >\n <Text namespace={namespace} phrase='confirm' />\n </SpinnerButton>\n </form>\n </LaunchpadV2.NarrowContent>\n </LaunchpadV2.Content>\n </LaunchpadV2.Right>\n </LaunchpadV2>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nexport const LAUNCHPAD_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.BG_5 }\n];\n\nexport const LAUNCHPAD_PRODUCT_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_5 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_6 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_7 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_8 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_9 }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n { bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png' }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = LAUNCHPAD_PRODUCT_FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div\n className={`${styles.left} ${image ? 'bg-blue d-flex align-items-center' : 'bg-light'}`}\n >\n {image ?\n <img className='img-fluid' src={image} draggable={false} /> :\n (showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n )\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["normalizeOptions","namespace","ShareRequests","createShare","data","url","key","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","id","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","FormFeedback","props","name","className","role","children","mapObjectTypeToImageClass","objectType","MasterType","LaunchpadV2","imageSizeMap","cover","full","widthClassNameMap","base","NarrowContent","Left","LeftImage","showImage","setShowImage","image","setImage","imageUrl","img","Image","onload","src","fallbackImages","Math","floor","random","length","bgUrl","style","backgroundImage","alt","title","LeftImageWithBackground","bgStyles","backgroundColor","imageSize","Right","Header","LogoComponent","logoComponent","ClickViewLogo","bannerComponent","logoContainer","Content","ContentBody","widthClassName","width","Buttons","getPhrase","LanguageService","PincodeView","useSetPageMetadata","pincode","setPincode","showSpinner","setShowSpinner","errorMessage","setErrorMessage","fetchAsync","onSubmit","e","preventDefault","pincodeData","appLink","application","action","args","ShareLinkFilterHelpers","href","responseJSON","status","HttpStatus","htmlFor","Text","phrase","placeholder","onChange","target","value","autoComplete","SpinnerButton","variant","disabled","LAUNCHPAD_FALLBACK_IMAGES","ImageUrls","LAUNCHPAD_PRODUCT_FALLBACK_IMAGES","Launchpad","ImageHelper","size","IMAGE_URLS","urlLists","leftComponent","draggable","links","map","link","hide","onClick","text"],"sourceRoot":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 5241-163f5ac64c-lite.chunk.js.LICENSE.txt */
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5241],{38307:(e,t,n)=>{n.d(t,{c:()=>y,l:()=>h});var r=n(32735),o=n(232),a=n.n(o),i=n(8604),l=n(83345);const c={heatMap:"epapa",legend:"uhH4p"};function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var s="shared.engagementHeatMap",f="#f1f1f1",d=a().scale(["#daf07d","#08bd1a"]),m=[0,.01,.25,.5,.75,1];function p(e,t){return e?d(e/t).hex():f}function v(e,t){for(var n=[],r=0;r<e.length;r++){var o=r>0&&e[r-1],a=e[r],i=r<e.length-1&&e[r+1];a===o&&a===i||n.push("".concat(p(a,t)," ").concat(100/e.length*r,"%"))}return"linear-gradient(to right, ".concat(n.join(","),")")}function h(){var e=Math.max.apply(Math,m),t=100/m.length;return r.createElement("div",{className:"d-flex justify-content-between w-100"},r.createElement(l.x,{namespace:s,phrase:"less"}),r.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(c.legend)},m.map((function(n,o){return r.createElement("div",{key:o,style:{width:"".concat(t,"%"),backgroundColor:p(n,e)}})}))),r.createElement(l.x,{namespace:s,phrase:"more"}))}function y(e){var t,n,o,a=(0,i.O)(e.engagement),l=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return u(e)}(o=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(o)||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.")}());return r.createElement("div",{className:"border rounded ".concat(c.heatMap," ").concat(null!==(n=e.className)&&void 0!==n?n:""),style:{background:v(a,l)}})}},84621:(e,t,n)=>{n.d(t,{L:()=>i});var r=n(32735),o=n(83914);const a={icon:"sAmpy",count:"faDs4"};function i(e){return r.createElement("section",{className:"d-flex flex-column border rounded p-3 h-100"},r.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},r.createElement("div",{className:"".concat(a.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},r.createElement(o.x,{svgName:e.svgName,size:o.S.Small})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("h2",{className:"h6 mb-0"},e.title)),"number"==typeof e.count&&r.createElement("div",{className:"".concat(a.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},70072:(e,t,n)=>{n.d(t,{d:()=>r});var r={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},8604:(e,t,n)=>{function r(e){var t=e.videoDuration||0;return new Array(Math.ceil(t)).fill(null).map((function(t,n){return(null==e?void 0:e.heatMap[n])||0}))}function o(e){return null==e?void 0:e.reduce((function(t,n){return t+n.engagementRate/e.length}),0)}n.d(t,{O:()=>r,Q:()=>o})},6748:(e,t,n)=>{n.d(t,{i:()=>S});var r=n(32735),o=n(42648),a=n(35509),i=n(91967),l=n(15611),c=n(17808),u=n(1287),s=n(83914),f=n(90281),d={opacity:"0.8",cursor:"grabbing"},m=n(35223);function p(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function y(e){var t,n,r,o;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(o=e.current)||void 0===o?void 0:o.clientWidth)}}const g={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var w=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};function E(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(g.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(s.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?m.vn.ArrowRight:m.vn.ArrowLeft,size:s.S.Small})):r.createElement(r.Fragment,null)}function O(e){var t,n,o,s,f,m,v,h,y={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(y.initialState={selectedRowIds:(v=e.initialSelectedRowIds,h={},v.forEach((function(e){return h[e]=!0})),h)}),e.getRowId&&(y.getRowId=e.getRowId);var g,w=a.useTable.apply(void 0,[y].concat((g=function(e){var t=[a.useSortBy,a.useRowSelect,"flex"===e.layout?a.useFlexLayout:a.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[a.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[a.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(e)}(g)||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 b(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(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.")}()))),O=w.getTableProps,S=w.getTableBodyProps,j=w.headerGroups,C=w.rows,x=w.prepareRow,k=w.toggleAllRowsSelected,N=w.setGlobalFilter,P=w.setHiddenColumns,T=w.state.sortBy;function I(){return C.map((function(t){x(t);var n=function(t){var n,r,o,a,l,c=i.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(o=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==o?o:"";return t.isSelected&&(null===(a=e.theme)||void 0===a?void 0:a.selectedRow)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),o=!!e.getRowAppLink&&e.getRowAppLink(t);function a(){e.onSelectRow&&(e.allowSelectMultipleRows||k(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return o?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:o}),L(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:a}),L(t))}var s=t.getRowProps();return e.enableSortableRows?r.createElement(u.W,{id:t.original.id,key:t.id,childProps:s,childComponent:r.forwardRef((function(e,t){return c(e,t)}))}):c(s)}))}function L(t){return t.cells.map((function(n){var o=function(t,n){var r,o,a="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(a=e.theme.cell(t,n)),"string"==typeof(null===(o=e.theme)||void 0===o?void 0:o.cell)&&(a=e.theme.cell),e.onSelectCell&&(a+=" cursor-pointer"),a}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:o,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(T)}),[T]),r.useEffect((function(){e.globalFilter&&N(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&P(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},O(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(s=null===(o=e.theme)||void 0===o?void 0:o.header)&&void 0!==s?s:""},j.map((function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==o?o:""}),t.headers.map((function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==o?o:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(E,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(E,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},S(),{className:null!==(m=null===(f=e.theme)||void 0===f?void 0:f.body)&&void 0!==m?m:""}),e.enableSortableRows?r.createElement(c.Q,{ids:C.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,o,a=C.findIndex((function(e){return e.original.id===t})),i=C[a];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,o="g-0 ",n&&(o+=n.row),o),style:d}),L(i))},onSortEnd:e.onSortingRowsEnd},I()):I()))}function S(e){var t=e.enableSlider,n=e.scrollIncrement,a=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),o=(e=r.useState(y(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||v(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.")}()),a=o[0],l=o[1],c=i.q.throttle((function(){l(y(n))}),200),u=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(y(n)),e.addEventListener("scroll",c)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&l(y(n))}),[n]),{ref:u,scrollState:a,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),u=c.ref,s=c.scrollState,d=c.scroll;if(a)return r.createElement(o.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:g.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(O,Object.assign({},l)));if(!t)return r.createElement(O,Object.assign({},l));function m(e){d(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(f.W,{direction:f.f.Left,onClick:function(){return m("left")},hide:!s.canScrollLeft}),r.createElement("div",{className:"".concat(g.scrollContainer," ").concat(e.scrollContainerClassName),ref:u},r.createElement(O,Object.assign({},l))),r.createElement(f.W,{direction:f.f.Right,onClick:function(){return m("right")},hide:!s.canScrollRight}))))}S.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},17132:(e,t,n)=>{n.d(t,{w:()=>$e});var r=n(32735),o=n(6748),a=n(23481),i=n(38307),l=n(26136),c=n(97408),u=n(40782),s=n(64818);const f={heatMap:"rwDjh",avatarContainer:"kW4ZM"};function d(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var p=a.T.encloseNamespace("shared.engagementTable"),v={heatMap:[],engagementRate:0,viewCount:0};function h(e){var t;return r.createElement("div",{className:"".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function y(e){return r.createElement(h,{className:"d-inline-block ".concat(e.column.isSorted?"fw-bold":"")},p(e.phraseKey))}var g={table:"bg-white rounded px-0",header:"border-bottom",headerCell:"m-3",cell:"mx-3 my-2"};function b(e){var t,n,a,m=function(e){return r.useMemo((function(){var t,n,o=(t=e.engagement,n=0,t.forEach((function(e){var t=Math.max.apply(Math,d(e.heatMap));t>n&&(n=t)})),n);return[{Header:function(e){var t=e.column;return r.createElement(y,{column:t,phraseKey:"name"})},width:22,accessor:"user",sortType:function(t,n){return(0,l.B)(t.values.user,e.anonymiseUsers)>(0,l.B)(n.values.user,e.anonymiseUsers)?1:-1},Cell:function(t){var n,o,a,i,u=t.value,d=(o=u,a=e.anonymiseUsers,{name:(i=(0,l.B)(o,a).split(" ").filter((function(e){return!!e})))[0],surname:i.slice(1).join(" ")}),m=d.name,p=d.surname;return r.createElement(h,{className:"d-flex align-items-center h-100"},r.createElement("span",{className:f.avatarContainer},r.createElement(c.q,{imageCdnUrl:e.imageCdnUrl,initials:s.l.getInitials(m,p),imageUrl:!e.anonymiseUsers&&(null===(n=null==u?void 0:u.avatar)||void 0===n?void 0:n.url),showAnonymousUser:!(e.anonymiseUsers||u&&!u.sessionId)})),r.createElement("span",{className:"ms-2 clamp-1"},m," ",p))}},{Header:function(e){var t=e.column;return r.createElement(y,{column:t,phraseKey:"views"})},accessor:"viewCount",width:15,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(h,{className:"d-flex align-items-center h-100"},r.createElement("div",null,t))}},{Header:function(e){var t=e.column;return r.createElement(y,{column:t,phraseKey:"engagement"})},accessor:"engagementRate",width:20,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(h,{className:"w-33"},r.createElement(u.O,{percentage:t,layout:u.I.LabelBefore}))}},{Header:function(e){var t=e.column;return r.createElement(y,{column:t,phraseKey:"heatMap"})},accessor:"heatMap",width:48,disableSortBy:!0,Cell:function(e){var t=e.row.original;return r.createElement(h,{className:"d-flex align-items-center h-100"},r.createElement(i.c,{engagement:t,max:o,className:"".concat(f.heatMap," flex-grow-1")}))}}]}),[e.anonymiseUsers])}({engagement:e.engagement,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers}),p=(t=e.engagement,n=e.users,a=e.classroomStudents,r.useMemo((function(){if(!(null==t?void 0:t.length))return[];var e=[],r=new Set;if(t.forEach((function(t){var o=null==n?void 0:n.find((function(e){return e.id&&e.id===t.userId?(r.add(e.id),!0):!(!e.sessionId||e.sessionId!==t.sessionId)}));e.push(Object.assign(Object.assign({},t),{user:o}))})),null==a?void 0:a.length){var o=a.filter((function(e){return!r.has(e.id)})).map((function(e){return Object.assign(Object.assign({},v),{user:e})}));e.push.apply(e,d(o))}return e}),[null==n?void 0:n.length]));return p.length?r.createElement(o.i,{columns:m,data:p,theme:Object.assign(Object.assign({},g),{table:e.border?"".concat(g.table," border"):g.table}),enableSort:e.enableSort}):r.createElement(r.Fragment,null)}var w=n(84621),E=n(8604);function O(e){return r.createElement(u.O,{layout:e.layout,className:e.className,percentage:0,customLabel:"--%"})}var S=n(83345),j=n(35223),C="shared.insightAmountWatched",x=a.T.encloseNamespace(C);function k(e){var t=(0,E.Q)(e.engagement),n=Math.round(100*t);return r.createElement(w.L,{title:x("title"),svgName:j.vn.Timer,svgClassName:"bg-light-green text-green"},r.createElement("div",{className:"d-flex flex-column align-items-center my-auto gap-2"},!!e.engagement&&r.createElement(r.Fragment,null,r.createElement(u.O,{percentage:t,layout:u.I.LabelInside}),r.createElement("p",{className:"text-center"},"number"==typeof t?r.createElement(S.x,{namespace:C,phrase:"everyoneWatched",options:{percentage:n}}):r.createElement(S.x,{namespace:C,phrase:"notWatched"}))),!e.engagement&&r.createElement(r.Fragment,null,r.createElement(O,{layout:u.I.LabelInside}))))}var N=n(72306),P=n.n(N),T=n(70312),I=n.n(T),L=n(70072),A=n(75896),M=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var _=n(97958),B="shared.insightTotalViews",U=a.T.encloseNamespace(B),D={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:"transparent",spacing:[0,0,0,0]},legend:{itemStyle:L.d,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0,borderWidth:0,size:"80%"}}};function F(e){var t,n,o,a,i,l,c,u=function(e){var t,n,r=e.findIndex((function(e){return"Staff"===e.name}));if(r>-1){var o=(t=e.splice(r,1),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?R(e,t):void 0}}(t,n)||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];e.push(o)}return e.sort((function(e,t){var n,r;return parseInt(null===(n=e.name.match(/\d+/))||void 0===n?void 0:n[0])-parseInt(null===(r=t.name.match(/\d+/))||void 0===r?void 0:r[0])}))}((o=e.events,a=[],l={},null==(c=o["yearGroupCount"])||c.forEach((function(e){var t,n=e.name||"Unknown";n&&!(null==a?void 0:a.includes(n.toLowerCase()))&&(l[n]=null!==(t=l[n])&&void 0!==t?t:0,l[n]+=e.count)})),A.m.sortBy(Object.keys(l).map((function(e){return{name:i?i(e):e,y:l[e],type:"pie"}})),"name").map((function(e,t){return Object.assign(Object.assign({},e),{color:M[t%M.length]})})))),s=null!==(n=null==(t=u)?void 0:t.reduce((function(e,t){return e+t.y}),0))&&void 0!==n?n:null;return r.createElement(w.L,{title:U("title"),svgClassName:"bg-light-blue text-blue",svgName:j.vn.VisibleOn},(null==u?void 0:u.length)?r.createElement(r.Fragment,null,r.createElement("p",{className:"mb-0"},r.createElement(S.x,{namespace:B,phrase:"totalViews",options:{totalViews:s}})),r.createElement("div",{className:"d-flex justify-content-center h-75"},r.createElement(I(),{highcharts:P(),options:function(e){return Object.assign(Object.assign({},D),{series:[{type:"pie",name:U("title"),data:e}]})}(u),containerProps:{className:"w-100"}}))):r.createElement(_.u,{className:"pt-0 my-auto"},r.createElement(_.u.Image,{src:e.emptyStateImage,className:"w-75 h-auto"}),r.createElement(_.u.Heading,{className:"h4"},r.createElement(S.x,{namespace:B,phrase:"noViews"})),r.createElement(_.u.Info,{className:"w-100"},r.createElement(S.x,{namespace:B,phrase:"notWatched"}))))}var H=n(99742);const V={partialInsights:"nKLWa",videoContainer:"WF2iA"};function W(){return r.createElement("div",null,r.createElement("div",{className:"row g-3 mb-3"},r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:V.videoContainer},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))))}var z=n(87252),G=n(41386),Z=n(76032);function K(e){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},K(e)}function $(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,q(r.key),r)}}function q(e){var t=function(e){if("object"!=K(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=K(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==K(t)?t:t+""}function Q(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Q=function(){return!!e})()}function Y(){return Y="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=X(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},Y.apply(null,arguments)}function X(e){return X=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},X(e)}function J(e,t){return J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},J(e,t)}var ee=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=X(t),function(e,t){if(t&&("object"==K(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Q()?Reflect.construct(t,n||[],X(e).constructor):t.apply(e,n))}(this,t,[e,n])).overlayVisible=n.overlayVisible,r.toggle(r.overlayVisible),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&J(e,t)}(t,e),n=t,r=[{key:"handleToggle",value:function(){this.toggle(!this.overlayVisible)}},{key:"toggle",value:function(e){e?this.toggleOn():this.toggleOff()}},{key:"toggleOn",value:function(){Z.Z.dom.addClass(this.toggleEl,"on"),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass("cv-reports-player-overlay-visible")}},{key:"toggleOff",value:function(){Z.Z.dom.removeClass(this.toggleEl,"on"),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass("cv-reports-player-overlay-visible")}},{key:"handleClick",value:function(e){e.stopImmediatePropagation()}},{key:"createEl",value:function(e,n,r){this.handlerBound||(this.handleToggle=this.handleToggle.bind(this),this.handlerBound=!0),this.toggleEl&&this.toggleEl.removeEventListener("click",this.handleToggle),this.toggleEl=Z.Z.dom.createEl("div",{className:"custom-toggle custom-toggle-info toggle-option float-end",innerHTML:'<span class="handle"></span></div>'}),this.toggleEl.addEventListener("click",this.handleToggle);var o,a,i,l=(o=t,a=this,"function"==typeof(i=Y(X(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,{className:"vjs-menu-item cv-cog-menu-item",innerHTML:'\n <span class="vjs-menu-item-text">Heat Map</span>\n <span class="cv-toggle-container"></span>'},r]);return l.children[1].appendChild(this.toggleEl),l}}],r&&$(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getComponent("MenuItem"));Z.Z.registerComponent("EngagementOverlayMenuItem",ee);var te=n(74161),ne=n(86572);function re(e){var t,n=e.interactive.timepoints.find((function(t){var n=t.visibleAt/1e3;return Math.floor(e.time)===Math.floor(n)||Math.ceil(e.time)===Math.ceil(n)}));if(!(null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length))return r.createElement(r.Fragment,null);var o=n.interactions.length>3?n.interactions.slice(0,2):n.interactions,a=n.interactions.length-o.length;return r.createElement("div",{className:"d-flex justify-content-end ms-2"},o.map((function(e,t){return r.createElement(ne.y,{key:t,interaction:e,showQuestion:!1,iconClassName:"ms-1"})})),!!a&&r.createElement("div",{className:"interaction-type-icon d-flex justify-content-center align-items-center border border-dark text-body ms-1"},"+".concat(a)))}var oe=n(42503);function ae(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ie(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ie(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var le={title:{text:null},xAxis:{visible:!1,minPadding:0,maxPadding:0},legend:{enabled:!1},credits:{enabled:!1},defs:{gradient:{tagName:"linearGradient",id:"area-gradient",x1:0,y1:1,x2:0,y2:0,children:[{tagName:"stop",offset:0},{tagName:"stop",offset:1}]}}};function ce(e,t){return{styledMode:!0,spacing:[15,0,0,0],width:e,height:t}}function ue(e){return ue="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},ue(e)}function se(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,fe(r.key),r)}}function fe(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ue(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}function de(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(de=function(){return!!e})()}function me(){return me="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=pe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},me.apply(null,arguments)}function pe(e){return pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},pe(e)}function ve(e,t){return ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ve(e,t)}var he=Z.Z.getComponent("Component");P().AST.allowedTags.push("g"),P().AST.allowedAttributes.push("viewBox","transform");var ye=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=pe(t),function(e,t){if(t&&("object"==ue(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,de()?Reflect.construct(t,n||[],pe(e).constructor):t.apply(e,n))}(this,t,[e,n])).initialize(),r.bindListeners(),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ve(e,t)}(t,e),n=t,o=[{key:"initialize",value:function(){var e=this;this.player().ready((function(){return e.buildChart()}))}},{key:"buildCSSClass",value:function(){return"cv-engagement-overlay"}},{key:"createEl",value:function(e,n,r){var o,a,i;return(o=t,a=this,"function"==typeof(i=me(pe(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<div class="cv-engagement-chart"></div><div class="cv-engagement-timepoint-indicator"></div>'}),r])}},{key:"toggleChart",value:function(e){e?this.buildChart():this.destroyChart()}},{key:"bindListeners",value:function(){var e=this;this.handleClick=this.handleClick.bind(this),this.resizeChart=this.resizeChart.bind(this),this.player().on("playerresize",this.resizeChart),this.on(this.el(),"mouseup",this.handleClick),this.player().on("dispose",(function(){e.player().off("playerresize",e.resizeChart),e.off(e.el(),"mouseup",e.handleClick)}))}},{key:"handleClick",value:function(e){Z.Z.dom.isSingleLeftClick(e)&&(this.player().paused()?this.player().play():this.player().pause())}},{key:"buildChart",value:function(){var e=this;if(!this.chart){var t=this.getChartDimensions();if(t){var n=this.el().querySelector(".cv-engagement-chart");this.chart=P().chart(n,this.getHighchartOptions(t))}else this.player().one("play",(function(){return e.buildChart()}))}}},{key:"resizeChart",value:function(){var e=this.getChartDimensions();this.chart&&e&&this.chart.setSize(e.width,e.height)}},{key:"destroyChart",value:function(){var e;null===(e=this.chart)||void 0===e||e.destroy(),this.chart=null}},{key:"getChartDimensions",value:function(){var e=this.player().getChild("collapserator"),t=null==e?void 0:e.currentHeight(),n=this.el().clientWidth;return t&&n?{width:n,height:this.player().currentDimensions().height-t}:null}},{key:"getHighchartOptions",value:function(e){var t,n,o,a=e.width,i=e.height;return Object.assign(Object.assign({},le),{chart:ce(a,i),yAxis:(n=this.options_.heatMap,{max:1.05*Math.max.apply(Math,ae(n)),min:0,minPadding:0,maxPadding:0,allowDecimals:!0,startOnTick:!1,endOnTick:!1,visible:!1}),tooltip:(o=this.options_.interactive,{formatter:function(){var e=o?function(e,t){return(0,te.renderToStaticMarkup)(r.createElement(re,{time:t,interactive:e}))}(o,this.x):"";return'<div class="cv-engagement-tooltip bg-white rounded"><div class="d-flex justify-content-between">'+"<strong>".concat((0,oe.m)(this.x),"</strong>")+"".concat(e)+'</div><div class="d-flex justify-content-between rounded bg-light cv-view-count-container">'+'<strong>Views</strong> <span class="cv-view-count">'.concat(this.y,"</span>")+"</div></div>"},positioner:function(e,t,n){var r=this.chart.plotWidth-e,o=n.plotX-e/2;return{x:Math.min(Math.max(o,0),r),y:this.chart.plotTop}},useHTML:!0,padding:0}),plotOptions:(t=this.moveTimepointIndicator.bind(this),{area:{point:{events:{mouseOver:function(){t(this.x)},mouseOut:function(){t(null)}}}},series:{marker:{enabled:!1}}}),series:[{type:"area",data:this.options_.heatMap}]})}},{key:"moveTimepointIndicator",value:function(e){this.options_.onTimepointHover&&this.options_.onTimepointHover(e);var t=this.el().querySelector(".cv-engagement-timepoint-indicator");null!==e?(Z.Z.dom.addClass(t,"cv-engagement-timepoint-indicator-visible"),t.style.left="".concat(e/this.options_.heatMap.length*100,"%")):Z.Z.dom.removeClass(t,"cv-engagement-timepoint-indicator-visible")}}],o&&se(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(he);function ge(e){return ge="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},ge(e)}function be(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,we(r.key),r)}}function we(e){var t=function(e){if("object"!=ge(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ge(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ge(t)?t:t+""}function Ee(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Ee=function(){return!!e})()}function Oe(e){return Oe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Oe(e)}function Se(e,t){return Se=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Se(e,t)}Z.Z.registerComponent("EngagementOverlay",ye);var je=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Oe(t),function(e,t){if(t&&("object"==ge(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ee()?Reflect.construct(t,n||[],Oe(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,e.ready((function(){r.initialize()})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Se(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){var e;this.hasHeatMapData()&&(this.player.addChild("engagementOverlay",{heatMap:this.options.heatMap,interactive:this.options.interactive,onTimepointHover:this.options.onTimepointHover}),(null===(e=this.player.getChild("collapserator"))||void 0===e?void 0:e.getChild("cogButton")).addItem({index:0,ctor:ee,name:"EngagementOverlayMenuItem",options:{overlayVisible:!0}}))}},{key:"toggleOverlay",value:function(e){var t=this.player.getChild("engagementOverlay");null==t||t.toggleChart(e)}},{key:"hasHeatMapData",value:function(){var e;return(null===(e=this.options.heatMap)||void 0===e?void 0:e.reduce((function(e,t){return e+t}),0))>0}}])&&be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));Z.Z.registerPlugin("engagementOverlayPlugin",je),n(16852);var Ce=n(4271),xe=n(10463);function ke(e){return ke="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},ke(e)}function Ne(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Pe(r.key),r)}}function Pe(e){var t=function(e){if("object"!=ke(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ke(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ke(t)?t:t+""}function Te(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Te=function(){return!!e})()}function Ie(e){return Ie=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ie(e)}function Le(e,t){return Le=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Le(e,t)}n(6994);var Ae=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Ie(t),function(e,t){if(t&&("object"==ke(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Te()?Reflect.construct(t,n||[],Ie(e).constructor):t.apply(e,n))}(this,t,[e])).options=n,r.player.one("loadedmetadata",(function(){return r.player.ready(r.initialize.bind(r))})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Le(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){xe.O.useMetadataTrack(this.player,"interactive",this.onTrackLoaded.bind(this)),this.player.addClass("cv-interactive-plugin")}},{key:"onTrackLoaded",value:function(e){this.addChildren(e)}},{key:"addChildren",value:function(e){this.player.controlBar.getChild("progressControl").getChild("SeekBar").addChild(new Ce.N(this.player,{interactive:this.options.interactive,track:e}))}}])&&Ne(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));function Me(e){return Me="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},Me(e)}function Re(){Re=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",l=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof y?t:y,i=Object.create(a.prototype),l=new T(r||[]);return o(i,"_invoke",{value:x(e,n,l)}),i}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=s;var d="suspendedStart",m="suspendedYield",p="executing",v="completed",h={};function y(){}function g(){}function b(){}var w={};u(w,i,(function(){return this}));var E=Object.getPrototypeOf,O=E&&E(E(I([])));O&&O!==n&&r.call(O,i)&&(w=O);var S=b.prototype=y.prototype=Object.create(w);function j(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(o,a,i,l){var c=f(e[o],e,a);if("throw"!==c.type){var u=c.arg,s=u.value;return s&&"object"==Me(s)&&r.call(s,"__await")?t.resolve(s.__await).then((function(e){n("next",e,i,l)}),(function(e){n("throw",e,i,l)})):t.resolve(s).then((function(e){u.value=e,i(u)}),(function(e){return n("throw",e,i,l)}))}l(c.arg)}var a;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return a=a?a.then(o,o):o()}})}function x(t,n,r){var o=d;return function(a,i){if(o===p)throw Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:e,done:!0}}for(r.method=a,r.arg=i;;){var l=r.delegate;if(l){var c=k(l,r);if(c){if(c===h)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===d)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=p;var u=f(t,n,r);if("normal"===u.type){if(o=r.done?v:m,u.arg===h)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=v,r.method="throw",r.arg=u.arg)}}}function k(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var a=f(o,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,h;var i=a.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function I(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function n(){for(;++o<t.length;)if(r.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}throw new TypeError(Me(t)+" is not iterable")}return g.prototype=b,o(S,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=u(b,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,u(e,c,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},j(C.prototype),u(C.prototype,l,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new C(s(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},j(S),u(S,c,"Generator"),u(S,i,(function(){return this})),u(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=I,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(r,o){return l.type="throw",l.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],l=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,h):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;P(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}function _e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Be(r.key),r)}}function Be(e){var t=function(e){if("object"!=Me(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Me(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Me(t)?t:t+""}function Ue(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Ue=function(){return!!e})()}function De(){return De="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Fe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},De.apply(null,arguments)}function Fe(e){return Fe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Fe(e)}function He(e,t){return He=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},He(e,t)}Z.Z.registerPlugin("interactiveSeekBarPlugin",Ae);var Ve=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Fe(t),function(e,t){if(t&&("object"==Me(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ue()?Reflect.construct(t,n||[],Fe(e).constructor):t.apply(e,n))}(this,t,[e,n])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&He(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-reports-player"}},{key:"getAnalyticsPlayerType",value:function(){return"reports-player"}},{key:"additionalSetup",value:function(e){var n,r,o,a,i=this,l=Object.create(null,{additionalSetup:{get:function(){return e=t,n=i,De(Fe(1&1?e.prototype:e),"additionalSetup",n);var e,n}}});return n=this,r=void 0,o=void 0,a=Re().mark((function t(){return Re().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:l.additionalSetup.call(this,e),this.setupEngagementOverlayPlugin(e),this.setupUpClipPlugin(e),this.setupInteractiveSeekBarPlugin(e);case 4:case"end":return t.stop()}}),t,this)})),new(o||(o=Promise))((function(e,t){function i(e){try{c(a.next(e))}catch(e){t(e)}}function l(e){try{c(a.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof o?n:new o((function(e){e(n)}))).then(i,l)}c((a=a.apply(n,r||[])).next())}))}},{key:"setupEngagementOverlayPlugin",value:function(e){var t;this.player.engagementOverlayPlugin({heatMap:this.options.heatMap,interactive:null===(t=e.additionalData)||void 0===t?void 0:t.interactive,onTimepointHover:this.options.onTimepointHover})}},{key:"setupUpClipPlugin",value:function(e){var t,n,r="MasterClip"===e.mediaType,o="MasterInteractive"===e.mediaType;if((r||o)&&(r&&(n=e.additionalData),!o||(n=null===(t=e.additionalData)||void 0===t?void 0:t.clipData))){if(!n)throw Error("Invalid clip data");this.player.clipPlugin({startTime:n.startTime,endTime:n.endTime})}}},{key:"setupInteractiveSeekBarPlugin",value:function(e){var t,n,r=null===(t=e.additionalData)||void 0===t?void 0:t.interactive;(null===(n=e.additionalData)||void 0===n?void 0:n.interactive)&&(this.track=G.h.getInteractiveTrack(this.player,e),this.player.interactiveSeekBarPlugin({interactive:r}))}},{key:"getSeekBarOptions",value:function(){return{ignoreChapters:!0}}}],r&&_e(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(z.r);function We(e){var t=r.useRef(null),n=r.useRef(null);return r.useEffect((function(){n.current=new Ve(t.current,e)}),[]),r.createElement("div",{ref:t})}const ze={playerContainer:"fGWsk",playerPlaceholder:"v1MjE",heatMap:"lp1Yn",heatMapTimepointIndicator:"yOOK6",heatMapTimepointIndicatorVisible:"rTXmB",partialLoadingContainer:"gW1HU"};var Ge=a.T.encloseNamespace("shared.videoEngagementOverlay");function Ze(e){var t=r.useRef(null),n=(0,E.O)(e.engagement);return r.createElement("div",{className:"bg-white border rounded overflow-hidden h-100"},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:ze.playerPlaceholder}),r.createElement("div",{className:ze.playerContainer},r.createElement(We,{viewKey:e.viewKey,playerApi:new URL(e.playerApiUrl),hotkeyElQuerySelector:"body",heatMap:n,onTimepointHover:function(e){var r=t.current;r&&(null!==e?(r.classList.add(ze.heatMapTimepointIndicatorVisible),r.style.left="".concat(e/n.length*100,"%")):r.classList.remove(ze.heatMapTimepointIndicatorVisible))},aspectRatio:"16:9"}))),r.createElement("div",{className:"p-3"},r.createElement("div",{className:"position-relative"},r.createElement(i.c,{engagement:e.engagement,className:ze.heatMap}),r.createElement("div",{ref:t,className:ze.heatMapTimepointIndicator})),r.createElement("div",{className:"d-flex justify-content-between mt-2"},r.createElement("strong",null,Ge("heatmap")),r.createElement("div",{className:"w-33"},r.createElement(i.l,null)))))}const Ke={videoContainer:"cpl68"};function $e(e){var t;return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(W,null),r.createElement("div",{className:"row g-3 mb-3"},e.hasDataLoaded&&r.createElement(r.Fragment,null,r.createElement("div",{className:"col"},r.createElement(F,{events:{yearGroupCount:e.yearGroups},emptyStateImage:H.W.EmptyStates.MY_VIDEOS})),r.createElement("div",{className:"col"},r.createElement(k,{engagement:e.individualEngagement})),r.createElement("div",{className:Ke.videoContainer},r.createElement(Ze,{engagement:e.aggregateEngagement,viewKey:e.viewKey.viewKey,playerApiUrl:e.config.playerApiUrl,imageCdnUrl:e.config.imageCdnUrl}))),e.tableDataLoaded&&r.createElement("div",{className:"col-12"},r.createElement(b,{engagement:e.individualEngagement,users:e.users,imageCdnUrl:null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,classroomStudents:e.classroomStudents,border:!0,enableSort:!0}))))}}}]);
|
|
3
|
-
//# sourceMappingURL=5241-163f5ac64c-lite.chunk.js.map
|