@clickview/lite 0.82.2 → 0.83.0-rc.0
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/languages/en.json +1 -1
- package/dist/scripts/1074-fdce06d863-lite.chunk.js +2 -0
- package/dist/scripts/1074-fdce06d863-lite.chunk.js.map +1 -0
- package/dist/scripts/{1199-da55d69853-lite.chunk.js → 1199-01cc084886-lite.chunk.js} +1 -1
- package/dist/scripts/{1199-da55d69853-lite.chunk.js.map → 1199-01cc084886-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2664-87c8cbfa7f-lite.chunk.js → 2664-907153c03b-lite.chunk.js} +2 -2
- package/dist/scripts/2664-907153c03b-lite.chunk.js.map +1 -0
- package/dist/scripts/2970-024b1dd55d-lite.chunk.js +2 -0
- package/dist/scripts/2970-024b1dd55d-lite.chunk.js.map +1 -0
- package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js → 3392-f7f8cb65e5-lite.chunk.js} +3 -3
- package/dist/scripts/3392-f7f8cb65e5-lite.chunk.js.map +1 -0
- package/dist/scripts/3840-59e5e53cda-lite.chunk.js +2 -0
- package/dist/scripts/3840-59e5e53cda-lite.chunk.js.map +1 -0
- package/dist/scripts/{4177-285ddf9ae3-lite.chunk.js → 4177-2d876c7b14-lite.chunk.js} +2 -2
- package/dist/scripts/4177-2d876c7b14-lite.chunk.js.map +1 -0
- package/dist/scripts/{1336-1826f6e582-lite.chunk.js → 4208-0706461da6-lite.chunk.js} +2 -2
- package/dist/scripts/4208-0706461da6-lite.chunk.js.map +1 -0
- package/dist/scripts/{4578-7578bcf17a-lite.chunk.js → 4578-27028d26eb-lite.chunk.js} +2 -2
- package/dist/scripts/4578-27028d26eb-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-8f5266e4c2-lite.chunk.js +2 -0
- package/dist/scripts/4598-8f5266e4c2-lite.chunk.js.map +1 -0
- package/dist/scripts/{4621-1f79d94416-lite.chunk.js → 4621-7fb0a05bcb-lite.chunk.js} +2 -2
- package/dist/scripts/4621-7fb0a05bcb-lite.chunk.js.map +1 -0
- package/dist/scripts/4806-a6f31d703c-lite.chunk.js +2 -0
- package/dist/scripts/4806-a6f31d703c-lite.chunk.js.map +1 -0
- package/dist/scripts/{4948-de1c75e7fb-lite.chunk.js → 4948-ba684e5f4f-lite.chunk.js} +1 -1
- package/dist/scripts/{4948-de1c75e7fb-lite.chunk.js.map → 4948-ba684e5f4f-lite.chunk.js.map} +1 -1
- package/dist/scripts/4985-7e02d5df40-lite.chunk.js +2 -0
- package/dist/scripts/4985-7e02d5df40-lite.chunk.js.map +1 -0
- package/dist/scripts/{5554-17bb3b86fc-lite.chunk.js → 5554-f1f3baf822-lite.chunk.js} +2 -2
- package/dist/scripts/5554-f1f3baf822-lite.chunk.js.map +1 -0
- package/dist/scripts/5712-7cee70c6b4-lite.chunk.js +2 -0
- package/dist/scripts/5712-7cee70c6b4-lite.chunk.js.map +1 -0
- package/dist/scripts/6550-d99e0ed75d-lite.chunk.js +2 -0
- package/dist/scripts/6550-d99e0ed75d-lite.chunk.js.map +1 -0
- package/dist/scripts/{6909-a9b8930e37-lite.chunk.js → 6909-ba75701156-lite.chunk.js} +2 -2
- package/dist/scripts/6909-ba75701156-lite.chunk.js.map +1 -0
- package/dist/scripts/7148-1ced1b5dce-lite.chunk.js +2 -0
- package/dist/scripts/7148-1ced1b5dce-lite.chunk.js.map +1 -0
- package/dist/scripts/7568-55e9b01367-lite.chunk.js +3 -0
- package/dist/scripts/7568-55e9b01367-lite.chunk.js.map +1 -0
- package/dist/scripts/{7617-9d34c841e6-lite.chunk.js → 7617-211f084b70-lite.chunk.js} +2 -2
- package/dist/scripts/7617-211f084b70-lite.chunk.js.map +1 -0
- package/dist/scripts/7742-514844bd1a-lite.chunk.js +2 -0
- package/dist/scripts/7742-514844bd1a-lite.chunk.js.map +1 -0
- package/dist/scripts/7843-cbebf1a786-lite.chunk.js +2 -0
- package/dist/scripts/7843-cbebf1a786-lite.chunk.js.map +1 -0
- package/dist/scripts/8077-870bd8e245-lite.chunk.js +3 -0
- package/dist/scripts/8077-870bd8e245-lite.chunk.js.map +1 -0
- package/dist/scripts/843-4dbc5df109-lite.chunk.js +3 -0
- package/dist/scripts/843-4dbc5df109-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/843-4dbc5df109-lite.chunk.js.map +1 -0
- package/dist/scripts/8735-e74a148502-lite.chunk.js +2 -0
- package/dist/scripts/8735-e74a148502-lite.chunk.js.map +1 -0
- package/dist/scripts/8856-2d332952ae-lite.chunk.js +2 -0
- package/dist/scripts/8856-2d332952ae-lite.chunk.js.map +1 -0
- package/dist/scripts/904-2784e45cfc-lite.chunk.js +2 -0
- package/dist/scripts/904-2784e45cfc-lite.chunk.js.map +1 -0
- package/dist/scripts/{9042-fdc5ecb459-lite.chunk.js → 9042-fd7e79b891-lite.chunk.js} +1 -1
- package/dist/scripts/{9042-fdc5ecb459-lite.chunk.js.map → 9042-fd7e79b891-lite.chunk.js.map} +1 -1
- package/dist/scripts/9295-eb130a0b17-lite.chunk.js +2 -0
- package/dist/scripts/9295-eb130a0b17-lite.chunk.js.map +1 -0
- package/dist/scripts/9528-4e954d9dff-lite.chunk.js +2 -0
- package/dist/scripts/9528-4e954d9dff-lite.chunk.js.map +1 -0
- package/dist/scripts/{9742-5f99d74bb0-lite.chunk.js → 9742-3f6b75484a-lite.chunk.js} +2 -2
- package/dist/scripts/9742-3f6b75484a-lite.chunk.js.map +1 -0
- package/dist/scripts/979-6a70a0e616-lite.chunk.js +2 -0
- package/dist/scripts/979-6a70a0e616-lite.chunk.js.map +1 -0
- package/dist/scripts/{3612-8c6423bd51-lite.chunk.js → 9911-8892b6dbfe-lite.chunk.js} +2 -2
- package/dist/scripts/{3612-8c6423bd51-lite.chunk.js.map → 9911-8892b6dbfe-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-f926852f33.min.js +3 -0
- package/dist/scripts/{bundle-9a3e49399a.min.js.map → bundle-f926852f33.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/css/2074-lite-ac8da6c78b.chunk.css +0 -4
- package/dist/scripts/1202-d96ad80884-lite.chunk.js +0 -2
- package/dist/scripts/1202-d96ad80884-lite.chunk.js.map +0 -1
- package/dist/scripts/1336-1826f6e582-lite.chunk.js.map +0 -1
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js +0 -2
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js.map +0 -1
- package/dist/scripts/2664-87c8cbfa7f-lite.chunk.js.map +0 -1
- package/dist/scripts/2888-2596e106a5-lite.chunk.js +0 -2
- package/dist/scripts/2888-2596e106a5-lite.chunk.js.map +0 -1
- package/dist/scripts/289-669c0c8222-lite.chunk.js +0 -2
- package/dist/scripts/289-669c0c8222-lite.chunk.js.map +0 -1
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js +0 -2
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js.map +0 -1
- package/dist/scripts/3893-2856933742-lite.chunk.js +0 -2
- package/dist/scripts/3893-2856933742-lite.chunk.js.map +0 -1
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js +0 -3
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js.map +0 -1
- package/dist/scripts/4177-285ddf9ae3-lite.chunk.js.map +0 -1
- package/dist/scripts/4578-7578bcf17a-lite.chunk.js.map +0 -1
- package/dist/scripts/4621-1f79d94416-lite.chunk.js.map +0 -1
- package/dist/scripts/4806-f36469abb7-lite.chunk.js +0 -2
- package/dist/scripts/4806-f36469abb7-lite.chunk.js.map +0 -1
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js +0 -2
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js.map +0 -1
- package/dist/scripts/5554-17bb3b86fc-lite.chunk.js.map +0 -1
- package/dist/scripts/5579-a9c152057f-lite.chunk.js +0 -2
- package/dist/scripts/5579-a9c152057f-lite.chunk.js.map +0 -1
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js +0 -2
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js.map +0 -1
- package/dist/scripts/6070-a390fdce21-lite.chunk.js +0 -2
- package/dist/scripts/6070-a390fdce21-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-a9b8930e37-lite.chunk.js.map +0 -1
- package/dist/scripts/7401-98135f09e8-lite.chunk.js +0 -2
- package/dist/scripts/7401-98135f09e8-lite.chunk.js.map +0 -1
- package/dist/scripts/7617-9d34c841e6-lite.chunk.js.map +0 -1
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js +0 -2
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js.map +0 -1
- package/dist/scripts/7843-f6033528ce-lite.chunk.js +0 -2
- package/dist/scripts/7843-f6033528ce-lite.chunk.js.map +0 -1
- package/dist/scripts/787-dcb3a0a26c-lite.chunk.js +0 -2
- package/dist/scripts/787-dcb3a0a26c-lite.chunk.js.map +0 -1
- package/dist/scripts/8077-9fdb522d7e-lite.chunk.js +0 -2
- package/dist/scripts/8077-9fdb522d7e-lite.chunk.js.map +0 -1
- package/dist/scripts/8133-ffcff3b7fc-lite.chunk.js.map +0 -1
- package/dist/scripts/8364-ff63447d36-lite.chunk.js +0 -3
- package/dist/scripts/8364-ff63447d36-lite.chunk.js.map +0 -1
- package/dist/scripts/8672-6967ce8a23-lite.chunk.js +0 -2
- package/dist/scripts/8672-6967ce8a23-lite.chunk.js.map +0 -1
- package/dist/scripts/9295-4242401e60-lite.chunk.js +0 -2
- package/dist/scripts/9295-4242401e60-lite.chunk.js.map +0 -1
- package/dist/scripts/9742-5f99d74bb0-lite.chunk.js.map +0 -1
- package/dist/scripts/979-4b893e5603-lite.chunk.js +0 -2
- package/dist/scripts/979-4b893e5603-lite.chunk.js.map +0 -1
- package/dist/scripts/9911-9272b96e46-lite.chunk.js +0 -2
- package/dist/scripts/9911-9272b96e46-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-9a3e49399a.min.js +0 -3
- /package/dist/css/{787-lite-5a317efacd.chunk.css → 2970-lite-5a317efacd.chunk.css} +0 -0
- /package/dist/css/{6070-lite-45dc286aab.chunk.css → 6550-lite-45dc286aab.chunk.css} +0 -0
- /package/dist/css/{2888-lite-856c02f000.chunk.css → 7148-lite-856c02f000.chunk.css} +0 -0
- /package/dist/css/{8364-lite-db31e36b79.chunk.css → 843-lite-db31e36b79.chunk.css} +0 -0
- /package/dist/css/{9911-lite-856c02f000.chunk.css → 8735-lite-856c02f000.chunk.css} +0 -0
- /package/dist/css/{5579-lite-f8e496136d.chunk.css → 8856-lite-f8e496136d.chunk.css} +0 -0
- /package/dist/css/{289-lite-2435a34b13.chunk.css → 904-lite-2435a34b13.chunk.css} +0 -0
- /package/dist/css/{1202-lite-4a892bdbf2.chunk.css → 9528-lite-4a892bdbf2.chunk.css} +0 -0
- /package/dist/css/{3612-lite-2b4142796a.chunk.css → 9911-lite-2b4142796a.chunk.css} +0 -0
- /package/dist/scripts/{4006-9dfe9cec1b-lite.chunk.js.LICENSE.txt → 3392-f7f8cb65e5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js.LICENSE.txt → 7568-55e9b01367-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8364-ff63447d36-lite.chunk.js.LICENSE.txt → 8077-870bd8e245-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-9a3e49399a.min.js.LICENSE.txt → bundle-f926852f33.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4806-f36469abb7-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/interactions-bar/InteractionsBar.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/interactions-bar/interactions-bar.scss","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/interaction-results-summary/InteractionResultsSummary.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/interaction-results-summary/interaction-results-summary.scss","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/InteractionHeaderCell.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultCell.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTableUtils.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/StudentTableUtils.ts","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicator.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicatorUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/student-results-table.scss","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss","file:///app/packages/libs/shared/src/components/percentage-indicator/percentage-indicator.scss"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n showIndicator?: boolean;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const { title, showLabel, tooltipClassName, showIndicator = true } = props;\n\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n {!!showIndicator &&\n <PercentageIndicator />\n }\n </div>\n );\n\n if (!title)\n return <Indicator />;\n\n return (\n <Tooltip title={title} spanHack spanHackClassName={tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { Interaction, Interactive, Timepoint } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { InteractionTypeHelper } from 'libs/shared/utils/interaction-type-helper/InteractionTypeHelper';\n\nimport styles from './interactions-bar.scss';\n\nfunction getInteraction(timepoint: Timepoint, selectedInteraction: Interaction): Interaction {\n return timepoint.interactions.find(i => i.id === selectedInteraction.id) || timepoint.interactions[0];\n}\n\ninterface InteractionBarProps {\n interactive: Interactive;\n duration: number;\n selectedInteraction: Interaction;\n}\n\nexport function InteractionsBar(props: InteractionBarProps): React.ReactElement {\n if (!props.duration)\n return <></>;\n\n return (\n <>\n {props.interactive.timepoints.map((t, i) => {\n if (!t.interactions.length)\n return <></>;\n\n const interaction = getInteraction(t, props.selectedInteraction);\n const isSelected = interaction.id === props.selectedInteraction.id;\n\n const bgClassName = isSelected ? (InteractionTypeHelper.getTypeInfo(interaction.typeId)).bgClassName : 'bg-gray-500';\n\n const left = ((t.visibleAt / 1000) / props.duration) * 100;\n\n return (\n <div\n key={i}\n className={`${styles.container} text-center`}\n style={{ left: `${left}%` }}\n >\n <div className={`${styles.interaction} ${bgClassName}`} />\n {!!isSelected &&\n <div>\n {DurationHelper.ToDisplayDuration(t.visibleAt)}\n </div>\n }\n </div>\n );\n })}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Wf1bl\",\"interaction\":\"Fpm49\"};","import React from 'react';\nimport { Popover } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionsBar } from 'libs/shared/apps/analytics/components/student-results/interactions-bar/InteractionsBar';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interaction, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport styles from './interaction-results-summary.scss';\n\nconst namespace = 'shared.interactionResultsSummary';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDuration(interactiveMetadata: InteractiveMetadata): number {\n if (interactiveMetadata._parentClip)\n return interactiveMetadata._parentClip.endTime - interactiveMetadata._parentClip.startTime;\n\n if (!interactiveMetadata._parentVideo.duration)\n return 0;\n\n return interactiveMetadata._parentVideo.duration / 1000;\n}\n\ninterface InteractionResultsSummaryProps {\n interaction: Interaction;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n}\n\nfunction InteractionResultsSummary(props: InteractionResultsSummaryProps): JSX.Element {\n const summary = React.useMemo(\n () => getInteractionResultsSummary(props.interaction, props.results),\n [ props.interaction, props.results ]\n );\n\n return (\n <div className='px-1 pt-1'>\n <div className='d-flex'>\n <InteractionLabel\n interaction={props.interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n <div className={`my-4 ${styles.bar}`}>\n <InteractionsBar\n interactive={props.interactive}\n duration={getDuration(props.interactiveMetadata)}\n selectedInteraction={props.interaction}\n />\n </div>\n <div className='row pt-1 pb-2'>\n <div className='col-6 pe-1'>\n <div className='bg-light rounded p-2 h-100'>\n {!summary.awaitingMarking &&\n <div className='d-flex align-items-center justify-content-between'>\n <strong>{getPhrase('correctlyAnswered')}</strong>\n <PercentageIndicator\n percentage={summary.percentCorrect}\n layout={PercentageIndicatorLayout.LabelOnly}\n />\n </div>\n }\n {!!summary.awaitingMarking &&\n <div className='d-flex align-items-center justify-content-center'>\n <strong>\n <em>{getPhrase('pending')}</em>\n </strong>\n </div>\n }\n </div>\n </div>\n <div className='col-6 ps-1'>\n <div className='bg-light rounded h-100 p-2 d-flex align-items-center justify-content-between'>\n <strong>{getPhrase('unanswered')}</strong>\n <span>{summary.unanswered}</span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nconst InteractionResultsSummaryPopover = React.forwardRef((\n { interaction, interactive, interactiveMetadata, results, ...popoverProps }: InteractionResultsSummaryProps,\n ref: React.MutableRefObject<HTMLElement>\n) => {\n return (\n <div className='popover-lg'>\n <Popover\n id={`interaction-results-summary-${interaction.id}`}\n ref={ref as any}\n {...popoverProps}\n >\n <Popover.Body>\n <InteractionResultsSummary\n interaction={interaction}\n interactive={interactive}\n interactiveMetadata={interactiveMetadata}\n results={results}\n />\n </Popover.Body>\n </Popover>\n </div>\n );\n});\n\nexport { InteractionResultsSummaryPopover as InteractionResultsSummary };","// extracted by mini-css-extract-plugin\nexport default {\"bar\":\"FCXQd\"};","import React from 'react';\nimport { OverlayTrigger } from 'react-bootstrap';\n\nimport { InteractionResultsSummary } from 'libs/shared/apps/analytics/components/student-results/interaction-results-summary/InteractionResultsSummary';\nimport { Interaction, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport styles from './student-results-table.scss';\n\ninterface InteractionHeaderCellProps {\n interaction: Interaction;\n results: InteractiveResultSet;\n interactionNumber: number;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport function InteractionHeaderCell(props: InteractionHeaderCellProps): JSX.Element {\n return (\n <OverlayTrigger\n trigger={props.results.students?.length ? 'click' : null}\n placement='bottom'\n overlay={\n <InteractionResultsSummary\n interaction={props.interaction}\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n />\n }\n rootClose\n >\n <div\n className={\n `text-center h-100\n d-flex align-items-center justify-content-center\n ${styles.interactionHeaderCellInner}`\n }\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div className='p-1 position-relative'>\n {props.interactionNumber}\n </div>\n </div>\n </OverlayTrigger>\n );\n}","import React from 'react';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { Interaction, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './student-results-table.scss';\n\nfunction getSvgName(correctness: InteractionCorrectness): string {\n if (correctness === InteractionCorrectness.Correct)\n return cvSvgLibrary.Check;\n\n if (correctness === InteractionCorrectness.Incorrect)\n return cvSvgLibrary.Close;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n return cvSvgLibrary.Minus;\n\n return;\n}\n\nfunction getClassName(correctness: InteractionCorrectness): string {\n let className = `${styles.resultsCellInner} h-100 position-relative`;\n\n if (correctness === InteractionCorrectness.Correct)\n className += ` ${styles.correct}`;\n\n if (correctness === InteractionCorrectness.Incorrect)\n className += ` ${styles.incorrect} text-danger`;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n className += ` ${styles.awaitingMarking}`;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n className += ` ${styles.unanswered} text-warning`;\n\n return className;\n}\n\ninterface StudentResultCellProps {\n interaction: Interaction;\n studentResults: StudentResults;\n}\n\nexport function StudentResultCell(props: StudentResultCellProps): JSX.Element {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(\n props.interaction,\n getStudentResult(props.studentResults)\n );\n\n const svgName = getSvgName(correctness);\n\n return (\n <div className={getClassName(correctness)}>\n {!!svgName && <SvgContainer svgName={svgName} />}\n {correctness === InteractionCorrectness.AwaitingMarking &&\n <PendingIndicator />\n }\n </div>\n );\n}","import React from 'react';\nimport { CellProps, Column, ColumnInstance, SortingRule } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { FilterStudentsBy, shouldFilterStudent } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { UserRecipientItemMetadata } from 'libs/shared/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InteractionHeaderCell } from './InteractionHeaderCell';\nimport { StudentResultCell } from './StudentResultCell';\n\nimport styles from './student-results-table.scss';\n\nconst namespace = 'shared.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const RESULTS_COL_WIDTH = 60;\n\nfunction getUserProps(user: AnonUser, anonymiseUsers: boolean) {\n if (user.sessionId || user.deleted || anonymiseUsers) {\n const anonName = anonymiseUserName(user, anonymiseUsers);\n const nameParts = anonName.split(' ').filter(n => !!n);\n\n return {\n name: nameParts[0],\n surname: nameParts.slice(1).join(' ') || '',\n avatarUrl: null\n };\n }\n\n return {\n name: user.displayName || user.name,\n surname: user.surname || '',\n avatarUrl: user.avatar?.url\n };\n}\n\ninterface CellWrapperProps {\n className?: string;\n}\n\nfunction CellWrapper(props: React.PropsWithChildren<CellWrapperProps>): JSX.Element {\n return (\n <div className={`d-flex align-items-center p-2 h-100 ${props.className ?? ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderCellProps {\n column: ColumnInstance<StudentResultsWithSummary>;\n phraseKey: string;\n}\n\nfunction HeaderCell(props: HeaderCellProps): JSX.Element {\n return (\n <CellWrapper className={props.column.isSorted && 'fw-bold'}>\n {getPhrase(props.phraseKey)}\n </CellWrapper>\n );\n}\n\nexport function useGetFixedColumns(\n results: InteractiveResultSet,\n anonymiseUsers: boolean,\n imageCdnUrl?: string,\n showSeparateNameColumns?: boolean\n): Column<StudentResultsWithSummary>[] {\n const hasResults = !!results.students?.length;\n\n return React.useMemo(() => {\n const cols: Column<StudentResultsWithSummary>[] = [];\n\n if (showSeparateNameColumns) {\n // Add separate name and surname columns\n cols.push(\n {\n id: 'firstName',\n Header: ({ column }) => <HeaderCell column={column} phraseKey='firstName' />,\n accessor: (u: StudentResultsWithSummary) => u,\n width: 130,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, StudentResultsWithSummary>) => {\n const { name, surname, avatarUrl } = getUserProps(value.user, anonymiseUsers);\n return (\n <CellWrapper>\n <div className={`d-inline-block flex-shrink-0 p-1 ${styles.avatar}`}>\n <Avatar\n imageUrl={avatarUrl}\n imageCdnUrl={imageCdnUrl}\n initials={UserHelper.getInitials(name, surname)}\n showAnonymousUser={!anonymiseUsers && (!!value.user.sessionId || !!value.user.deleted)}\n anonymiseUsers={anonymiseUsers}\n anonymousSvgSize={SvgContainerSize.Small}\n />\n </div>\n <div className='ms-2 overflow-hidden'>\n <h4 className='font-size-normal fw-normal m-0 text-truncate'>\n {name}\n </h4>\n </div>\n </CellWrapper>\n );\n },\n disableSortBy: !hasResults\n },\n {\n id: 'surname',\n Header: ({ column }) => <HeaderCell column={column} phraseKey='surname' />,\n accessor: (u: StudentResultsWithSummary) => u,\n width: 130,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, StudentResultsWithSummary>) => {\n const { surname } = getUserProps(value.user, anonymiseUsers);\n return (\n <CellWrapper>\n <div className='overflow-hidden'>\n <h5 className='font-size-normal fw-normal m-0 text-truncate'>\n {surname || ''}\n </h5>\n </div>\n </CellWrapper>\n );\n },\n disableSortBy: !hasResults\n }\n );\n } else {\n // Add single name column (existing behavior)\n cols.push({\n id: 'name',\n Header: ({ column }) => <HeaderCell column={column} phraseKey='name' />,\n accessor: (u: StudentResultsWithSummary) => u,\n width: imageCdnUrl ? 175 : undefined,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, StudentResultsWithSummary>) => {\n if (!imageCdnUrl) {\n return (\n <CellWrapper>\n <span className='text-truncate'>{anonymiseUserName(value.user, anonymiseUsers)}</span>\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n <UserRecipientItemMetadata\n user={value.user}\n imageCdnUrl={imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n detailsClassName='ms-2 overflow-hidden'\n nameClassName='text-truncate'\n showDisplayName\n avatarClassName='p-1'\n showSubText={false}\n />\n </CellWrapper>\n );\n },\n disableSortBy: !hasResults\n });\n }\n\n cols.push(\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='unanswered' />,\n accessor: 'summary.unanswered' as keyof StudentResultsWithSummary,\n sortType: 'basic', // Default is 'alphanumeric' which would treat the numbers as strings\n sortDescFirst: true,\n disableSortBy: !hasResults,\n width: showSeparateNameColumns ? 120 : 130,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, any>) => <CellWrapper>{value}</CellWrapper>\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='score' />,\n accessor: 'summary',\n id: 'score',\n Cell: ({ value }) => {\n if (value.awaitingMarking) {\n return (\n <CellWrapper>\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n showLabel\n showIndicator={!showSeparateNameColumns}\n />\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n {`${value.correct}/${value.answered + value.unanswered}`}\n </CellWrapper>\n );\n },\n width: showSeparateNameColumns ? 80 : 125,\n sortDescFirst: true,\n disableSortBy: !hasResults\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='percentage' />,\n accessor: 'summary',\n id: 'percentage',\n Cell: ({ value }) => {\n if (value.awaitingMarking) {\n return (\n <CellWrapper>\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n showLabel\n />\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n <PercentageIndicator\n percentage={value.percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n className='flex-grow-1'\n />\n </CellWrapper>\n );\n },\n width: 125,\n sortDescFirst: true,\n disableSortBy: !hasResults\n }\n );\n\n return cols;\n }, [ anonymiseUsers, hasResults ]);\n}\n\n/**\n * Returns memoized table columns. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetResultColumns(\n interactive: Interactive,\n interactiveMetadata: InteractiveMetadata,\n results: InteractiveResultSet,\n onColumnHover: (index?: number) => void,\n refreshData: boolean\n): Column<StudentResultsWithSummary>[] {\n return React.useMemo(() => {\n const interactions = getInteractions(interactive);\n\n return interactions.map((interaction, index) => {\n const col: Column<StudentResultsWithSummary> = {\n Header: () => {\n return (\n <InteractionHeaderCell\n interaction={interaction}\n results={results}\n interactive={interactive}\n interactiveMetadata={interactiveMetadata}\n interactionNumber={index + 1}\n onMouseEnter={() => onColumnHover(index)}\n onMouseLeave={() => onColumnHover(null)}\n />\n );\n },\n accessor: 'results',\n /**\n * `onSelectStudentResponse` in `StudentResultsTable` expects the column id to the interaction id\n */\n id: interaction.id,\n disableSortBy: true,\n width: RESULTS_COL_WIDTH,\n Cell: ({ row: { original: studentResults } }) => (\n <StudentResultCell interaction={interaction} studentResults={studentResults} />\n )\n };\n return col;\n });\n }, [refreshData]);\n}\n\n/**\n * Returns memoized table data. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetResultsTableData(\n interactive: Interactive,\n results: InteractiveResultSet,\n refreshData: boolean,\n anonymiseUsers: boolean,\n sortBy?: SortingRule<StudentResultsWithSummary>,\n filterBy?: FilterStudentsBy,\n showSeparateNameColumns?: boolean\n): StudentResultsWithSummary[] {\n return React.useMemo(() => {\n const students: StudentResultsWithSummary[] = [];\n\n results?.students.forEach(s => {\n const summary = getStudentResultsSummary(interactive, s);\n\n if (filterBy && shouldFilterStudent(filterBy, summary)) return;\n\n students.push({ ...s, summary });\n });\n\n if (sortBy?.id === 'name') {\n const sorted = ArrayHelper.sortBy(students, student => anonymiseUserName(student.user, anonymiseUsers));\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'firstName') {\n const sorted = ArrayHelper.sortBy(students, student => {\n const { name } = getUserProps(student.user, anonymiseUsers);\n return name || '\\uffff'; // Use high Unicode character to sort empty strings last\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'surname') {\n const sorted = ArrayHelper.sortBy(students, student => {\n const { surname } = getUserProps(student.user, anonymiseUsers);\n return surname || '\\uffff'; // Use high Unicode character to sort empty strings last\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'summary.unanswered') {\n const sorted = ArrayHelper.sortBy(students, student => student.summary.unanswered);\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'score' || sortBy?.id === 'percentage') {\n const sorted = ArrayHelper.sortBy(students, student => {\n if (student.summary.awaitingMarking)\n return -1;\n\n return student.summary.percentCorrect;\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n return students;\n }, [ refreshData, sortBy, anonymiseUsers, filterBy, showSeparateNameColumns ]);\n}\n\nexport function highlightColumns(tableEl: HTMLElement, highlightIndex?: number): void {\n if (!tableEl)\n return;\n\n const rows = tableEl.querySelectorAll(`.${styles.resultsRow}`);\n\n rows?.forEach(row => {\n row.childNodes.forEach((col: HTMLElement, colIdx: number) => {\n col.classList.remove(styles.highlightColumn);\n\n if (colIdx === highlightIndex)\n col.classList.add(styles.highlightColumn);\n });\n });\n}\n\nexport function highlightRows(tableEl: HTMLElement, highlightIndex?: number): void {\n if (!tableEl)\n return;\n\n const rows = tableEl.querySelectorAll(`.${styles.resultsRow}`);\n\n rows?.forEach((row, rowIdx) => {\n row.classList.remove(styles.highlightResultsRow);\n\n if (rowIdx === highlightIndex)\n row.classList.add(styles.highlightResultsRow);\n });\n}","import { SortingRule } from 'react-table';\n\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\n\nexport type SortStudentsBy = 'score_desc' | 'score_asc';\n\nexport function getSortStudents(sortBy: SortStudentsBy, id: string): SortingRule<any>[] {\n switch (sortBy) {\n case 'score_desc': return [{ id, desc: true }];\n case 'score_asc': return [{ id, desc: false }];\n default: return [];\n }\n}\n\nexport type FilterStudentsBy = 'not_completed' | 'marking_required' | 'helping_hand';\n\nexport function shouldFilterStudent(filter: FilterStudentsBy, summary: ResultsSummary): boolean {\n if (filter === 'marking_required' && !summary.awaitingMarking)\n return true;\n\n if (filter === 'helping_hand' && summary.percentCorrect >= ScoreThresholdInsights.HIGH)\n return true;\n\n if (filter === 'not_completed' && !summary.unanswered)\n return true;\n \n return false;\n}\n\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n \n /**\n * Tertiary puts all students into a single group called 'Learners'.\n * When a student is in the 'Learners' group, we don't want to display the group name,\n * but instead we want to just show \"Student\". - Sha\n */\n if (yearGroup?.name && yearGroup.name !== 'Learners')\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\nfunction getUserProps({\n user, anonymiseUsers, showDisplayName\n}: {\n user: AnonUser,\n showDisplayName: boolean;\n anonymiseUsers?: boolean;\n}) {\n if (user.sessionId || user.deleted) {\n const anonName = anonymiseUserName(user, anonymiseUsers);\n const nameParts = anonName.split(' ').filter(n => !!n);\n\n return {\n name: anonName,\n surname: nameParts.slice(1).join(' '),\n avatarUrl: null\n };\n }\n\n return {\n name: anonymiseUsers\n ? anonymiseUserName(user, true)\n : showDisplayName\n ? UserHelper.getDisplayName(user)\n : UserHelper.getFullName(user),\n surname: user.surname,\n avatarUrl: user.avatar?.url\n };\n}\n\nUserRecipientItemMetadata.defaults = {\n showSubText: true\n};\n\ninterface UserRecipientItemMetadataProps {\n user: AnonUser;\n imageCdnUrl: string;\n detailsClassName?: string;\n avatarClassName?: string;\n showDisplayName: boolean;\n nameClassName?: string;\n showSubText?: boolean;\n anonymiseUsers?: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n const { name, surname, avatarUrl } = getUserProps(props);\n\n return (\n <>\n <div className={`${styles.avatarContainer} ${props.avatarClassName} d-inline-block flex-shrink-0`}>\n <Avatar\n imageUrl={avatarUrl}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(name, surname)}\n showAnonymousUser={!props.anonymiseUsers && (!!props.user.sessionId || !!props.user.deleted)}\n anonymiseUsers={props.anonymiseUsers}\n anonymousSvgSize={SvgContainerSize.Small}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className={classNames('font-size-normal fw-normal m-0', props.nameClassName)}>\n {name}\n </h4>\n {props.showSubText && `id` in props.user && <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>}\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport {\n getCircleClassName,\n getCircleContainerClassName,\n getCircleRadius,\n getColouredLabelClassName,\n getFormattedPercentage,\n getPercentageToFixed,\n isPending,\n ProgressCircleSize\n} from './PercentageIndicatorUtils';\n\nimport styles from './percentage-indicator.scss';\n\ninterface ProgressCircleProps {\n size: ProgressCircleSize;\n scoreThresholds?: ScoreThresholds;\n percentage?: number;\n}\n\nfunction ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const ref = React.useCallback((circle: SVGCircleElement) => {\n if (!circle)\n return;\n\n const radius = circle.r.baseVal.value;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - props.percentage * circumference;\n\n circle.style.strokeDasharray = `${circumference} ${circumference}`;\n circle.style.strokeDashoffset = offset.toString();\n }, [props.percentage]);\n\n return (\n <svg>\n <circle r={getCircleRadius(props.size)} className={styles.backgroundCircle} />\n {!isPending(props.percentage) &&\n <circle\n ref={ref}\n r={getCircleRadius(props.size)}\n className={getCircleClassName(props.percentage, props.scoreThresholds)}\n />\n }\n </svg>\n );\n}\n\nexport enum PercentageIndicatorLayout {\n CircleOnly = 'circle_only',\n LabelOnly = 'label_only',\n LabelBefore = 'label_before',\n LabelInside = 'label_inside'\n}\n\ninterface PercentageIndicatorProps {\n layout: PercentageIndicatorLayout;\n percentage?: number; // Between 0 and 1 or undefined for pending\n className?: string;\n customLabel?: string;\n scoreThresholds?: ScoreThresholds;\n size?: ProgressCircleSize;\n}\n\nPercentageIndicator.defaultProps = {\n layout: PercentageIndicatorLayout.CircleOnly\n};\n\nexport function PercentageIndicator(props: PercentageIndicatorProps): JSX.Element {\n const percentageToFixed = getPercentageToFixed(props.percentage);\n\n const size = props.size ||\n (props.layout === PercentageIndicatorLayout.LabelInside\n ? ProgressCircleSize.Large\n : ProgressCircleSize.Small\n );\n\n const label = props.customLabel || getFormattedPercentage(percentageToFixed);\n\n if (props.layout === PercentageIndicatorLayout.LabelOnly)\n return (\n <span className={getColouredLabelClassName(percentageToFixed)}>\n {label}\n </span>\n );\n\n return (\n <div className={`d-flex align-items-center justify-content-between ${props.className ?? ''}`}>\n {props.layout === PercentageIndicatorLayout.LabelBefore &&\n <span className='me-2'>\n {label}\n </span>\n }\n <div className={getCircleContainerClassName(size, percentageToFixed)}>\n <ProgressCircle percentage={percentageToFixed} size={size} scoreThresholds={props.scoreThresholds} />\n {props.layout === PercentageIndicatorLayout.LabelInside &&\n <span className={styles.centredPercentageText}>\n {label}\n </span>\n }\n </div>\n </div>\n );\n}","import { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport styles from './percentage-indicator.scss';\n\n/**\n * Values for width and strokeWidth are taken from progress-circle.scss.\n * If either are changed, they must be updated in both places.\n */\nconst CIRCLE_WIDTH = 2; // rem\nconst CIRCLE_WIDTH_LG = 5.8; // rem\nconst CIRCLE_STROKE_WIDTH = 0.2; // rem\nconst CIRCLE_STROKE_WIDTH_LG = 0.36; // rem\n \nexport enum ProgressCircleSize {\n Small = 'small',\n Large = 'large',\n ExtraSmall = 'extraSmall'\n}\n\nconst ProgressCircleSizeMap = {\n [ProgressCircleSize.ExtraSmall]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Small]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Large]: {\n size: CIRCLE_WIDTH_LG\n }\n};\n\n/**\n * radius = width / 2 - strokeWidth * 2\n */\nexport function getCircleRadius(size: ProgressCircleSize): string {\n const width = ProgressCircleSizeMap[size].size;\n const strokeWidth = size === ProgressCircleSize.Large ? CIRCLE_STROKE_WIDTH_LG : CIRCLE_STROKE_WIDTH;\n return `${width / 2 - strokeWidth * 2}rem`;\n}\n \nexport function getCircleClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return styles.circleSuccess;\n \n if (percentage >= scoreThresholds.MODERATE)\n return styles.circleWarning;\n \n return styles.circleDanger;\n}\n \nexport function getColouredLabelClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return 'text-success';\n \n if (percentage >= scoreThresholds.MODERATE)\n return 'text-warning';\n \n return 'text-danger';\n}\n \nexport function getCircleContainerClassName(size: ProgressCircleSize, percentage?: number): string {\n let className = `d-inline-block ${styles.circleContainer}`;\n \n if (size === ProgressCircleSize.Large)\n className += ` ${styles.lgCircleContainer}`;\n\n if (size === ProgressCircleSize.ExtraSmall)\n className += ` ${styles.xsCircleContainer}`;\n\n if (isPending(percentage))\n className += ` ${styles.pendingCircle}`;\n \n return className;\n}\n\nexport function getPercentageToFixed(percentage?: number): number | undefined {\n if (isPending(percentage))\n return;\n \n return +percentage.toFixed(2);\n}\n \nexport function getFormattedPercentage(percentage?: number): string {\n if (isPending(percentage))\n return `--%`;\n\n return `${Math.round(percentage * 100)}%`;\n}\n\nexport function isPending(percentage?: number): boolean {\n return typeof percentage !== 'number';\n}","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"hnMke\",\"avatar\":\"b7JCz\",\"row\":\"ILLa_\",\"fixedTable\":\"_fdpt\",\"interactionHeaderCellOuter\":\"kjXYB\",\"hasResults\":\"M4qgr\",\"interactionHeaderCellInner\":\"cnFvB\",\"resultsCellOuter\":\"bdzRb\",\"correct\":\"xANR6\",\"incorrect\":\"_44sb\",\"awaitingMarking\":\"eQ9sh\",\"unanswered\":\"xRUK8\",\"highlightColumn\":\"f9Zqr\",\"resultsCellInner\":\"LAFwi\",\"highlightResultsRow\":\"TwwLO\",\"resultsRow\":\"xZ5iP\"};","// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};","// extracted by mini-css-extract-plugin\nexport default {\"circleContainer\":\"p8Vgz\",\"backgroundCircle\":\"asGGE\",\"circleSuccess\":\"PXLNj\",\"circleWarning\":\"ZckRN\",\"circleDanger\":\"slBRg\",\"lgCircleContainer\":\"N8KCI\",\"xsCircleContainer\":\"RPqZ2\",\"pendingCircle\":\"DKrcq\",\"centredPercentageText\":\"tpmLR\"};"],"names":["getPhrase","getClassName","props","className","showLabel","PendingIndicator","title","tooltipClassName","showIndicator","Indicator","spanHack","spanHackClassName","InteractionsBar","duration","interactive","timepoints","map","t","i","interactions","length","timepoint","selectedInteraction","interaction","find","id","isSelected","bgClassName","InteractionTypeHelper","typeId","left","visibleAt","key","style","DurationHelper","LanguageService","InteractionResultsSummary","interactiveMetadata","summary","results","InteractionLabel","iconClassName","_parentClip","endTime","startTime","_parentVideo","awaitingMarking","PercentageIndicator","percentage","percentCorrect","layout","unanswered","InteractionResultsSummaryPopover","ref","popoverProps","Popover","InteractionHeaderCell","OverlayTrigger","trigger","students","placement","overlay","rootClose","onMouseEnter","onMouseLeave","interactionNumber","correctness","InteractionCorrectness","StudentResultCell","InteractiveCorrectnessHelper","studentResults","svgName","getSvgName","SvgContainer","RESULTS_COL_WIDTH","getUserProps","user","anonymiseUsers","sessionId","deleted","nameParts","split","filter","n","name","surname","slice","join","avatarUrl","displayName","avatar","url","CellWrapper","children","HeaderCell","column","isSorted","phraseKey","useGetFixedColumns","imageCdnUrl","showSeparateNameColumns","hasResults","cols","push","Header","accessor","u","width","Cell","value","Avatar","imageUrl","initials","UserHelper","showAnonymousUser","anonymousSvgSize","S","disableSortBy","undefined","UserRecipientItemMetadata","detailsClassName","nameClassName","showDisplayName","avatarClassName","showSubText","sortType","sortDescFirst","correct","answered","useGetResultColumns","onColumnHover","refreshData","index","row","original","useGetResultsTableData","sortBy","filterBy","forEach","s","sorted","ArrayHelper","student","desc","reverse","highlightColumns","tableEl","highlightIndex","rows","querySelectorAll","childNodes","col","colIdx","classList","remove","add","highlightRows","rowIdx","getSortStudents","shouldFilterStudent","anonName","getSubText","userType","role","yearGroup","defaults","PercentageIndicatorLayout","ProgressCircle","circle","radius","r","baseVal","circumference","Math","PI","offset","strokeDasharray","strokeDashoffset","toString","size","scoreThresholds","percentageToFixed","LabelInside","label","customLabel","LabelOnly","LabelBefore","defaultProps","CircleOnly","ProgressCircleSize","CIRCLE_STROKE_WIDTH","CIRCLE_STROKE_WIDTH_LG","ProgressCircleSizeMap","ExtraSmall","Small","Large","getCircleRadius","strokeWidth","getCircleClassName","HIGH","MODERATE","getColouredLabelClassName","getCircleContainerClassName","isPending","getPercentageToFixed","toFixed","getFormattedPercentage","round"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4985],{63719:(e,t,n)=>{n.d(t,{h:()=>l});var a=n(32735),i=n(77316);function r(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function l(e){var t,n,l=(t=a.useMemo(function(){return i.p.getBuilder()},[]),n=2,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 a,i,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=r.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,i=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw i}}return l}}(t,n)||r(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.")}()),c=l[0],s=(0,l[1])(c);return s&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||r(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.")}()}(s),[Object.assign(Object.assign({},e),{active:!0})]):s}},67088:(e,t,n)=>{n.r(t),n.d(t,{MyVideosFolderView:()=>z});var a=n(32735),i=n(23481),r=n(81886),o=n(20354),l=n(28400),c=n(65858),s=n(43500),d=n(83657),u=n(49935),m=n(73518),p=n(39958),v=n(1302),f=n(91693),y=n(37395),g=n(4201),h=n(83345),E=n(1860),b=n(30254),k=n(3534),V=n(51365),A=n(16714),O=n(183),F=n(98064),M=n(31949),S=n(63719),w=n(299),C=n(91286),D=n(22902),L=n(79612),I=n(37802),x=n(35223),_=n(58535),B=n(14070),N=n(97291),j=n(58321),P=n(44110),R=n(10741),Y=n(22490),T=n(98860),U=n(12617),H=n(45967),Q=n(65202),X=n(74796),Z=n(12909),$=n(18097),q=n(14305),G=n(72363);const W={uploadingList:"BrRqF"};var J="default.myVideosFolders",K=i.T.encloseNamespace(J);function z(e){var t,n,i,z,ee,te,ne,ae=o.a.useGetFetch(),ie=(0,j.U)({locationContext:c.LZ.VideoThumbnail}).commonVideoProps,re=(0,P.i)(),oe=(0,H.q)().handleDragEnd,le=(0,g.of)().focusSearchBar,ce=o.a.useBasicFetch(F.D.folder(e.id)),se=(0,T.P)(e.id),de=o.a.useBasicFetch(M.N.currentUser()),ue=o.a.useBasicFetch((null===(t=de.data)||void 0===t?void 0:t.isAuthenticated)&&M.N.workspace());(0,L.M)({title:ce.data?K("pageTitle",{folder:null===(n=ce.data)||void 0===n?void 0:n.name}):""}),(0,C.v)(ce);var me=(0,S.h)({name:null===(i=ce.data)||void 0===i?void 0:i.name}),pe=(0,X.f)(),ve=(0,I.r)(null),fe=ve.myVideosFolders,ye=ve.isLoadingSettings;a.useEffect(function(){ye||fe||r.Q.C$.trigger({application:N.O.MY_VIDEOS,action:B.e.MyVideos.MY_VIDEOS},{replace:!0})},[fe,ye]);var ge=(0,G.y)(),he=(0,G.W)(null===(z=ue.data)||void 0===z?void 0:z.id,e.id),Ee=(0,D.T)(),be=Ee.hasPermissions,ke=Ee.getGatedPermission,Ve=function(t,n){return U.E.videos(e.id,t,n)},Ae=o.a.useBasicFetch(Ve(e.cursor,e.typeFilter));(0,C.v)(Ae);var Oe=(0,Q.J)({onRemove:function(e,t){return ae(Ve(e,t))},categoryId:+e.id}),Fe=Oe.uploadingVideos,Me=Oe.onClickAlternate,Se=Oe.onClickDelete,we=Oe.processingIds,Ce=null===(te=null===(ee=Ae.data)||void 0===ee?void 0:ee.data)||void 0===te?void 0:te.filter(function(e){return!we[e.id]}),De=(0,w.X)(Ce);if(!ce.data)return a.createElement(a.Fragment,null);var Le=!!(null===(ne=null==se?void 0:se.items)||void 0===ne?void 0:ne.length);return a.createElement(V.M.Provider,{value:ge},a.createElement("div",{className:"px-3"},"soft-gate"===ke(A.C.UploadVideo)&&a.createElement(Z.H,null),a.createElement("div",{className:"d-flex justify-content-between align-items-start"},a.createElement("h1",{className:"h2 mb-0"},ce.data.name),a.createElement("div",{className:"d-sm-flex d-none ms-2"},a.createElement(f.h,{svgName:x.vn.Search,appLink:{application:N.O.SEARCH,action:B.e.Search.HOME,params:{source:s.fi.MyVideos}},className:"btn btn-outline-dark me-2",onClick:le,analyticsData:{},analyticsOptions:{entity:c.py.SearchResults,location:c.LZ.MyVideos,actionType:c.Vw.Click,descriptor:c.Bk.MyVideos}},a.createElement(h.x,{namespace:J,phrase:"searchMyVideos"})),a.createElement(d.e,{actions:pe("page",ce.data),actionsDropdownClassName:"btn btn-outline-dark"}))),a.createElement("div",{className:"mt-3"},a.createElement(u.Oo,{breadcrumbs:me})),a.createElement("hr",null),!(null==se?void 0:se.hasCompleted)&&a.createElement(v.i,null),a.createElement(m.p,{handleDragEnd:oe,dragOverlayComponent:_.U,source:ce.data},Le&&a.createElement("div",{className:"mx-n2"},a.createElement(p.$,{folders:se.items,getAppLink:function(e){return{application:N.O.MY_VIDEOS,action:B.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(e.name)]}},expandFolders:!1,getFolderActions:function(e){return pe("folder",e)},drag:!0,drop:!0})),a.createElement(b.X,{allowBulkAction:!0,allowFilter:!0,isVideosLoading:!Ae.data,checkboxHelper:De,getVideosBulkAction:he,locationContext:c.LZ.MyVideos,typeFilter:e.typeFilter,getAppLink:function(){var t;return{application:N.O.MY_VIDEOS,action:B.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(null===(t=ce.data)||void 0===t?void 0:t.name)]}}}),!!(null==Fe?void 0:Fe.length)&&a.createElement("div",{className:"position-relative ".concat(W.uploadingList)},Fe.map(function(t){return a.createElement($.X,{item:t,onClickAlternate:Me,onClickDelete:Se,key:t.id,allowBulkAction:!0,categoryId:e.id})})),function(){var t,n,i,r;return Ae.data?(null===(n=null===(t=Ae.data)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length)?a.createElement(a.Fragment,null,a.createElement(k.E4,{videos:Ce,getVideoAppLink:function(t,n){var a;return Y.W.getAppLink(t,Object.assign(Object.assign({},n),{context:O.Q.Folder,contextId:e.id,includeContext:null===(a=de.data)||void 0===a?void 0:a.isAuthenticated}))},presentationAudiences:re.data,canRemovePrivateVideos:!0,allowBulkAction:!0,hasPermissions:be,getVideosBulkAction:he,typeFilter:e.typeFilter,checkboxHelper:De,drag:Le,getPreviewQuestionsAppLink:function(e){return R.j.getPreviewQuestionsAppLink(e)},commonVideoProps:ie}),!!(null===(r=null===(i=Ae.data)||void 0===i?void 0:i.pagination)||void 0===r?void 0:r.cursors)&&a.createElement(y.t,{appLink:{action:B.e.MyVideos.MY_VIDEOS_FOLDER,application:N.O.MY_VIDEOS,args:[e.id,l.m.slugify(ce.data.name)],params:{cursor:e.cursor,previous:e.previous,type:e.typeFilter}},cursors:{next:Ae.data.pagination.cursors.next,previous:e.cursor},buttonVariant:"outline-dark",className:"py-2 float-end",prevHack:!0})):a.createElement(q.K,{canUpload:be(A.C.UploadVideo)}):a.createElement(E.S,{allowBulkActions:!0})}())))}}}]);
|
|
2
|
-
//# sourceMappingURL=4985-bdfa839f8f-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4985-bdfa839f8f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/my-videos-folders.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/MyVideosFolderView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"uploadingList\":\"BrRqF\"};","import React from 'react';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { EntityType, Folder, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { DragDropMoveContext } from 'libs/shared/components/drag-drop-move/DragDropMoveContext';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoListActions } from 'libs/shared/components/video-list/video-list-actions/VideoListActions';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { BulkCheckboxManager, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, CurrentUser, Library, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DragDropOverlay } from 'shared/components/drag-drop-overlay/DragDropOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useDragDropMove } from 'apps/my-videos/hooks/useDragDropMove';\nimport { useUploadItems } from 'apps/my-videos/hooks/useUploadItems';\nimport { useGetFolderActions } from 'apps/my-videos/utils/getFolderActions';\nimport { SoftGateBanner } from 'apps/sign-up/components/soft-gate-banner/SoftGateBanner';\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\n\nimport { MyVideosEmptyState } from '../my-videos/empty-state/MyVideosEmptyState';\nimport { useMyVideosViewActions, useMyVideosViewBulkActions } from '../my-videos/MyVideosViewUtils';\n\nimport styles from './my-videos-folders.scss';\n\nconst namespace = 'default.myVideosFolders';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MyVideosFolderViewProps {\n id: string;\n cursor?: string;\n previous?: string;\n typeFilter?: SearchIndices[];\n}\n\nexport function MyVideosFolderView(props: MyVideosFolderViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n \n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const audiences = usePresentationAudiences();\n const { handleDragEnd } = useDragDropMove();\n const { focusSearchBar } = useFocusSearchBar();\n\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.id));\n const subfolders = useFetchAllChildFolders(props.id);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const workspace = Flight.useBasicFetch<Library>(\n currentUser.data?.isAuthenticated && UserRequests.workspace()\n );\n\n useSetPageMetadata({\n title: folder.data ? getPhrase('pageTitle', { folder: folder.data?.name }) : ''\n });\n\n useHandleObjectError(folder);\n\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const getFolderActions = useGetFolderActions();\n\n // TODO: Remove this redirect when we release my videos with folders.\n const { myVideosFolders, isLoadingSettings } = useSettings(null);\n React.useEffect(() => {\n if (isLoadingSettings || myVideosFolders)\n return;\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n }, { replace: true });\n }, [ myVideosFolders, isLoadingSettings ]);\n\n const getVideoItemActions = useMyVideosViewActions();\n const getVideosBulkActions = useMyVideosViewBulkActions(workspace.data?.id, props.id);\n const { hasPermissions, getGatedPermission } = usePermissions();\n\n const getMyVideosRequest = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n // Delete the above when master supports the new assoc types.\n return MyVideosRequests.videos(props.id, cursor, typeFilter);\n };\n\n const fetchNext = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n return fetch(getMyVideosRequest(cursor, typeFilter));\n };\n\n const videos = Flight.useBasicFetch<BasePaginatedCollection<VideoTypes>>(\n getMyVideosRequest(props.cursor, props.typeFilter)\n );\n\n useHandleObjectError(videos);\n\n const {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n } = useUploadItems({ onRemove: fetchNext, categoryId: +props.id });\n\n const omittedVideos = videos.data?.data?.filter(v => !processingIds[v.id]);\n\n const CheckboxHelper: BulkCheckboxManager = useBulkCheckboxManager(omittedVideos);\n\n function getMyVideosAppLink(): Core.AppLink {\n return {\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n application: AppChannels.MY_VIDEOS,\n args: [ props.id, TextHelper.slugify(folder.data.name) ],\n params: { cursor: props.cursor, previous: props.previous, type: props.typeFilter }\n };\n }\n\n function getCursors(): Cursors {\n return { next: videos.data.pagination.cursors.next, previous: props.cursor };\n }\n\n if (!folder.data)\n return <></>;\n\n const hasFolders = !!subfolders?.items?.length;\n return (\n <VideoActionsContext.Provider value={getVideoItemActions}>\n <div className='px-3'>\n {getGatedPermission(PermissionName.UploadVideo) === 'soft-gate' && <SoftGateBanner />}\n <div className='d-flex justify-content-between align-items-start'>\n <h1 className='h2 mb-0'>{folder.data.name}</h1>\n <div className='d-sm-flex d-none ms-2'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.MyVideos\n }\n }}\n className='btn btn-outline-dark me-2'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.MyVideos,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.MyVideos\n }}\n >\n <Text namespace={namespace} phrase='searchMyVideos' />\n </IconButton>\n <ActionsComponent\n actions={getFolderActions('page', folder.data)}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n </div>\n <div className='mt-3'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </div>\n <hr />\n {!subfolders?.hasCompleted && <PartialFolderList />}\n <DragDropMoveContext\n handleDragEnd={handleDragEnd}\n dragOverlayComponent={DragDropOverlay}\n source={folder.data}\n >\n {hasFolders &&\n <div className='mx-n2'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ f.id, TextHelper.slugify(f.name) ]\n })}\n expandFolders={false}\n getFolderActions={f => getFolderActions('folder', f)}\n drag\n drop\n />\n </div>\n }\n <VideoListActions\n allowBulkAction\n allowFilter\n isVideosLoading={!videos.data}\n checkboxHelper={CheckboxHelper}\n getVideosBulkAction={getVideosBulkActions}\n locationContext={LocationContext.MyVideos}\n typeFilter={props.typeFilter}\n getAppLink={() => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ props.id, TextHelper.slugify(folder.data?.name) ]\n })}\n />\n {!!uploadingVideos?.length && (\n <div className={`position-relative ${styles.uploadingList}`}>\n {uploadingVideos.map(uploadingVideo => (\n <UploadingItem\n item={uploadingVideo}\n onClickAlternate={onClickAlternate}\n onClickDelete={onClickDelete}\n key={uploadingVideo.id}\n allowBulkAction\n categoryId={props.id}\n />\n ))}\n </div>\n )}\n {(() => {\n if (!videos.data)\n return <PartialVideoList allowBulkActions />;\n\n if (!videos.data?.data?.length)\n return <MyVideosEmptyState canUpload={hasPermissions(PermissionName.UploadVideo)} />;\n\n return (\n <>\n <VideoList\n videos={omittedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.Folder,\n contextId: props.id,\n includeContext: currentUser.data?.isAuthenticated\n })}\n presentationAudiences={audiences.data}\n canRemovePrivateVideos\n allowBulkAction\n hasPermissions={hasPermissions}\n getVideosBulkAction={getVideosBulkActions}\n typeFilter={props.typeFilter}\n checkboxHelper={CheckboxHelper}\n drag={hasFolders}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={commonVideoProps}\n />\n {!!videos.data?.pagination?.cursors && (\n <Pagination\n appLink={getMyVideosAppLink()}\n cursors={getCursors()}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n prevHack\n />\n )}\n </>\n );\n })()}\n </DragDropMoveContext>\n </div>\n </VideoActionsContext.Provider>\n );\n}"],"names":["useBreadcrumbs","current","match","breadcrumbs","useBuilder","active","namespace","getPhrase","LanguageService","MyVideosFolderView","props","fetch","commonVideoProps","useCommonVideoProps","locationContext","audiences","usePresentationAudiences","handleDragEnd","useDragDropMove","focusSearchBar","folder","LibraryRequests","id","subfolders","currentUser","UserRequests","workspace","data","isAuthenticated","useSetPageMetadata","title","name","useSettings","myVideosFolders","isLoadingSettings","application","action","replace","getVideoItemActions","getVideosBulkActions","usePermissions","hasPermissions","getGatedPermission","getMyVideosRequest","cursor","typeFilter","MyVideosRequests","videos","useUploadItems","onRemove","categoryId","uploadingVideos","onClickAlternate","onClickDelete","processingIds","omittedVideos","filter","v","CheckboxHelper","useBulkCheckboxManager","hasFolders","items","length","VideoActionsContext","value","className","PermissionName","SoftGateBanner","IconButton","svgName","appLink","params","source","onClick","analyticsData","analyticsOptions","entity","location","actionType","descriptor","Text","phrase","Actions","actions","actionsDropdownClassName","Breadcrumbs","hasCompleted","PartialFolderList","DragDropMoveContext","dragOverlayComponent","DragDropOverlay","FolderList","folders","getAppLink","f","args","TextHelper","expandFolders","getFolderActions","drag","drop","VideoListActions","allowBulkAction","allowFilter","isVideosLoading","checkboxHelper","getVideosBulkAction","map","uploadingVideo","UploadingItem","item","key","VideoList","getVideoAppLink","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","includeContext","presentationAudiences","canRemovePrivateVideos","getPreviewQuestionsAppLink","interactive","InteractiveHelper","pagination","cursors","Pagination","previous","type","next","buttonVariant","prevHack","MyVideosEmptyState","canUpload","PartialVideoList","allowBulkActions"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5554-17bb3b86fc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","file:///app/packages/libs/shared/src/apps/playlists/utils/PlaylistHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-status-indicator/share-status-indicator.scss","file:///app/packages/libs/shared/src/apps/share-v2/components/share-status-indicator/ShareStatusIndicator.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesViewUtils.ts","file:///app/packages/projects/lite/src/shared/hooks/useClassroomExperience.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, CurrentUser, Playlist } from 'libs/shared/interfaces';\n\nexport const PlaylistHelper = {\n isPlaylist(obj: BaseObject): obj is Playlist {\n return obj?.typeId === MasterType.Playlist;\n },\n\n isOwner(playlist: Playlist, currentUser: CurrentUser): boolean {\n if (!currentUser || !playlist || ObjectHelper.isEmpty(playlist._liteOwner))\n return false;\n\n return playlist._liteOwner.id.toString() === currentUser.id?.toString();\n },\n\n getVideoCount(playlist: Playlist): number {\n if (!playlist)\n return;\n\n let count = 0;\n\n if (playlist.videos?.count)\n count += playlist.videos.count;\n\n if (playlist.clips?.count)\n count += playlist.clips.count;\n\n if (playlist.interactives?.count)\n count += playlist.interactives.count;\n\n return count;\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"indicator\":\"sybF_\",\"pill\":\"CXqJF\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport styles from './share-status-indicator.scss';\n\nconst namespace = 'share-v2.shareStatusIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ShareIndicatorStatus {\n Active,\n Expired,\n MarkingRequired\n}\n\nconst statusIndicatorLabels = {\n [ShareIndicatorStatus.Active]: () => getPhrase('activeStatusLabel'),\n [ShareIndicatorStatus.Expired]: () => getPhrase('expiredStatusLabel'),\n [ShareIndicatorStatus.MarkingRequired]: () => getPhrase('markingRequiredStatusLabel')\n};\n\nconst statusIndicatorColors = {\n [ShareIndicatorStatus.Active]: 'bg-success',\n [ShareIndicatorStatus.Expired]: 'bg-danger',\n [ShareIndicatorStatus.MarkingRequired]: 'bg-blue'\n};\n\nconst statusIndicatorTooltips = {\n [ShareIndicatorStatus.Active]: () => getPhrase('activeStatusTooltip'),\n [ShareIndicatorStatus.Expired]: () => getPhrase('expiredStatusTooltip'),\n [ShareIndicatorStatus.MarkingRequired]: () => getPhrase('markingRequiredStatusTooltip')\n};\n\nfunction determineStatus(props: ShareStatusIndicatorProps): ShareIndicatorStatus {\n if (props.markingRequired)\n return ShareIndicatorStatus.MarkingRequired;\n\n if (ShareHelper.hasShareExpired(props.share))\n return ShareIndicatorStatus.Expired;\n\n return ShareIndicatorStatus.Active;\n}\n\nfunction getTooltip(status: ShareIndicatorStatus, expireDate: string, hasData: boolean): string {\n if (status !== ShareIndicatorStatus.Active)\n return statusIndicatorTooltips[status]();\n\n if (expireDate) {\n const localDate = DateHelper.convertUTCToLocal(expireDate);\n const formattedDate = DateHelper.format(localDate, 'MMMM Do');\n\n if (!hasData)\n return getPhrase('expiryNoDataTooltip', { date: formattedDate });\n\n return getPhrase('expiryTooltip', { date: formattedDate });\n }\n \n if (!hasData)\n return getPhrase('noDataTooltip');\n\n return statusIndicatorTooltips[ShareIndicatorStatus.Active]();\n}\n\ninterface ShareStatusIndicatorProps {\n share: Share;\n markingRequired: boolean;\n className?: string;\n hasData: boolean;\n}\n\nexport function ShareStatusIndicator(props: ShareStatusIndicatorProps) {\n const status = determineStatus(props);\n const tooltip = getTooltip(status, props.share.expireDate, props.hasData);\n const color = statusIndicatorColors[status];\n\n function renderDisplayText() {\n const label = statusIndicatorLabels[status]();\n const expireDate = props.share.expireDate;\n \n if (status === ShareIndicatorStatus.Active && expireDate && !props.markingRequired) {\n const remainingDays = ShareHelper.calculateDaysToExpiry(props.share);\n const hint = getPhrase('expiryHint', { smartCount: remainingDays });\n\n return (\n <p className='mb-0'>\n {label} {hint}\n </p>\n );\n }\n\n return (\n <p className='mb-0'>\n {label}\n </p>\n );\n }\n\n return (\n <Tooltip title={tooltip} spanHack>\n <div className={classNames('d-flex align-items-center border rounded-pill px-2', props.className, styles.pill)}>\n <div className={`${styles.indicator} ${color} me-2 flex-shrink-0`} />\n {renderDisplayText()}\n </div>\n </Tooltip>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { PlaylistHelper } from 'libs/shared/apps/playlists/utils/PlaylistHelper';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\nimport { getDeleteShareAppLink, getInsightsOverviewAppLink, getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { AssignAppLinkHelper } from 'apps/assign/utils/AssignAppLinkHelper';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function hasInsightsActions(sharedObject: BaseObject): boolean {\n return (\n MasterTypeHelper.isType(sharedObject, MasterType.Video) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Clip) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Interactive)\n );\n}\n\ninterface ShareObjectActionsOptions {\n share: Share;\n sharedObject: BaseObject;\n audienceParams?: AudienceQueryParams;\n hasInsights?: boolean;\n isPlugin?: boolean;\n breakpoints?: Breakpoints;\n hideShareOptionsActions?: boolean;\n}\n\nexport function getShareObjectActions(options: ShareObjectActionsOptions): ActionOptions[] {\n const { isPlugin, breakpoints } = options;\n const isMobile = breakpoints?.xs || breakpoints?.sm;\n const buttonProps = {\n button: !isMobile,\n className: 'btn btn-outline-dark'\n };\n\n const actionProviders = isPlugin ? [getActionsForPlugin] : [\n getMediaActions,\n hasInsightsActions(options.sharedObject) && getInsightsActions,\n !options.hideShareOptionsActions && getShareOptionsActions,\n getDeleteActions\n ];\n\n return actionProviders.reduce((actions, getActionFn) => {\n if (typeof getActionFn !== 'function')\n return actions;\n \n return [ ...actions, ...getActionFn({ ...options, buttonProps, isMobile }) ];\n }, [] as ActionOptions[]);\n}\n\nexport function getTypeIdParams(typeId: string | string[]): MasterType[] {\n if (!typeId) return [];\n\n if (typeof typeId === 'string')\n return [+typeId];\n\n return typeId.map(typeId => +typeId) || [];\n}\n\nexport function getSharesParams(typeId: string | string[]) {\n const typeIdAppLinkParams = getTypeIdParams(typeId);\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const currentAppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME,\n params: {\n ...audienceAppLinkParams,\n typeId: typeIdAppLinkParams\n }\n };\n const sentSharesParams = {\n recipientUserId: audienceAppLinkParams?.users,\n recipientGroupId: [ ...audienceAppLinkParams?.classroomGroups || [], ...audienceAppLinkParams?.classrooms || [] ],\n objectTypeId: typeIdAppLinkParams.length ? typeIdAppLinkParams : undefined\n };\n\n return {\n typeIdAppLinkParams,\n audienceAppLinkParams,\n currentAppLink,\n sentSharesParams\n };\n}\n\ninterface ShareActionHanderOptions extends ShareObjectActionsOptions {\n isMobile: boolean;\n buttonProps: {\n button: boolean;\n className: string;\n }\n}\n\nfunction getActionsForPlugin(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: getPhrase('embedVideo'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.PLUGIN_SHARE,\n args: [sharedObject.id],\n params: { entityType: sharedObject.type }\n },\n ...buttonProps,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V5\n }\n }];\n }\n\n return [];\n}\n\nfunction getMediaActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, breakpoints, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: !breakpoints?.md && getPhrase('viewVideo'),\n tooltip: breakpoints?.md && getPhrase('viewVideo'),\n svgName: cvSvgLibrary.Video,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (SeriesHelper.isSeries(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewSeries'),\n tooltip: breakpoints?.md && getPhrase('viewSeries'),\n svgName: cvSvgLibrary.Series,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (PlaylistHelper.isPlaylist(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewPlaylist'),\n tooltip: breakpoints?.md && getPhrase('viewPlaylist'),\n svgName: cvSvgLibrary.Playlist,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n return [];\n}\n\nfunction getInsightsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, sharedObject, audienceParams, hasInsights, breakpoints, buttonProps } = options;\n\n const actions: ActionOptions[] = [];\n\n if (share.type === ShareType.Classroom) {\n actions.push({\n svgName: cvSvgLibrary.Classrooms,\n label: getPhrase('viewOtherClassrooms'),\n appLink: AssignAppLinkHelper.showAssignments({ objectId: sharedObject.id, entityType: sharedObject.type }),\n group: 'main',\n ...buttonProps\n });\n }\n \n if (!hasInsights)\n return actions;\n\n return [{\n svgName: cvSvgLibrary.Analytics,\n label: !breakpoints?.md && getPhrase('viewInsights'),\n tooltip: breakpoints?.md && getPhrase('viewInsights'),\n appLink: getInsightsOverviewAppLink(share, audienceParams),\n group: 'main',\n ...buttonProps\n }, ...actions ];\n}\n\nfunction getShareOptionsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n\n if (ShareHelper.hasShareExpired(share))\n return [];\n\n if (share.type === ShareType.LegacyDirect)\n return [];\n\n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('shareLink'),\n tooltip: breakpoints?.md && getPhrase('shareLink'),\n svgName: cvSvgLibrary.Link,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n return [];\n}\n\nfunction getDeleteActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n \n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteShareLink'),\n tooltip: breakpoints?.md && getPhrase('deleteShareLink'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteAssignment'),\n tooltip: breakpoints?.md && getPhrase('deleteAssignment'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteOpenClassroom'),\n tooltip: breakpoints?.md && getPhrase('deleteOpenClassroom'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteLegacyShare'),\n tooltip: breakpoints?.md && getPhrase('deleteLegacyShare'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n return [];\n}","import { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\ntype ClassroomExperience = 'none' | 'minimal' | 'full';\n\nexport function useClassroomExperience() {\n const { hasShareFlowV2, hasClassrooms, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded, getGatedPermission } = usePermissions();\n\n function getExperience(): ClassroomExperience {\n if (!hasClassrooms)\n return 'none';\n\n if (getGatedPermission(PermissionName.ViewClassrooms) === 'soft-gate')\n return 'minimal';\n\n if (hasPermissions(PermissionName.ViewClassrooms))\n return 'full';\n \n if (hasShareFlowV2)\n return 'minimal';\n }\n\n return {\n experience: getExperience(),\n loading: isLoadingSettings || !isLoaded\n };\n}"],"names":["AnalyticsFilterHelper","getAudienceAppLinkParams","appLink","params","users","classrooms","classroomGroups","getParam","key","param","Array","isArray","audienceFilters","getDateRangeAppLinkParams","from","to","rangeName","dateRangeFilters","PlaylistHelper","isPlaylist","obj","typeId","isOwner","playlist","currentUser","_liteOwner","id","toString","getVideoCount","count","videos","clips","interactives","ShareIndicatorStatus","getPhrase","LanguageService","statusIndicatorLabels","Active","Expired","MarkingRequired","statusIndicatorColors","statusIndicatorTooltips","ShareStatusIndicator","props","status","markingRequired","ShareHelper","share","determineStatus","tooltip","expireDate","hasData","localDate","DateHelper","formattedDate","date","getTooltip","color","Tooltip","title","spanHack","className","label","remainingDays","hint","smartCount","renderDisplayText","getShareObjectActions","options","sharedObject","isPlugin","breakpoints","isMobile","xs","sm","buttonProps","button","getActionsForPlugin","getMediaActions","getInsightsActions","hideShareOptionsActions","getShareOptionsActions","getDeleteActions","reduce","actions","getActionFn","getSharesParams","typeIdAppLinkParams","map","getTypeIdParams","audienceAppLinkParams","currentAppLink","application","action","sentSharesParams","recipientUserId","recipientGroupId","objectTypeId","length","undefined","canConsume","args","entityType","type","analyticsOptions","actionType","descriptor","workflowPhase","eventVersion","md","svgName","group","audienceParams","hasInsights","push","objectId","useClassroomExperience","hasShareFlowV2","hasClassrooms","isLoadingSettings","hasPermissions","isLoaded","getGatedPermission","experience","loading"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5579],{41196:(e,t,a)=>{a.d(t,{W:()=>o});var r=a(20354),n=a(93479),i=a(20768),s=a(31949);function o(e,t,a){var o,l=r.a.useBasicFetch(s.N.currentUser()),c=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),u=r.a.useBasicFetch(!!(null===(o=c.data)||void 0===o?void 0:o.interactiveId)&&i.b.interactive(c.data.interactiveId)),d=!!l.data&&!!u.data;return r.a.useBasicFetch(d&&n.I.interactiveResultSet(c.data.interactiveId,c.data.id,l.data,t,a))}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var r=a(50242),n=a(81886),i=a(67058),s=a(14553),o=a(49267),l=a(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:o.a,privacy:s.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),t);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?a.badRequest||n.Q.Ry.throw(new s.badRequest):a.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):a.notFound||n.Q.Ry.throw(new s.notFound):a.internalServerError||n.Q.Ry.throw(new l._))}}},39902:(e,t,a)=>{a.d(t,{FN:()=>f,SW:()=>v,fh:()=>h});var r=a(32735),n=a(20354),i=a(75896);function s(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var d=function(e,t){var a={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(a[r[n]]=e[r[n]])}return a},m=50;function h(e,t){var a=i.m.chunk(e,m).map(function(e){return t(i.m.uniq(e))}),r=n.a.useBasicFetchAll(a),s=i.m.flatten(r.data),o=r.data.length?s.reduce(function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))},{}):null;return{itemsArr:s,items:o,isFetching:r.isFetching,hasCompleted:r.hasCompleted}}function f(e,t,a){var n=null!=a?a:function(e){return"object"===c(e)?e.id:e},i=v({getRequest:t,_getKey:a}),s=i.fetchItems,o=d(i,["fetchItems"]);return r.useEffect(function(){(null==e?void 0:e.length)&&s(e)},[null==e?void 0:e.map(n).join(",")]),o}function v(e){var t,a,l,d,h,f=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===c(e)?e.id:e},v=r.useRef(new Set),g=(d=r.useState([]),h=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(d,h)||o(d,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=g[0],y=g[1],b=n.a.useBasicFetchAll(p),I=i.m.flatten(b.data),S=b.data.length?I.reduce(function(e,t){return Object.assign(Object.assign({},e),u({},f(t),t))},{}):null;return{hasFirstRequestCompleted:!!(null===(l=null===(a=b.responses)||void 0===a?void 0:a[0])||void 0===l?void 0:l.hasCompleted),itemsArr:I,items:S,isFetching:b.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var a=[];t.forEach(function(e){var t=f(e);v.current.has(t)||(a.push(e),v.current.add(t))}),a.length&&y(function(t){return[].concat(s(t),s(i.m.chunk(a,m).map(e.getRequest)))})}}}}},91286:(e,t,a)=>{a.d(t,{v:()=>s});var r=a(32735),n=a(94644);function i(e){return e.map(function(e){return e.statusCode}).join(":")}function s(e,t,a){var s=Array.isArray(e)?e:[e];(0,r.useEffect)(function(){s.forEach(function(e){(0,n.r)(e.statusCode,t,a)})},[i(s),t,a])}},78057:(e,t,a)=>{a.d(t,{R:()=>C});var r=a(32735),n=a(75896),i=a(23481),s=a(97958),o=i.T.encloseNamespace("shared.studentResultsTable");function l(e){return"not_completed"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.notCompletedImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("notCompletedDescription"))):"marking_required"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("markingRequiredDescription"))):"helping_hand"===e.filter?r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.helpingHandImageUrl,size:"small"}),r.createElement(s.u.Info,null,o("helpingHandDescription"))):r.createElement(s.u,{className:"bg-white rounded-bottom py-5"},r.createElement(s.u.Image,{src:e.emptyStateImageUrl,size:"small"}),r.createElement(s.u.Heading,null,o("emptyStateHeading")),r.createElement(s.u.Info,null,o("emptyStateDescription")))}var c=a(83345),u="shared.studentResultsTable";function d(e){function t(t){var a=e.filter===t?null:t;e.setFilter(a)}function a(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 mb-0"},r.createElement(c.x,{namespace:u,phrase:"filters"})),r.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},r.createElement("button",{className:a("not_completed"),onClick:function(){return t("not_completed")}},r.createElement(c.x,{namespace:u,phrase:"notCompletedFilter"})),r.createElement("button",{className:a("marking_required"),onClick:function(){return t("marking_required")}},r.createElement(c.x,{namespace:u,phrase:"markingRequiredFilter"})),r.createElement("button",{className:a("helping_hand"),onClick:function(){return t("helping_hand")}},r.createElement(c.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=a(97364),h=a(6748),f=a(84806),v=a(19912);function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var y={table:"".concat(v.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(v.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:v.Z.row},b={header:"".concat(v.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(v.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(v.Z.row," ").concat(v.Z.resultsRow),cell:v.Z.resultsCellOuter};function I(e){var t,a=g(r.useState((0,m.P)(e.sortBy,"score")),2),i=a[0],s=a[1],o=g(r.useState(e.filterBy),2),c=o[0],u=o[1],p=r.useRef(null),I=(0,f.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl,e.showSeparateNameColumns),S=(0,f.lE)(e.interactive,e.interactiveMetadata,e.results,function(e){(0,f.bB)(p.current,e)},e.refreshTable),E=(0,f.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,n.m.first(i),c,e.showSeparateNameColumns);function w(e){(0,f.l8)(p.current,e)}return r.createElement("div",null,!!e.results.students.length&&r.createElement(d,{filter:c,setFilter:u}),!E.length&&r.createElement(l,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:c}),!!E.length&&r.createElement("div",{ref:p,className:"d-flex".concat(E.length&&S.length?" ".concat(v.Z.hasResults):"")},r.createElement(h.i,{columns:I,data:E,theme:S.length?y:Object.assign(Object.assign({},y),{table:"".concat(v.Z.fixedTable," bg-white rounded border")}),onSelectRow:function(t){var a=t.original;e.viewStudentResults(a.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return w(e.index)},onRowMouseLeave:function(){return w()},enableSort:!0,manualSort:!0,onSort:s,initialSortBy:i}),!!S.length&&r.createElement(h.i,{columns:S,data:E,theme:b,enableSlider:!0,scrollIncrement:8*f.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var S=a(99742);const E={partialInsights:"qSeTe"};function w(){return r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center mb-3"},r.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),r.createElement("div",{className:"row g-2 w-50"},r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),r.createElement("div",{className:"col-3"},r.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(E.partialInsights," rounded partial-loading-background")}))))}function C(e){return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(w,null),e.hasDataLoaded&&r.createElement(I,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching||e.hideStaffResults,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:S.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:S.W.Insights.JIGSAW,markingRequiredImageUrl:S.W.Insights.CLIPBOARD,helpingHandImageUrl:S.W.Insights.SPEECH_BUBBLE_HEART,config:e.config,showSeparateNameColumns:!0}))}},9447:(e,t,a)=>{a.d(t,{Y:()=>s});var r=a(20354),n=a(30439);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(e){var t,a=r.a.useBasicFetch(n.o.getAnonSessions(e));return{items:(null===(t=a.data)||void 0===t?void 0:t.reduce(function(e,t){return Object.assign(Object.assign({},e),(a={},r=t.sessionId,n={sessionId:(s=t).sessionId,name:s.sessionName},(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=i(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in a?Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):a[r]=n,a));var a,r,n,s},{}))||{},hasCompleted:a.hasCompleted,isFetching:a.isFetching}}},5780:(e,t,a)=>{a.d(t,{p:()=>c});var r=a(20354),n=a(2510),i=a(18488),s=a(4594),o=a(3010),l=a(88630);function c(e){var t,a,c,u,d=r.a.useGetFetch(),m=r.a.useBasicFetch(i.o.getShare(e)),h=(null===(t=m.data)||void 0===t?void 0:t.type)===n.y.Classroom&&(null===(u=null===(c=null===(a=m.data)||void 0===a?void 0:a.recipients)||void 0===c?void 0:c.find(function(e){return e.recipientTypeId===s.E.Classroom}))||void 0===u?void 0:u.recipientId),f=function(e){return l.F.getClassroomStudents(h,e)},v=(0,o.i)(h&&f,function(e){return d(f(e))});return Object.assign(Object.assign({},v),{hasCompleted:!h||v.hasCompleted})}},52389:(e,t,a)=>{a.d(t,{_:()=>f});var r=a(2948),n=a(20354),i=a(41196),s=a(18488),o=a(38143),l=a(91286),c=a(9447),u=a(5780);function d(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var h=[{id:"0",attempts:[{id:"0",answeredAt:0,answers:[]}]}];function f(e){var t,a,f,v,g=(f=(0,r.D)(o.g.HIDE_STAFF_RESULTS),v=1,function(e){if(Array.isArray(e))return e}(f)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(f,v)||d(f,v)||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],p=n.a.useBasicFetch(s.o.getShare(e)),y=(0,i.W)(null===(t=p.data)||void 0===t?void 0:t.objectId,null,e),b=(0,c.Y)(e),I=(0,u.p)(e);(0,l.v)(y);var S=y.hasCompleted&&b.hasCompleted&&I.hasCompleted;if(!S)return{data:null,hasCompleted:!1};var E=new Set,w=y.data.students.map(function(e){var t,a=null===(t=e.user)||void 0===t?void 0:t.userType;return g&&1===a?null:e.user?(E.add(e.user.id),e):Object.assign(Object.assign({},e),{user:b.items[e.sessionId]||{sessionId:e.sessionId}})}).filter(function(e){return!!e});return(null===(a=null==I?void 0:I.items)||void 0===a?void 0:a.length)&&w.push.apply(w,function(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)||d(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.")}()}(I.items.filter(function(e){return!E.has(e.id)}).map(function(e){return{user:e,results:h,isPlaceholder:!0}}))),{hasCompleted:S,isFetching:p.isFetching||y.isFetching||b.isFetching||I.isFetching,data:Object.assign(Object.assign({},y.data),{students:w})}}},91255:(e,t,a)=>{a.r(t),a.d(t,{BaseInsightsView:()=>Re});var r=a(32735),n=a(81886),i=a(20354),s=a(18488),o=a(86099),l=a(4594),c=a(23481),u=a(2948),d=a(93479),m=a(21789),h=a(60051),f=a(16714),v=a(39151),g=a(1666),p=a(47812),y=a(31949),b=a(91286),I=a(93322),S=a(22902),E=a(79612),w=a(31908),C=a(86702),A=a(88630),F=a(74049),j=a(17132),N=function(e,t){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/").concat(t),key:"video:views:v2:share:aggregation:".concat(e,":").concat(t),normalize:!1}},U=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/heat-map"),key:"video:views:v2:share:heatmap:".concat(e),normalize:!1}},B=function(e){return{url:"{gateway}/v2/analytics/streams/shares/".concat(e,"/aggregation/heat-map"),key:"video:views:v2:share:heatmap:aggregation:".concat(e),normalize:!1}},O=a(14070),R=a(97291);function T(e){var t=(0,S.T)(),a=t.getGatedPermission,i=t.isLoaded;r.useEffect(function(){i&&"hard-gate"===a(f.C.ViewInsights)&&n.Q.C$.trigger({application:R.O.MY_SHARES,action:O.e.MyShares.HARD_GATE_INSIGHTS,args:[e]})},[i])}var k=a(38143),_=a(39902),L=a(9447);function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function M(e){var t,a,r,n,s,o=(n=(0,u.D)(k.g.HIDE_STAFF_RESULTS),s=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(n,s)||function(e,t){if(e){if("string"==typeof e)return x(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?x(e,t):void 0}}(n,s)||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],l=i.a.useBasicFetch(U(e)),c=(0,L.Y)(e),d=(null===(t=l.data)||void 0===t?void 0:t.map(function(e){return e.userId}).filter(function(e){return!!e}))||[],m=(0,_.fh)(d,y.N.getById),h=Object.assign(Object.assign({},c.items),m.items),f=null===(a=l.data)||void 0===a?void 0:a.filter(function(e){var t=h[e.userId||e.sessionId];return t&&1===t.userType&&o?null:e}).filter(function(e){return!!e}),v=null===(r=l.data)||void 0===r?void 0:r.map(function(e){return Object.assign(Object.assign({},function(e){var t,a;return e.userId?(null===(t=m.items)||void 0===t?void 0:t[e.userId])||{id:e.userId,deleted:!0}:(null===(a=c.items)||void 0===a?void 0:a[e.sessionId])||{sessionId:e.sessionId}}(e)),{percentage:e.engagementRate})});return{engagement:f,users:v,hasCompleted:l.hasCompleted&&c.hasCompleted&&(!(null==d?void 0:d.length)||m.hasCompleted)}}var D=a(5780),P=a(10447);function q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return G(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?G(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var V=c.T.encloseNamespace("shared.insightsHeatmap");function W(e){var t,a,n,o,c,U=q((0,u.D)(C.y.ANONYMISE_USERS),1)[0],O=q((0,u.D)(C.y.HIDE_STAFF_RESULTS),1)[0];(0,I.F)();var R=(0,S.T)(),k=R.hasPermissions,_=R.getGatedPermission,L=i.a.useBasicFetch(s.o.getShare(e.shareId)),x=m.x.getClassroomIdFromShare(L.data),G=i.a.useBasicFetch(x&&A.F.getClassroom(x)),W=(0,D.p)(e.shareId),H=L.data&&w.M.getVideoRequest(L.data.objectId,L.data.objectTypeId),$=i.a.useBasicFetch(H),Z=i.a.useBasicFetch(v.L.config()),Q=i.a.useBasicFetch(y.N.currentUser()),Y=i.a.useBasicFetch(Q.data&&g.h.yearGroups(Q.data.customerId)),z=w.M.isInteractive($.data)&&d.I.pendingReviews({interactives:[$.data].map(function(t){return{interactiveId:t.interactiveId,metadataId:t.id,shareId:e.shareId}}),filters:{currentCustomerId:Q.data.customerId,currentUserId:Q.data.id}}),K=(null===(a=null===(t=i.a.useBasicFetch(z).data)||void 0===t?void 0:t[0])||void 0===a?void 0:a.pendingReviewCount)>0,J=i.a.useBasicFetch(B(e.shareId)),X=M(e.shareId),ee=X.users,te=X.engagement,ae=X.hasCompleted,re=i.a.useBasicFetch(N(e.shareId,"year_group")),ne=i.a.useBasicFetch((null===(n=L.data)||void 0===n?void 0:n.objectId)&&p.k.createViewKey(L.data.objectId,h.f.MasterObject));(0,E.M)({title:$.data?V("pageTitle",{video:null===(o=$.data)||void 0===o?void 0:o.name}):null}),(0,b.v)([L,$]),T(e.shareId);var ie=L.hasCompleted&&$.hasCompleted&&Z.hasCompleted&&J.hasCompleted&&re.hasCompleted&&ne.hasCompleted&&Y.hasCompleted;return r.createElement("div",{className:"px-3"},r.createElement(F.j,{video:$.data,tabs:function(){var e;return(null===(e=L.data)||void 0===e?void 0:e.objectTypeId)===l.E.Interactive?(0,P.kj)(L.data,"heatmap"):(0,P.$6)(L.data,"heatmap")}(),hasAnalytics:k(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(c=Z.data)||void 0===c?void 0:c.analyticsWebUrl,share:L.data,yearGroups:Y.data,classroom:G.data,markingRequired:K,hasData:!!(null==te?void 0:te.length),viewInsightsGatedPermission:_(f.C.ViewInsights)}),r.createElement(j.w,{aggregateEngagement:J.data,individualEngagement:te,yearGroups:re.data,config:Z.data,users:ee,viewKey:ne.data,hasDataLoaded:ie,tableDataLoaded:ae,anonymiseUsers:U,classroomStudents:W.items,hideStaffResults:O}))}var H=a(39157),$=a(94892),Z=a(20768),Q=a(54948),Y=a(52389);function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var K=c.T.encloseNamespace("insights.interactiveInsightsOverviewView");function J(e){var t,a,n,l,c,d,h,p=(d=(0,u.D)(k.g.ANONYMISE_USERS),h=1,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(d,h)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?z(e,t):void 0}}(d,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,I.F)();var w=(0,S.T)(),C=w.hasPermissions,j=w.getGatedPermission,O=i.a.useBasicFetch(v.L.config()),R=i.a.useBasicFetch(y.N.currentUser()),_=i.a.useBasicFetch(R.data&&g.h.yearGroups(R.data.customerId)),L=i.a.useBasicFetch(s.o.getShare(e.shareId)),x=m.x.getClassroomIdFromShare(L.data),M=i.a.useBasicFetch(x&&A.F.getClassroom(x)),q=(0,D.p)(e.shareId),G=i.a.useBasicFetch((null===(t=L.data)||void 0===t?void 0:t.objectId)&&Z.b.interactiveMetadata(L.data.objectId)),V=i.a.useBasicFetch((null===(a=G.data)||void 0===a?void 0:a.interactiveId)&&Z.b.interactive(G.data.interactiveId)),W=(0,Y._)(e.shareId),J=i.a.useBasicFetch(U(e.shareId)),X=i.a.useBasicFetch(B(e.shareId)),ee=i.a.useBasicFetch(N(e.shareId,"os_name"));(0,E.M)({title:G.data?K("pageTitle",{video:null===(n=G.data)||void 0===n?void 0:n.name}):null}),(0,b.v)([L,V,G]),T(e.shareId);var te=O.hasCompleted&&G.hasCompleted&&V.data&&X.hasCompleted&&J.hasCompleted&&ee.hasCompleted&&W.hasCompleted&&_.hasCompleted,ae=function(e,t){return{resultsAppLink:(0,o.rq)(e,t),questionsAppLink:(0,o.Sj)(e,t),heatmapAppLink:(0,o.Rv)(e,t)}}(L.data),re=te&&(0,H.R6)(V.data,W.data,$.T),ne=re&&re.markingRequired.length>0;return r.createElement("div",{className:"px-3"},r.createElement(F.j,{video:G.data,tabs:(0,P.kj)(L.data,"insights"),hasAnalytics:C(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=O.data)||void 0===l?void 0:l.analyticsWebUrl,share:L.data,yearGroups:_.data,classroom:M.data,markingRequired:ne,hasData:!!(null===(c=W.data)||void 0===c?void 0:c.students.length),viewInsightsGatedPermission:j(f.C.ViewInsights)}),r.createElement(Q.m,{aggregateEngagement:X.data,individualEngagement:J.data,interactive:V.data,interactiveMetadata:G.data,interactiveInsightsAppLinks:ae,classroomStudents:q.items,results:W.data,osCount:ee.data,config:O.data,anonymiseUsers:p,hasDataLoaded:te,share:L.data}))}var X=a(48705);function ee(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var te=c.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function ae(e){var t,a,n,o,l,c,d,h,p=(d=(0,u.D)(k.g.ANONYMISE_USERS),h=1,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(d,h)||function(e,t){if(e){if("string"==typeof e)return ee(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ee(e,t):void 0}}(d,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,I.F)();var w=(0,S.T)(),C=w.hasPermissions,j=w.getGatedPermission,N=i.a.useBasicFetch(y.N.currentUser()),U=i.a.useBasicFetch(v.L.config()),B=i.a.useBasicFetch(N.data&&g.h.yearGroups(N.data.customerId)),O=i.a.useBasicFetch(s.o.getShare(e.shareId)),R=m.x.getClassroomIdFromShare(O.data),_=i.a.useBasicFetch(R&&A.F.getClassroom(R)),L=i.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.objectId)&&Z.b.interactiveMetadata(null===(a=O.data)||void 0===a?void 0:a.objectId)),x=i.a.useBasicFetch((null===(n=L.data)||void 0===n?void 0:n.interactiveId)&&Z.b.interactive(L.data.interactiveId)),M=(0,Y._)(e.shareId);(0,E.M)({title:L.data?te("pageTitle",{video:null===(o=L.data)||void 0===o?void 0:o.name}):null}),(0,b.v)([O,x,L]),T(e.shareId);var D=x.data&&L.data&&!!M.data&&!!B.data,q=D&&(0,H.R6)(x.data,M.data,$.T),G=q&&q.markingRequired.length>0;return r.createElement("div",{className:"px-3"},r.createElement(F.j,{tabs:(0,P.kj)(O.data,"questions"),video:L.data,hasAnalytics:C(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=U.data)||void 0===l?void 0:l.analyticsWebUrl,share:O.data,yearGroups:B.data,classroom:_.data,markingRequired:G,hasData:!!(null===(c=M.data)||void 0===c?void 0:c.students.length),viewInsightsGatedPermission:j(f.C.ViewInsights)}),r.createElement(X.x,{interactive:x.data,interactiveMetadata:L.data,interactionId:e.interactionId,config:U.data,sortBy:e.sortBy,isFetching:!M.hasCompleted||x.isFetching,anonymiseUsers:p,results:M.data,hasDataLoaded:D}))}var re=a(78057);function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ie(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ie(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var se=c.T.encloseNamespace("insights.interactiveInsightsStudents");function oe(e){var t,a,o,l,c,d=ne((0,u.D)(k.g.ANONYMISE_USERS),1)[0],h=ne((0,u.D)(k.g.HIDE_STAFF_RESULTS),1)[0],p=(0,S.T)(),I=p.hasPermissions,w=p.getGatedPermission,C=i.a.useBasicFetch(y.N.currentUser()),j=i.a.useBasicFetch(v.L.config()),N=i.a.useBasicFetch(C.data&&g.h.yearGroups(C.data.customerId)),U=i.a.useBasicFetch(s.o.getShare(e.shareId)),B=m.x.getClassroomIdFromShare(U.data),_=i.a.useBasicFetch(B&&A.F.getClassroom(B)),L=i.a.useBasicFetch((null===(t=U.data)||void 0===t?void 0:t.objectId)&&Z.b.interactiveMetadata(U.data.objectId)),x=i.a.useBasicFetch((null===(a=L.data)||void 0===a?void 0:a.interactiveId)&&Z.b.interactive(L.data.interactiveId)),M=(0,Y._)(e.shareId),D=x.data&&L.data&&!!M.data&&!!N.data,q=D&&(0,H.R6)(x.data,M.data,$.T),G=q&&q.markingRequired.length>0;return(0,E.M)({title:L.data?se("pageTitle",{video:null===(o=L.data)||void 0===o?void 0:o.name}):null}),(0,b.v)([U,x,L]),T(e.shareId),r.createElement("div",{className:"px-3"},r.createElement(F.j,{tabs:(0,P.kj)(U.data,"results"),video:L.data,hasAnalytics:I(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(l=j.data)||void 0===l?void 0:l.analyticsWebUrl,share:U.data,yearGroups:N.data,classroom:_.data,markingRequired:G,hasData:!!(null===(c=M.data)||void 0===c?void 0:c.students.length),viewInsightsGatedPermission:w(f.C.ViewInsights)}),r.createElement(re.R,{interactiveMetadata:L.data,viewStudentResults:function(t,a,r){n.Q.C$.trigger({application:R.O.MY_SHARES,action:O.e.MyShares.INTERACTIVE_STUDENT_RESULTS,params:{studentId:t.id,shareId:e.shareId,interactionId:r,sessionId:t.sessionId}})},interactive:x.data,results:M.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:M.isFetching,anonymiseUsers:d,hasDataLoaded:D,config:j.data,hideStaffResults:h}))}var le=a(37802),ce=a(51870),ue=a(50916),de=a(84621),me=a(98551),he=a(35223),fe=c.T.encloseNamespace("shared.insightStudentsNotWatched");function ve(e){var t,a=(null===(t=e.students)||void 0===t?void 0:t.filter(function(t){var a;return!(null===(a=e.watchedIds)||void 0===a?void 0:a.includes(t.id))}))||[];return r.createElement(de.L,{title:fe("title"),svgName:he.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},r.createElement(me.y,{students:a,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:fe("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var ge=c.T.encloseNamespace("shared.insightStudentsWatched");function pe(e){return r.createElement(de.L,{title:ge("title"),svgName:he.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},r.createElement(me.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:ge("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:ge("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var ye=a(8604),be=a(83345),Ie=a(99742),Se=a(53214);const Ee="oHwkx";function we(){return r.createElement("div",null,r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(Ee," rounded partial-loading-background")}))),r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(Ee," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(Ee," rounded partial-loading-background")}))))}var Ce="insights.videoInsightsOverview";function Ae(e){var t,a,n,i=e.hasDataLoaded&&!!(null===(t=e.viewers)||void 0===t?void 0:t.length);function s(){return e.viewers?Object.values(e.viewers):[]}return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(we,null),e.hasDataLoaded&&r.createElement(Se.u,{video:e.video,hasData:i,share:e.share},r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(be.x,{namespace:Ce,phrase:"studentViewing"}),r.createElement("span",null,": ",s().length,e.classroomStudents?"/".concat(e.classroomStudents.length):"")),r.createElement("div",{className:"row g-3"},!!(null===(a=e.classroomStudents)||void 0===a?void 0:a.length)&&r.createElement("div",{className:"col-12 col-md"},r.createElement(ve,{students:e.classroomStudents,watchedIds:null===(n=e.viewers)||void 0===n?void 0:n.map(function(e){return e.id}),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:Ie.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col-12 col-md"},r.createElement(pe,{students:s(),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:Ie.W.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})))),r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(be.x,{namespace:Ce,phrase:e.hasClassrooms?"classEngagement":"engagement"})),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col-12 col-md-6"},r.createElement(ce.i,{osCount:e.osCount})),r.createElement("div",{className:"col-12 col-md-6"},r.createElement(ue.b,{engagement:e.aggregateEngagement,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,engagementRate:(0,ye.Q)(e.individualEngagement)}))))))}function Fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var je=c.T.encloseNamespace("insights.videoInsightsOverviewView");function Ne(e){var t,a,n,l,c=(n=(0,u.D)(k.g.ANONYMISE_USERS),l=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(r=i.call(a)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw n}}return o}}(n,l)||function(e,t){if(e){if("string"==typeof e)return Fe(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?Fe(e,t):void 0}}(n,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,I.F)();var d=(0,le.r)(null).hasClassrooms,h=(0,S.T)(),p=h.hasPermissions,C=h.getGatedPermission,j=i.a.useBasicFetch(v.L.config()),O=i.a.useBasicFetch(y.N.currentUser()),R=i.a.useBasicFetch(O.data&&g.h.yearGroups(O.data.customerId)),_=i.a.useBasicFetch(s.o.getShare(e.shareId)),L=m.x.getClassroomIdFromShare(_.data),x=i.a.useBasicFetch(L&&A.F.getClassroom(L)),q=(0,D.p)(e.shareId),G=_.data&&w.M.getVideoRequest(_.data.objectId,_.data.objectTypeId),V=i.a.useBasicFetch(G);(0,E.M)({title:V.data?je("pageTitle",{video:null===(t=V.data)||void 0===t?void 0:t.name}):null}),(0,b.v)([_,V]),T(e.shareId);var W=i.a.useBasicFetch(U(e.shareId)),H=i.a.useBasicFetch(B(e.shareId)),$=i.a.useBasicFetch(N(e.shareId,"os_name")),Z=M(e.shareId),Q=Z.users,Y=Z.hasCompleted,z=j.hasCompleted&&V.hasCompleted&&W.hasCompleted&&H.hasCompleted&&$.hasCompleted&&R.data&&Y,K=function(e){return{heatmapAppLink:(0,o.Rv)(e,void 0)}}(_.data);return r.createElement("div",{className:"px-3"},r.createElement(F.j,{video:V.data,classroom:x.data,tabs:(0,P.$6)(_.data,"insights"),hasAnalytics:p(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(a=j.data)||void 0===a?void 0:a.analyticsWebUrl,share:_.data,yearGroups:R.data,hasData:z&&!!(null==Q?void 0:Q.length),viewInsightsGatedPermission:C(f.C.ViewInsights)}),r.createElement(Ae,{hasDataLoaded:!!z,hasClassrooms:d,anonymiseUsers:c,videoInsightsAppLinks:K,config:j.data,video:V.data,classroomStudents:q.items,viewers:Q,individualEngagement:W.data,aggregateEngagement:H.data,share:_.data,osCount:$.data}))}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 Be(e,t,a){return(t=function(e){var t=function(e){if("object"!=Ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=Ue(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ue(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var Oe=Be(Be(Be({},l.E.Video,{insights:function(e){return r.createElement(Ne,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(W,{shareId:e.share.shareId})}}),l.E.Clip,{insights:function(e){return r.createElement(Ne,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(W,{shareId:e.share.shareId})}}),l.E.Interactive,{insights:function(e){return r.createElement(J,{shareId:e.share.shareId})},heatmap:function(e){return r.createElement(W,{shareId:e.share.shareId})},questions:function(e){return r.createElement(ae,{interactionId:e.interactionId,sortBy:e.sortBy,shareId:e.share.shareId})},results:function(e){return r.createElement(oe,{filterBy:e.filterBy,sortBy:e.sortBy,shareId:e.share.shareId})}});function Re(e){var t=i.a.useBasicFetch(s.o.getShare(e.shareId)),a=function(e){var t,a=e.share,n=e.tab,i=null===(t=Oe[null==a?void 0:a.objectTypeId])||void 0===t?void 0:t[n];return i?i(e):r.createElement(r.Fragment,null)}({share:t.data,tab:e.tab,interactionId:e.interactionId,sortBy:e.sortBy,filterBy:e.filterBy});return r.useEffect(function(){if(e.showShareOptions&&t.data){var a=(0,o.Zm)(t.data);a&&n.Q.C$.trigger(a)}},[t.data,e.showShareOptions]),r.createElement(r.Fragment,null,a)}}}]);
|
|
2
|
-
//# sourceMappingURL=5579-a9c152057f-lite.chunk.js.map
|