@clickview/lite 0.73.1 → 0.74.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 +2 -2
- package/dist/css/{7122-lite-a094f8fe17.chunk.css → 7122-lite-e0652641e4.chunk.css} +1 -1
- package/dist/css/{4499-lite-c43d17524f.chunk.css → 7150-lite-60d455ba66.chunk.css} +1 -1
- package/dist/css/{lite-app-10d57977f3.css → lite-app-98b3200025.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1362-061cd588c0-lite.chunk.js → 1362-56810ef4c8-lite.chunk.js} +3 -3
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +1 -0
- package/dist/scripts/{1367-12750422b0-lite.chunk.js → 1367-e0481edee3-lite.chunk.js} +2 -2
- package/dist/scripts/1367-e0481edee3-lite.chunk.js.map +1 -0
- package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js → 1735-e4cdbc46ed-lite.chunk.js} +3 -3
- package/dist/scripts/1735-e4cdbc46ed-lite.chunk.js.map +1 -0
- package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js → 324-e7a99b7d52-lite.chunk.js} +2 -2
- package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js.map → 324-e7a99b7d52-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3252-22fac3da15-lite.chunk.js → 3252-50b5c19f19-lite.chunk.js} +1 -1
- package/dist/scripts/{3252-22fac3da15-lite.chunk.js.map → 3252-50b5c19f19-lite.chunk.js.map} +1 -1
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js +2 -0
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js → 3781-e092f92668-lite.chunk.js} +2 -2
- package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js.map → 3781-e092f92668-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3823-e38a508a3c-lite.chunk.js → 3823-0dc1972eb2-lite.chunk.js} +2 -2
- package/dist/scripts/3823-0dc1972eb2-lite.chunk.js.map +1 -0
- package/dist/scripts/3915-abd9a65a08-lite.chunk.js +2 -0
- package/dist/scripts/3915-abd9a65a08-lite.chunk.js.map +1 -0
- package/dist/scripts/{3978-09fb1f250e-lite.chunk.js → 3978-a551dd2648-lite.chunk.js} +2 -2
- package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +1 -0
- package/dist/scripts/{4013-d31272b42a-lite.chunk.js → 4013-6f68d7031e-lite.chunk.js} +1 -1
- package/dist/scripts/{4013-d31272b42a-lite.chunk.js.map → 4013-6f68d7031e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js → 4014-3eccce2f89-lite.chunk.js} +3 -3
- package/dist/scripts/4014-3eccce2f89-lite.chunk.js.map +1 -0
- package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js → 4050-ffe5b6ae6d-lite.chunk.js} +2 -2
- package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.map → 4050-ffe5b6ae6d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4061-525ef00f69-lite.chunk.js → 4061-100002abf6-lite.chunk.js} +2 -2
- package/dist/scripts/4061-100002abf6-lite.chunk.js.map +1 -0
- package/dist/scripts/4191-9a08c4b205-lite.chunk.js +2 -0
- package/dist/scripts/4191-9a08c4b205-lite.chunk.js.map +1 -0
- package/dist/scripts/{4358-b21c24f96a-lite.chunk.js → 4358-a1bbca8249-lite.chunk.js} +1 -1
- package/dist/scripts/{4358-b21c24f96a-lite.chunk.js.map → 4358-a1bbca8249-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4400-8c36fb4ab5-lite.chunk.js → 4400-755a158a52-lite.chunk.js} +2 -2
- package/dist/scripts/4400-755a158a52-lite.chunk.js.map +1 -0
- package/dist/scripts/4806-13c9302b2c-lite.chunk.js +2 -0
- package/dist/scripts/4806-13c9302b2c-lite.chunk.js.map +1 -0
- package/dist/scripts/{5135-864055ab0b-lite.chunk.js → 5135-166ec46620-lite.chunk.js} +2 -2
- package/dist/scripts/5135-166ec46620-lite.chunk.js.map +1 -0
- package/dist/scripts/{5143-286c66de2b-lite.chunk.js → 5143-d6c4a357ea-lite.chunk.js} +2 -2
- package/dist/scripts/5143-d6c4a357ea-lite.chunk.js.map +1 -0
- package/dist/scripts/{5743-a764171a6d-lite.chunk.js → 5743-14700e4f76-lite.chunk.js} +2 -2
- package/dist/scripts/5743-14700e4f76-lite.chunk.js.map +1 -0
- package/dist/scripts/{6030-5db8cc1bc4-lite.chunk.js → 6030-c2e07df714-lite.chunk.js} +2 -2
- package/dist/scripts/6030-c2e07df714-lite.chunk.js.map +1 -0
- package/dist/scripts/{618-4334f9451b-lite.chunk.js → 618-996d8b560b-lite.chunk.js} +2 -2
- package/dist/scripts/618-996d8b560b-lite.chunk.js.map +1 -0
- package/dist/scripts/{6207-f444184025-lite.chunk.js → 6207-be843186e0-lite.chunk.js} +1 -1
- package/dist/scripts/{6207-f444184025-lite.chunk.js.map → 6207-be843186e0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6413-c4333e80d4-lite.chunk.js → 6413-caaae6a383-lite.chunk.js} +3 -3
- package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.map → 6413-caaae6a383-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6646-24a34f7d99-lite.chunk.js → 6646-c5775f6553-lite.chunk.js} +3 -3
- package/dist/scripts/6646-c5775f6553-lite.chunk.js.map +1 -0
- package/dist/scripts/{6909-8a45942b63-lite.chunk.js → 6909-6805b6a0d9-lite.chunk.js} +2 -2
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +1 -0
- package/dist/scripts/7064-b3bafc599f-lite.chunk.js +2 -0
- package/dist/scripts/7064-b3bafc599f-lite.chunk.js.map +1 -0
- package/dist/scripts/7122-dbf374af58-lite.chunk.js +2 -0
- package/dist/scripts/7122-dbf374af58-lite.chunk.js.map +1 -0
- package/dist/scripts/7150-93a205975c-lite.chunk.js +2 -0
- package/dist/scripts/7150-93a205975c-lite.chunk.js.map +1 -0
- package/dist/scripts/{7234-85d4acaa33-lite.chunk.js → 7234-bcddfe2112-lite.chunk.js} +2 -2
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +1 -0
- package/dist/scripts/{7383-690bc234f1-lite.chunk.js → 7383-02d4956304-lite.chunk.js} +2 -2
- package/dist/scripts/7383-02d4956304-lite.chunk.js.map +1 -0
- package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js → 7873-0ce0523a28-lite.chunk.js} +2 -2
- package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js.map → 7873-0ce0523a28-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8248-050265ed2d-lite.chunk.js → 8248-41dad9bf71-lite.chunk.js} +3 -3
- package/dist/scripts/8248-41dad9bf71-lite.chunk.js.map +1 -0
- package/dist/scripts/8385-6ef08fa319-lite.chunk.js +2 -0
- package/dist/scripts/8385-6ef08fa319-lite.chunk.js.map +1 -0
- package/dist/scripts/{8451-1cb649a3f3-lite.chunk.js → 8451-0103210a8f-lite.chunk.js} +2 -2
- package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +1 -0
- package/dist/scripts/8630-80f676dcda-lite.chunk.js +2 -0
- package/dist/scripts/8630-80f676dcda-lite.chunk.js.map +1 -0
- package/dist/scripts/8891-5118c47b59-lite.chunk.js +2 -0
- package/dist/scripts/8891-5118c47b59-lite.chunk.js.map +1 -0
- package/dist/scripts/8982-b9e53e43ec-lite.chunk.js +2 -0
- package/dist/scripts/8982-b9e53e43ec-lite.chunk.js.map +1 -0
- package/dist/scripts/{9186-daf77d7174-lite.chunk.js → 9186-c1d2615458-lite.chunk.js} +2 -2
- package/dist/scripts/9186-c1d2615458-lite.chunk.js.map +1 -0
- package/dist/scripts/{9241-dbac9cb9f9-lite.chunk.js → 9241-2386134dd3-lite.chunk.js} +2 -2
- package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +1 -0
- package/dist/scripts/{9345-30ccf524c5-lite.chunk.js → 9345-0a7f58bb53-lite.chunk.js} +3 -3
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +1 -0
- package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js +2 -0
- package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js.map +1 -0
- package/dist/scripts/{9503-275c13891d-lite.chunk.js → 9503-715c46ecc1-lite.chunk.js} +2 -2
- package/dist/scripts/9503-715c46ecc1-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-ca2a850260-lite.chunk.js +2 -0
- package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +1 -0
- package/dist/scripts/{9767-d69fdc31b0-lite.chunk.js → 9767-1b583ceb6c-lite.chunk.js} +2 -2
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-7c119a8fe3-lite.chunk.js +2 -0
- package/dist/scripts/9894-7c119a8fe3-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-5b65703152.min.js +3 -0
- package/dist/scripts/{bundle-0075afb6af.min.js.map → bundle-5b65703152.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1362-061cd588c0-lite.chunk.js.map +0 -1
- package/dist/scripts/1367-12750422b0-lite.chunk.js.map +0 -1
- package/dist/scripts/1735-c0f3f1238a-lite.chunk.js.map +0 -1
- package/dist/scripts/3677-20958f59d3-lite.chunk.js +0 -2
- package/dist/scripts/3677-20958f59d3-lite.chunk.js.map +0 -1
- package/dist/scripts/3823-e38a508a3c-lite.chunk.js.map +0 -1
- package/dist/scripts/3915-a1f15d687a-lite.chunk.js +0 -2
- package/dist/scripts/3915-a1f15d687a-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-09fb1f250e-lite.chunk.js.map +0 -1
- package/dist/scripts/4014-4225ce1eb6-lite.chunk.js.map +0 -1
- package/dist/scripts/4061-525ef00f69-lite.chunk.js.map +0 -1
- package/dist/scripts/4191-7612e1713c-lite.chunk.js +0 -2
- package/dist/scripts/4191-7612e1713c-lite.chunk.js.map +0 -1
- package/dist/scripts/4400-8c36fb4ab5-lite.chunk.js.map +0 -1
- package/dist/scripts/4499-1365934bf2-lite.chunk.js +0 -2
- package/dist/scripts/4499-1365934bf2-lite.chunk.js.map +0 -1
- package/dist/scripts/4806-384760d9c9-lite.chunk.js +0 -2
- package/dist/scripts/4806-384760d9c9-lite.chunk.js.map +0 -1
- package/dist/scripts/5135-864055ab0b-lite.chunk.js.map +0 -1
- package/dist/scripts/5143-286c66de2b-lite.chunk.js.map +0 -1
- package/dist/scripts/5743-a764171a6d-lite.chunk.js.map +0 -1
- package/dist/scripts/6030-5db8cc1bc4-lite.chunk.js.map +0 -1
- package/dist/scripts/618-4334f9451b-lite.chunk.js.map +0 -1
- package/dist/scripts/6646-24a34f7d99-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-8a45942b63-lite.chunk.js.map +0 -1
- package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js +0 -2
- package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js.map +0 -1
- package/dist/scripts/7122-352fdd3516-lite.chunk.js +0 -2
- package/dist/scripts/7122-352fdd3516-lite.chunk.js.map +0 -1
- package/dist/scripts/7234-85d4acaa33-lite.chunk.js.map +0 -1
- package/dist/scripts/7383-690bc234f1-lite.chunk.js.map +0 -1
- package/dist/scripts/8248-050265ed2d-lite.chunk.js.map +0 -1
- package/dist/scripts/8385-083e882d77-lite.chunk.js +0 -2
- package/dist/scripts/8385-083e882d77-lite.chunk.js.map +0 -1
- package/dist/scripts/8451-1cb649a3f3-lite.chunk.js.map +0 -1
- package/dist/scripts/8630-0945271ea2-lite.chunk.js +0 -2
- package/dist/scripts/8630-0945271ea2-lite.chunk.js.map +0 -1
- package/dist/scripts/8891-393bb5bdaf-lite.chunk.js +0 -2
- package/dist/scripts/8891-393bb5bdaf-lite.chunk.js.map +0 -1
- package/dist/scripts/8982-8c21fab48a-lite.chunk.js +0 -2
- package/dist/scripts/8982-8c21fab48a-lite.chunk.js.map +0 -1
- package/dist/scripts/9186-daf77d7174-lite.chunk.js.map +0 -1
- package/dist/scripts/9241-dbac9cb9f9-lite.chunk.js.map +0 -1
- package/dist/scripts/9345-30ccf524c5-lite.chunk.js.map +0 -1
- package/dist/scripts/9352-04db4c533d-lite.chunk.js +0 -2
- package/dist/scripts/9352-04db4c533d-lite.chunk.js.map +0 -1
- package/dist/scripts/9503-275c13891d-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-285237c980-lite.chunk.js +0 -2
- package/dist/scripts/9630-285237c980-lite.chunk.js.map +0 -1
- package/dist/scripts/9767-d69fdc31b0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-10943e41f7-lite.chunk.js +0 -2
- package/dist/scripts/9894-10943e41f7-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-0075afb6af.min.js +0 -3
- /package/dist/scripts/{1362-061cd588c0-lite.chunk.js.LICENSE.txt → 1362-56810ef4c8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js.LICENSE.txt → 1735-e4cdbc46ed-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js.LICENSE.txt → 4014-3eccce2f89-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.LICENSE.txt → 4050-ffe5b6ae6d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.LICENSE.txt → 6413-caaae6a383-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6646-24a34f7d99-lite.chunk.js.LICENSE.txt → 6646-c5775f6553-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8248-050265ed2d-lite.chunk.js.LICENSE.txt → 8248-41dad9bf71-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9345-30ccf524c5-lite.chunk.js.LICENSE.txt → 9345-0a7f58bb53-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-0075afb6af.min.js.LICENSE.txt → bundle-5b65703152.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/4806-13c9302b2c-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/InteractiveUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/StudentTableUtils.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/libs/shared/src/enums/InteractiveAnswerStatus.ts","file:///app/packages/libs/shared/src/utils/InteractiveCorrectnessHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/student-results-table.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}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!props.showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n <PercentageIndicator />\n </div>\n );\n\n if (!props.title)\n return <Indicator />;\n\n return (\n <Tooltip title={props.title} spanHack spanHackClassName={props.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 { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\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\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): Column<StudentResultsWithSummary>[] {\n const hasResults = !!results.students?.length;\n\n return React.useMemo(() => {\n const cols: Column<StudentResultsWithSummary>[] = [\n {\n id: 'name',\n Header: ({ column }) => <HeaderCell column={column} phraseKey='name' />,\n accessor: (u: StudentResultsWithSummary) => u,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, StudentResultsWithSummary>) => (\n <CellWrapper>\n <span className='text-truncate'>{anonymiseUserName(value.user || value.publicUser, anonymiseUsers)}</span>\n </CellWrapper>\n ),\n disableSortBy: !hasResults\n },\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 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 />\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n {`${value.correct}/${value.answered + value.unanswered}`}\n </CellWrapper>\n );\n },\n width: 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): 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 === 'user') {\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 === '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 ]);\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 { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n const interactionIds = new Set(interactions.map(i => i.id));\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n const result = ArrayHelper.last(s.results);\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n if (answeredInteractions === interactionIds.size) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: answeredInteractions,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\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","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","export enum InteractiveAnswerStatus {\n Incorrect = 0,\n Correct = 1,\n PendingReview = 2\n}","import { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResult, StudentAnswer } from 'libs/shared/interfaces';\n\ntype GetStudentAnswerByActionableItemId = (id: string) => string;\n\nfunction notApplicable(): InteractionCorrectness {\n return InteractionCorrectness.NotApplicable;\n}\n\nfunction awaitingMarking(): InteractionCorrectness {\n return InteractionCorrectness.AwaitingMarking;\n}\n\nfunction isMissingWordCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n const items = interaction.actionableItems.filter(a => a\n .isCorrect);\n\n if (items.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n\n const correct = items.every(a => a.name.trim().toLowerCase() === getStudentAnswer(a.id)?.trim().toLowerCase());\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMultipleChoiceCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n if (interaction.actionableItems.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n \n const correctItems = interaction.actionableItems.filter(a => a.isCorrect);\n\n const correct = correctItems.every(a => {\n const studentAnswer = getStudentAnswer(a.id);\n\n /**\n * In the past we've only ever checked the answer name. But since we introduced the ability to have image interactions\n * with no question text, we've need to swap to saving the id. But past submissions still have the name\n * - Sha\n */\n return studentAnswer?.toString() === a.id?.toString() || studentAnswer === a.name;\n });\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n getStudentAnswer: (id: string) => StudentAnswer\n): InteractionCorrectness {\n let correctness: InteractionCorrectness;\n\n // There should only be one actionableItem\n interaction.actionableItems.forEach(item => {\n const studentAnswer = getStudentAnswer(item.id);\n\n if (!studentAnswer) {\n correctness = InteractionCorrectness.UnAnswered;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Correct) {\n correctness = InteractionCorrectness.Correct;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Incorrect) {\n correctness = InteractionCorrectness.Incorrect;\n return;\n }\n\n correctness = InteractionCorrectness.AwaitingMarking;\n });\n\n return correctness;\n}\n\ntype IsCorrectFunction = (interaction: Interaction, result: InteractiveResult) => InteractionCorrectness;\n\nfunction getGetStudentAnswer(interaction: Interaction, result: InteractiveResult): (id: string) => StudentAnswer {\n return (id: string) => {\n const attempt = result.attempts.find(a => a.id === interaction.id);\n return attempt?.answers.find(s => s.id === id);\n };\n}\n\nfunction wrapIsMissingWordCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMissingWordCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMultipleChoiceCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMultipleChoiceCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n result: InteractiveResult\n): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n return isMarkableAnswerMarkedCorrect(interaction, getStudentAnswer);\n}\n\nconst IsCorrectLookup: {[typeId: number]: IsCorrectFunction} = {\n [InteractionTypeId.Annotation]: notApplicable,\n [InteractionTypeId.Image]: notApplicable,\n [InteractionTypeId.MissingWord]: wrapIsMissingWordCorrect,\n [InteractionTypeId.MultipleChoice]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.ShortAnswer]: wrapIsMarkableAnswerMarkedCorrect,\n [InteractionTypeId.TrueOrFalse]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.Illustration]: wrapIsMarkableAnswerMarkedCorrect\n};\n\nfunction isInteractionCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const isCorrectFn = IsCorrectLookup[interaction.typeId];\n\n return isCorrectFn(interaction, result);\n}\n\nexport const InteractiveCorrectnessHelper = {\n notApplicable,\n awaitingMarking,\n isMissingWordCorrect,\n isMultipleChoiceCorrect,\n isInteractionCorrect\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"hnMke\",\"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\"};"],"names":["getPhrase","getClassName","props","className","showLabel","PendingIndicator","Indicator","title","spanHack","spanHackClassName","tooltipClassName","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","CellWrapper","children","HeaderCell","column","isSorted","phraseKey","useGetFixedColumns","anonymiseUsers","hasResults","Header","accessor","u","Cell","value","user","publicUser","disableSortBy","sortType","sortDescFirst","correct","answered","width","useGetResultColumns","onColumnHover","refreshData","index","row","original","useGetResultsTableData","sortBy","filterBy","forEach","s","push","sorted","ArrayHelper","student","desc","reverse","highlightColumns","tableEl","highlightIndex","rows","querySelectorAll","childNodes","col","colIdx","classList","remove","add","highlightRows","rowIdx","groupStudents","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","interactionIds","Set","withSummary","getStudentResultsSummary","attempts","filter","a","has","answers","questionId","size","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","toString","getMarkedAnswerId","answer","resultId","getMarkedStatus","markedAnswers","result","studentResponse","every","status","getInteractionResultsSummary","numStudents","numCorrect","numInteractions","answeredInteractions","getSortStudents","shouldFilterStudent","InteractiveAnswerStatus","notApplicable","isMissingWordCorrect","getStudentAnswer","items","actionableItems","isCorrect","name","trim","toLowerCase","isMultipleChoiceCorrect","studentAnswer","getGetStudentAnswer","attempt","wrapIsMultipleChoiceCorrect","text","wrapIsMarkableAnswerMarkedCorrect","item","isMarkableAnswerMarkedCorrect","IsCorrectLookup","isInteractionCorrect","isCorrectFn"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5135],{94644:(e,t,r)=>{r.d(t,{r:()=>u});var n=r(50242),i=r(81886),a=r(67058),o=r(14553),c=r(49267),s=r(49075),l={notFound:a.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._,internalServerError:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var a;a="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);a&&i.Q.Ry.isStatusCodeError(a)&&(a!==n.o.InternalServer?a!==n.o.NotFound?a!==n.o.Forbidden?r.badRequest||i.Q.Ry.throw(new o.badRequest):r.forbidden||i.Q.Ry.throw(new o.forbidden.privacy):r.notFound||i.Q.Ry.throw(new o.notFound):r.internalServerError||i.Q.Ry.throw(new s._))}}},39902:(e,t,r)=>{r.d(t,{F:()=>v,f:()=>m});var n=r(32735),i=r(20354),a=r(75896);function o(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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 c(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function l(e){return l="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},l(e)}function u(e,t,r){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var d=50;function m(e,t){var r=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),n=i.a.useBasicFetchAll(r),o=a.m.flatten(n.data),c=n.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:o,items:c,isFetching:n.isFetching}}function v(e,t,r){var s,m,v,f,p=r||function(e){return"object"===l(e)?e.id:e},y=n.useRef(new Set),b=(v=n.useState([]),f=2,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(v,f)||c(v,f)||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.")}()),h=b[0],g=b[1];n.useEffect((function(){if(null==e?void 0:e.length){var r=[];e.forEach((function(e){var t=p(e);y.current.has(t)||(r.push(e),y.current.add(t))})),r.length&&g((function(e){return[].concat(o(e),o(a.m.chunk(r,d).map(t)))}))}}),[null==e?void 0:e.length]);var E=i.a.useBasicFetchAll(h),A=a.m.flatten(E.data),S=E.data.length?A.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(m=null===(s=E.responses)||void 0===s?void 0:s[0])||void 0===m?void 0:m.hasCompleted),itemsArr:A,items:S,isFetching:E.isFetching}}},91286:(e,t,r)=>{r.d(t,{v:()=>o});var n=r(32735),i=r(94644);function a(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,r){var o=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){o.forEach((function(e){(0,i.r)(e.statusCode,t,r)}))}),[a(o),t,r])}},84062:(e,t,r)=>{r.d(t,{M:()=>f});var n=r(32735),i=r(38750),a=r(38647),o=r(16714),c=r(22902),s=r(31908),l=r(26492),u=r(78166),d=r(22490),m=r(18901);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function f(e){var t,r,f=(t=n.useState(!0),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?v(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=f[0],y=f[1],b=s.M.isVideoTypeArchived(e.interactive),h=n.useMemo((function(){return(0,i.oD)()}),[]),g=(0,c.T)().hasPermissions,E=g(o.C.StudentExperience);return n.createElement("div",{className:"px-3"},b&&n.createElement(l.T,{typeId:e.interactive.typeId,hasStudentExperience:!0}),n.createElement("div",{className:"mb-3"},n.createElement(m._,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,onShowSummary:function(e){y(!e)},summaryPortalNode:h,token:e.token,publicName:e.publicName,profileId:e.profileId})),n.createElement("div",null,p&&n.createElement("h1",{className:"h3 d-flex"},e.interactive.name,!E&&n.createElement(a.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups}))),n.createElement(i.t0,{node:h}),!g(o.C.StudentExperience)&&n.createElement(u.Z,{currentVideo:e.interactive,currentUser:e.currentUser,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:function(t,r){var n,i;return d.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:null===(n=e.shareLink)||void 0===n?void 0:n.id,moviesAndTv:e.queryParams.mtv,includeContext:null===(i=e.currentUser)||void 0===i?void 0:i.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps}))}},25758:(e,t,r)=>{r.d(t,{x:()=>q});var n=r(32735),i=r(38750),a=r(23481),o=r(28400),c=r(83657),s=r(15611),l=r(49935),u=r(37929),d=r(11190),m=r(83345),v=r(38647),f=r(11518),p=r(80128),y=r(35429),b=r(5960),h=r(4594),g=r(58704),E=r(31908),A=r(47938),S=r(78166),P=r(14070),I=r(97291),w=r(10671),x=r(22490),N=r(83914),C=r(83523),V=r(36532),k=r(35223),j=a.T.encloseNamespace("interactives.previewInteractive");function T(e){return n.createElement("div",{className:"alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center",role:"alert"},e.isArchived?n.createElement("div",{className:"d-flex align-items-center"},n.createElement(N.x,{svgName:k.vn.Archive,size:N.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},j("archivedInfoTitle")),n.createElement("p",{className:"mb-1"},j("archivedInfo")))):n.createElement(m.x,{phrase:"alert"}),e.isPreviewPreventScrubbingEnabled&&n.createElement(V.u,{title:j("previewPreventScrubbingExplain"),trigger:"hover",spanHack:!0},n.createElement("div",{className:"d-flex mt-1 mt-lg-0"},n.createElement("div",{className:"me-2"},n.createElement(m.x,{phrase:"previewPreventScrubbing"})),n.createElement(C.Z,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode}))))}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var L="interactives.previewInteractive",F=a.T.encloseNamespace(L);function q(e){var t,r,a,N,C,V,k,j,q,M,R,U=(0,y.g)(),G=(M=n.useState(!1),R=2,function(e){if(Array.isArray(e))return e}(M)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(M,R)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}(M,R)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),_=G[0],D=G[1],B=E.M.getCanBeConsumed(e.interactive).canConsume,W=(0,w._)({location:w.i.PlayPage,shareId:e.shareId});C=_,V=function(){var e,t,r;null===(r=null===(t=null===(e=U.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.togglePreviewPreventScrubbing)||void 0===r||r.call(t)},n.useEffect((function(){V()}),[C]),E.M.isClip(e.sourceVideo)?(k=null===(t=e.interactives)||void 0===t?void 0:t.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),j=e.sourceVideo.name,q={application:I.O.CLIPS,action:P.e.Clips.PLAY_CLIP,args:[e.sourceVideo.id,o.m.slugify(e.sourceVideo.name)]}):(k=null===(r=e.interactives)||void 0===r?void 0:r.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),j=e.sourceVideo.name,q={application:I.O.VIDEOS,action:P.e.Videos.PLAY_VIDEO,args:[e.sourceVideo.id,o.m.slugify(e.sourceVideo.name)]});var Q=e.interactive.status===b.X.Draft;return n.createElement(m.D.Provider,{value:L},n.createElement("div",{className:"px-4"},(null===(a=e.breadcrumbs)||void 0===a?void 0:a.length)&&n.createElement("div",{className:"mb-2"},n.createElement(l.Oo,{breadcrumbs:e.breadcrumbs})),n.createElement(A.W,{restrictions:e.interactive._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.interactive.id,objectTypeId:h.E.Interactive,canManageVideoAccess:e.canManageVideoAccess}),n.createElement(T,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:_,toggleStudentMode:function(){D(!_)},isArchived:E.M.isVideoTypeArchived(e.interactive)}),n.createElement("div",{className:"mb-3"},B&&n.createElement(p.r,{key:e.interactive.id,objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:null!==(N=e.queryParams.t)&&void 0!==N?N:e.queryParams.startTime,mode:"default",location:"play-page",token:e.token})),n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",{className:"inline-block w-100"},n.createElement("div",{className:"ms-2 float-end"},n.createElement(c.e,{actions:W.getVideoActions(e.interactive),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return W.fetchMoreActions(e.interactive)}})),n.createElement("h1",{className:"h3 mb-2"},Q&&n.createElement("div",{className:"badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base"},n.createElement(m.x,{phrase:"draft"})),e.interactive.name,n.createElement(v.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.commonVideoProps.yearGroups})),E.M.canViewOriginalVideo(e.interactive)&&n.createElement("div",{className:"mb-1 me-3 clamp-1"},n.createElement(m.x,{phrase:"viewOriginal"})," ",n.createElement(s.F,{appLink:q,className:"text-info"},j)))),e.interactive.description&&n.createElement(u.D,{lines:5},(function(){return n.createElement("p",{className:"mb-0 d-inline"},e.interactive.description)})),n.createElement("div",{className:"mb-3"},n.createElement(i.t0,{node:U.questionListPortalNode})),!!(null==k?void 0:k.length)&&n.createElement("div",{className:"pb-3"},n.createElement(f.kM,{name:F("otherInteractives",{count:k.length}),contents:g.z.Interactives,collection:k,prefetched:!0,getChildAppLink:function(e){return{application:I.O.INTERACTIVES,action:P.e.Interactives.VIEW_INTERACTIVE,args:[e.id,o.m.slugify(e.name)]}},childComponent:d.K,extraChildComponentProps:{questionsAppLink:{application:I.O.INTERACTIVES,action:P.e.Interactives.PREVIEW_QUESTIONS},commonVideoProps:e.commonVideoProps},analyticsData:{widgetId:"interactives"}})),n.createElement(S.Z,{currentVideo:e.interactive,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:function(t,r){var n;return x.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(n=e.currentUser)||void 0===n?void 0:n.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})))}},58321:(e,t,r)=>{r.d(t,{U:()=>f});var n=r(20354),i=r(16714),a=r(39151),o=r(1666),c=r(31949),s=r(22902),l=r(37802),u=r(22490),d=r(82431),m=r(46390),v=r(27638);function f(e){var t,r,f,p=e||{},y=p.locationContext,b=p.mtv,h=p.flightNamespace,g=p.sharedPlaylist,E=(0,m.G)().isPlugin,A=(0,v.u)(y,h),S=A.setFavourite,P=A.canFavourite,I=(0,l.r)(null),w=I.hasTopicDirectories,x=I.isLoadingSettings,N=(0,s.T)(),C=N.hasPermissions,V=N.isLoaded,k=C(i.C.StudentExperience),j=n.a.useBasicFetch(a.L.config()),T=n.a.useBasicFetch(c.N.currentUser()),O=n.a.useBasicFetch((null===(t=T.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(T.data.customerId));return{hasCommonVideoPropsCompleted:!x&&V&&j.hasCompleted&&T.hasCompleted&&(!(null===(r=T.data)||void 0===r?void 0:r.isAuthenticated)||O.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=T.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:b}):null},isPlugin:E,canFavourite:P,setFavourite:S,imageCdnUrl:null===(f=j.data)||void 0===f?void 0:f.imageCdnUrl,yearGroups:O.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:w,companyLogoFallbackUrl:null,hasStudentExperience:k}}}},44110:(e,t,r)=>{r.d(t,{i:()=>o});var n=r(20354),i=r(89454),a=r(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,r=e.getFallbackPresentation,o=t||r();return n.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},53073:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(20354),i=r(16714),a=r(12754),o=r(31949),c=r(22902),s=r(15311);function l(){var e=(0,c.T)().hasPermissions,t=(0,s.r)().hasProduct,r=n.a.useBasicFetch(o.N.currentUser());return!e(i.C.StudentExperience)&&t(a.x.Primary)&&r.data.isAuthenticated}},97816:(e,t,r)=>{r.d(t,{V:()=>o});var n=r(1575),i=r(39902),a=r(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,i.F)(r,(function(e){return n.R.videoMixinAssocs(e,t.flightNamespace)}))}}}]);
|
|
2
|
-
//# sourceMappingURL=5135-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5135],{94644:(e,t,r)=>{r.d(t,{r:()=>u});var n=r(50242),i=r(81886),a=r(67058),o=r(14553),c=r(49267),s=r(49075),l={notFound:a.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._,internalServerError:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var a;a="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);a&&i.Q.Ry.isStatusCodeError(a)&&(a!==n.o.InternalServer?a!==n.o.NotFound?a!==n.o.Forbidden?r.badRequest||i.Q.Ry.throw(new o.badRequest):r.forbidden||i.Q.Ry.throw(new o.forbidden.privacy):r.notFound||i.Q.Ry.throw(new o.notFound):r.internalServerError||i.Q.Ry.throw(new s._))}}},39902:(e,t,r)=>{r.d(t,{F:()=>v,f:()=>m});var n=r(32735),i=r(20354),a=r(75896);function o(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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 c(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function l(e){return l="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},l(e)}function u(e,t,r){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var d=50;function m(e,t){var r=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),n=i.a.useBasicFetchAll(r),o=a.m.flatten(n.data),c=n.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:o,items:c,isFetching:n.isFetching}}function v(e,t,r){var s,m,v,f,p=r||function(e){return"object"===l(e)?e.id:e},y=n.useRef(new Set),b=(v=n.useState([]),f=2,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(v,f)||c(v,f)||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.")}()),h=b[0],g=b[1];n.useEffect((function(){if(null==e?void 0:e.length){var r=[];e.forEach((function(e){var t=p(e);y.current.has(t)||(r.push(e),y.current.add(t))})),r.length&&g((function(e){return[].concat(o(e),o(a.m.chunk(r,d).map(t)))}))}}),[null==e?void 0:e.length]);var E=i.a.useBasicFetchAll(h),A=a.m.flatten(E.data),S=E.data.length?A.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(m=null===(s=E.responses)||void 0===s?void 0:s[0])||void 0===m?void 0:m.hasCompleted),itemsArr:A,items:S,isFetching:E.isFetching}}},91286:(e,t,r)=>{r.d(t,{v:()=>o});var n=r(32735),i=r(94644);function a(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,r){var o=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){o.forEach((function(e){(0,i.r)(e.statusCode,t,r)}))}),[a(o),t,r])}},84062:(e,t,r)=>{r.d(t,{M:()=>f});var n=r(32735),i=r(38750),a=r(38647),o=r(16714),c=r(22902),s=r(31908),l=r(26492),u=r(78166),d=r(22490),m=r(18901);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function f(e){var t,r,f=(t=n.useState(!0),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?v(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=f[0],y=f[1],b=s.M.isVideoTypeArchived(e.interactive),h=n.useMemo((function(){return(0,i.oD)()}),[]),g=(0,c.T)().hasPermissions,E=g(o.C.StudentExperience);return n.createElement("div",{className:"px-3"},b&&n.createElement(l.T,{typeId:e.interactive.typeId,hasStudentExperience:!0}),n.createElement("div",{className:"mb-3"},n.createElement(m._,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,onShowSummary:function(e){y(!e)},summaryPortalNode:h,token:e.token,publicName:e.publicName,profileId:e.profileId})),n.createElement("div",null,p&&n.createElement("h1",{className:"h3 d-flex"},e.interactive.name,!E&&n.createElement(a.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups}))),n.createElement(i.t0,{node:h}),!g(o.C.StudentExperience)&&n.createElement(u.Z,{currentVideo:e.interactive,currentUser:e.currentUser,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:function(t,r){var n,i;return d.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:null===(n=e.shareLink)||void 0===n?void 0:n.id,moviesAndTv:e.queryParams.mtv,includeContext:null===(i=e.currentUser)||void 0===i?void 0:i.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps}))}},25758:(e,t,r)=>{r.d(t,{x:()=>q});var n=r(32735),i=r(38750),a=r(23481),o=r(28400),c=r(83657),s=r(15611),l=r(49935),u=r(37929),d=r(11190),m=r(83345),v=r(38647),f=r(11518),p=r(80128),y=r(35429),b=r(5960),h=r(4594),g=r(58704),E=r(31908),A=r(47938),S=r(78166),P=r(14070),I=r(97291),w=r(10671),x=r(22490),N=r(83914),C=r(83523),V=r(36532),k=r(35223),j=a.T.encloseNamespace("interactives.previewInteractive");function T(e){return n.createElement("div",{className:"alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center",role:"alert"},e.isArchived?n.createElement("div",{className:"d-flex align-items-center"},n.createElement(N.x,{svgName:k.vn.Archive,size:N.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},j("archivedInfoTitle")),n.createElement("p",{className:"mb-1"},j("archivedInfo")))):n.createElement(m.x,{phrase:"alert"}),e.isPreviewPreventScrubbingEnabled&&n.createElement(V.u,{title:j("previewPreventScrubbingExplain"),trigger:"hover",spanHack:!0},n.createElement("div",{className:"d-flex mt-1 mt-lg-0"},n.createElement("div",{className:"me-2"},n.createElement(m.x,{phrase:"previewPreventScrubbing"})),n.createElement(C.Z,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode}))))}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var L="interactives.previewInteractive",F=a.T.encloseNamespace(L);function q(e){var t,r,a,N,C,V,k,j,q,M,R,U=(0,y.g)(),G=(M=n.useState(!1),R=2,function(e){if(Array.isArray(e))return e}(M)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(M,R)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}(M,R)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),_=G[0],D=G[1],B=E.M.getCanBeConsumed(e.interactive).canConsume,W=(0,w._)({location:w.i.PlayPage,shareId:e.shareId});C=_,V=function(){var e,t,r;null===(r=null===(t=null===(e=U.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.togglePreviewPreventScrubbing)||void 0===r||r.call(t)},n.useEffect((function(){V()}),[C]),E.M.isClip(e.sourceVideo)?(k=null===(t=e.interactives)||void 0===t?void 0:t.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),j=e.sourceVideo.name,q={application:I.O.CLIPS,action:P.e.Clips.PLAY_CLIP,args:[e.sourceVideo.id,o.m.slugify(e.sourceVideo.name)]}):(k=null===(r=e.interactives)||void 0===r?void 0:r.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),j=e.sourceVideo.name,q={application:I.O.VIDEOS,action:P.e.Videos.PLAY_VIDEO,args:[e.sourceVideo.id,o.m.slugify(e.sourceVideo.name)]});var Q=e.interactive.status===b.X.Draft;return n.createElement(m.D.Provider,{value:L},n.createElement("div",{className:"px-4"},(null===(a=e.breadcrumbs)||void 0===a?void 0:a.length)&&n.createElement("div",{className:"mb-2"},n.createElement(l.Oo,{breadcrumbs:e.breadcrumbs})),n.createElement(A.W,{restrictions:e.interactive._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.interactive.id,objectTypeId:h.E.Interactive,canManageVideoAccess:e.canManageVideoAccess}),n.createElement(T,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:_,toggleStudentMode:function(){D(!_)},isArchived:E.M.isVideoTypeArchived(e.interactive)}),n.createElement("div",{className:"mb-3"},B&&n.createElement(p.r,{key:e.interactive.id,objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:null!==(N=e.queryParams.t)&&void 0!==N?N:e.queryParams.startTime,mode:"default",location:"play-page",token:e.token})),n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",{className:"inline-block w-100"},n.createElement("div",{className:"ms-2 float-end"},n.createElement(c.e,{actions:W.getVideoActions(e.interactive),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return W.fetchMoreActions(e.interactive)}})),n.createElement("h1",{className:"h3 mb-2"},Q&&n.createElement("div",{className:"badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base"},n.createElement(m.x,{phrase:"draft"})),e.interactive.name,n.createElement(v.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.commonVideoProps.yearGroups})),E.M.canViewOriginalVideo(e.interactive)&&n.createElement("div",{className:"mb-1 me-3 clamp-1"},n.createElement(m.x,{phrase:"viewOriginal"})," ",n.createElement(s.F,{appLink:q,className:"text-info"},j)))),e.interactive.description&&n.createElement(u.D,{lines:5},(function(){return n.createElement("p",{className:"mb-0 d-inline"},e.interactive.description)})),n.createElement("div",{className:"mb-3"},n.createElement(i.t0,{node:U.questionListPortalNode})),!!(null==k?void 0:k.length)&&n.createElement("div",{className:"pb-3"},n.createElement(f.kM,{name:F("otherInteractives",{count:k.length}),contents:g.z.Interactives,collection:k,prefetched:!0,getChildAppLink:function(e){return{application:I.O.INTERACTIVES,action:P.e.Interactives.VIEW_INTERACTIVE,args:[e.id,o.m.slugify(e.name)]}},childComponent:d.K,extraChildComponentProps:{questionsAppLink:{application:I.O.INTERACTIVES,action:P.e.Interactives.PREVIEW_QUESTIONS},commonVideoProps:e.commonVideoProps},analyticsData:{widgetId:"interactives"}})),n.createElement(S.Z,{currentVideo:e.interactive,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:function(t,r){var n;return x.W.getAppLink(t,Object.assign(Object.assign({},r),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(n=e.currentUser)||void 0===n?void 0:n.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})))}},58321:(e,t,r)=>{r.d(t,{U:()=>f});var n=r(20354),i=r(16714),a=r(39151),o=r(1666),c=r(31949),s=r(22902),l=r(37802),u=r(22490),d=r(82431),m=r(46390),v=r(27638);function f(e){var t,r,f,p=e||{},y=p.locationContext,b=p.mtv,h=p.flightNamespace,g=p.sharedPlaylist,E=(0,m.G)(),A=E.isPlugin,S=E.params,P=(0,v.u)(y,h),I=P.setFavourite,w=P.canFavourite,x=(0,l.r)(null),N=x.hasTopicDirectories,C=x.isLoadingSettings,V=(0,s.T)(),k=V.hasPermissions,j=V.isLoaded,T=k(i.C.StudentExperience),O=n.a.useBasicFetch(a.L.config()),L=n.a.useBasicFetch(c.N.currentUser()),F=n.a.useBasicFetch((null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(L.data.customerId));return{hasCommonVideoPropsCompleted:!C&&j&&O.hasCompleted&&L.hasCompleted&&(!(null===(r=L.data)||void 0===r?void 0:r.isAuthenticated)||F.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:b}):null},isPlugin:A,isPluginPopup:!!(null==S?void 0:S.popup),canFavourite:w,setFavourite:I,imageCdnUrl:null===(f=O.data)||void 0===f?void 0:f.imageCdnUrl,yearGroups:F.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:N,companyLogoFallbackUrl:null,hasStudentExperience:T}}}},44110:(e,t,r)=>{r.d(t,{i:()=>o});var n=r(20354),i=r(89454),a=r(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,r=e.getFallbackPresentation,o=t||r();return n.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},53073:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(20354),i=r(16714),a=r(12754),o=r(31949),c=r(22902),s=r(15311);function l(){var e=(0,c.T)().hasPermissions,t=(0,s.r)().hasProduct,r=n.a.useBasicFetch(o.N.currentUser());return!e(i.C.StudentExperience)&&t(a.x.Primary)&&r.data.isAuthenticated}},97816:(e,t,r)=>{r.d(t,{V:()=>o});var n=r(1575),i=r(39902),a=r(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,i.F)(r,(function(e){return n.R.videoMixinAssocs(e,t.flightNamespace)}))}}}]);
|
|
2
|
+
//# sourceMappingURL=5135-166ec46620-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5135-166ec46620-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/play-interactive/PlayInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/InteractiveAlertBanner.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/PreviewInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/hooks/interactiveHooks.tsx","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useShouldPreviewInteractive.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const getKey = _getKey || ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n\n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(getRequest) ]));\n }, [objs?.length]);\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey, PresentationAudience, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\ninterface PlayInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n token: AuthToken;\n config: Config;\n audiences: PresentationAudience[];\n queryParams: PlayViewQueryParams;\n viewKey: PlayerViewKey;\n startTime?: string;\n endTime?: string;\n relatedVideos: RelatedVideosHash;\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareLink?: UnionShareObject;\n sharerInstanceRegion?: string;\n checkMarkStatus?: CheckMarkStatus;\n\n publicName?: string;\n profileId?: string;\n}\n\nexport function PlayInteractive(props: PlayInteractiveProps): JSX.Element {\n const [ showHeading, setShowHeading ] = React.useState(true);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.interactive);\n\n const summaryPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const { hasPermissions } = usePermissions();\n\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n function onShowSummary(showing: boolean): void {\n setShowHeading(!showing);\n }\n\n return (\n <div className='px-3'>\n {isArchived && <ArchivedBanner typeId={props.interactive.typeId} hasStudentExperience />}\n\n <div className='mb-3'>\n <LitePlayerView\n config={props.config}\n video={props.interactive}\n currentUser={props.currentUser}\n shareLink={props.shareLink}\n viewKey={props.viewKey}\n startTime={props.startTime}\n onShowSummary={onShowSummary}\n summaryPortalNode={summaryPortalNode}\n token={props.token}\n publicName={props.publicName}\n profileId={props.profileId}\n />\n </div>\n {/* This wrapping div is here because react seems to not want to play nice\n with adding or removing a node just ahead of an OutPortal */}\n <div>\n {showHeading &&\n <h1 className='h3 d-flex'>\n {props.interactive.name}\n {!hasStudentExperience && (\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.yearGroups}\n />\n )}\n </h1>\n }\n </div>\n <OutPortal node={summaryPortalNode}></OutPortal>\n\n {!hasPermissions(PermissionName.StudentExperience) && (\n <RelatedVideos\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n relatedVideos={props.relatedVideos}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareLink?.id,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n })}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveAlertBannerProps {\n isPreviewPreventScrubbingEnabled: boolean;\n isPreviewingPreventScrubbing: boolean;\n toggleStudentMode: () => void;\n isArchived: boolean;\n}\n\nexport function InteractiveAlertBanner(props: InteractiveAlertBannerProps): JSX.Element {\n return (\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n {!props.isArchived ? <Text phrase='alert' /> : (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={cvSvgLibrary.Archive}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle')}</p>\n <p className='mb-1'>{getPhrase('archivedInfo')}</p>\n </div>\n </div>\n )}\n {props.isPreviewPreventScrubbingEnabled && (\n <Tooltip\n title={getPhrase('previewPreventScrubbingExplain')}\n trigger='hover'\n spanHack\n >\n <div className='d-flex mt-1 mt-lg-0'>\n <div className='me-2'><Text phrase='previewPreventScrubbing'/></div>\n <ToggleSwitch on={props.isPreviewingPreventScrubbing} onClick={props.toggleStudentMode} />\n </div>\n </Tooltip>\n )}\n </div>\n );\n}","import * as React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableText } from 'libs/shared/components/expandable-text/ExpandableText';\nimport { InteractiveWidgetItem } from 'libs/shared/components/play-page/interactives-widget/InteractiveWidgetItem';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { Clip, CurrentUser, Interactive, InteractiveMetadata, PresentationAudience, Video } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InteractiveAlertBanner } from 'apps/interactives/components/preview-interactive/InteractiveAlertBanner';\nimport { usePreviewPreventInteractive } from 'apps/interactives/hooks/interactiveHooks';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewInteractiveProps {\n sourceVideo: Clip | Video;\n interactive: InteractiveMetadata;\n interactives: InteractiveMetadata[];\n token?: AuthToken;\n currentUser: CurrentUser;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n isPreviewPreventScrubbingEnabled: boolean;\n relatedVideos: RelatedVideosHash;\n canManageVideoAccess: boolean;\n breadcrumbs?: Breadcrumb[];\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareId?: string;\n}\n\nexport function PreviewInteractive(props: PreviewInteractiveProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const [ isPreviewingPreventScrubbing, setIsPreviewingPreventScrubbing ] = React.useState(false);\n\n const { canConsume } = VideoHelper.getCanBeConsumed(props.interactive);\n\n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n usePreviewPreventInteractive(isPreviewingPreventScrubbing, togglePreviewPreventScrubbing);\n\n function togglePreviewPreventScrubbing() {\n playerContext.playerRef?.current?.togglePreviewPreventScrubbing?.();\n }\n\n function toggleStudentMode() {\n setIsPreviewingPreventScrubbing(!isPreviewingPreventScrubbing);\n }\n \n let otherInteractives: InteractiveMetadata[];\n let backToName: string;\n let backAppLink: Core.AppLink;\n\n if (VideoHelper.isClip(props.sourceVideo)) {\n otherInteractives = props.interactives?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = props.sourceVideo.name;\n backAppLink = {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ props.sourceVideo.id, TextHelper.slugify(props.sourceVideo.name) ]\n };\n } else {\n otherInteractives = props.interactives?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = props.sourceVideo.name;\n backAppLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.sourceVideo.id, TextHelper.slugify(props.sourceVideo.name) ]\n };\n }\n\n const isDraft = props.interactive.status === CurationStatus.Draft;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-4'>\n {props.breadcrumbs?.length &&\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n\n <RestrictionBanner\n restrictions={props.interactive._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.interactive.id}\n objectTypeId={MasterType.Interactive}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n <InteractiveAlertBanner\n isPreviewPreventScrubbingEnabled={props.isPreviewPreventScrubbingEnabled}\n isPreviewingPreventScrubbing={isPreviewingPreventScrubbing}\n toggleStudentMode={toggleStudentMode}\n isArchived={VideoHelper.isVideoTypeArchived(props.interactive)}\n />\n\n <div className='mb-3'>\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.interactive.id}\n objectId={props.interactive.id}\n objectTypeId={props.interactive.typeId}\n shareId={props.shareId}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n mode='default'\n location='play-page'\n token={props.token}\n />\n )}\n </div>\n <div className='d-flex justify-content-between align-items-center'>\n <div className='inline-block w-100'>\n <div className='ms-2 float-end'>\n <ActionsComponent\n actions={videoActions.getVideoActions(props.interactive)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.interactive)}\n />\n </div>\n\n <h1 className='h3 mb-2'>\n {isDraft && (\n <div className={`badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base`}>\n <Text phrase='draft' />\n </div>\n )}\n {props.interactive.name}\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.commonVideoProps.yearGroups}\n />\n </h1>\n {VideoHelper.canViewOriginalVideo(props.interactive) &&\n <div className='mb-1 me-3 clamp-1'>\n <Text phrase='viewOriginal' /> <AppLink appLink={backAppLink} className='text-info'>{backToName}</AppLink>\n </div>\n }\n </div>\n </div>\n\n {props.interactive.description && (\n <ExpandableText lines={5}>\n {() => <p className='mb-0 d-inline'>{props.interactive.description}</p>}\n </ExpandableText>\n )}\n\n <div className='mb-3'>\n <OutPortal node={playerContext.questionListPortalNode}></OutPortal>\n </div>\n\n {!!otherInteractives?.length && (\n <div className='pb-3'>\n \n <FixedWidget\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n commonVideoProps: props.commonVideoProps\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n <RelatedVideos\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n audiences={props.audiences}\n relatedVideos={props.relatedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n })}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nexport function usePreviewPreventInteractive(\n previewPreventInteractive: boolean,\n togglePreviewPreventInteractive: () => void\n): void {\n React.useEffect(() => {\n togglePreviewPreventInteractive();\n }, [previewPreventInteractive]);\n}","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin, params } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n isPluginPopup: !!params?.popup,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nexport function useShouldPreviewInteractive() {\n const { hasPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return !hasPermissions(PermissionName.StudentExperience) &&\n hasProduct(ProductId.Primary) &&\n currentUser.data.isAuthenticated;\n}","import { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","key","current","has","push","add","r","hasFirstRequestCompleted","hasCompleted","generateCacheKey","flightObjs","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","PlayInteractive","props","showHeading","setShowHeading","isArchived","interactive","summaryPortalNode","hasPermissions","hasStudentExperience","className","typeId","config","video","currentUser","shareLink","viewKey","startTime","onShowSummary","showing","token","publicName","profileId","name","tooltipPlacement","yearGroups","node","currentVideo","relatedVideos","audiences","getVideoAppLink","v","opts","context","queryParams","contextId","playNext","shareId","moviesAndTv","mtv","includeContext","isAuthenticated","commonVideoProps","getPhrase","LanguageService","InteractiveAlertBanner","role","SvgContainer","svgName","size","S","Text","phrase","isPreviewPreventScrubbingEnabled","Tooltip","title","trigger","spanHack","ToggleSwitch","on","isPreviewingPreventScrubbing","onClick","toggleStudentMode","PreviewInteractive","previewPreventInteractive","togglePreviewPreventInteractive","otherInteractives","backToName","backAppLink","playerContext","setIsPreviewingPreventScrubbing","canConsume","VideoHelper","videoActions","useVideoActions","location","playerRef","togglePreviewPreventScrubbing","sourceVideo","interactives","filter","i","toString","application","action","args","TextHelper","isDraft","CurationStatus","value","breadcrumbs","Breadcrumbs","RestrictionBanner","restrictions","_restrictions","objectId","objectTypeId","MasterType","canManageVideoAccess","GlobalPlayerConsumer","t","mode","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","RestrictionPadlock","AppLink","appLink","description","ExpandableText","lines","questionListPortalNode","count","contents","WidgetContents","collection","prefetched","getChildAppLink","childComponent","InteractiveWidgetItem","extraChildComponentProps","questionsAppLink","analyticsData","widgetId","RelatedVideos","VideoAppLinkHelper","useCommonVideoProps","options","locationContext","flightNamespace","sharedPlaylist","isPlugin","params","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","customerId","hasCommonVideoPropsCompleted","subTextType","getSubTextAppLink","series","isPluginPopup","popup","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","useShouldPreviewInteractive","hasProduct","useVideoMixin","objects","videoIds","o","getValidObjects","ids"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5143],{61807:(e,t,n)=>{n.d(t,{L:()=>u});var a=n(32735),r=n(81886),i=n(23481),c=n(65858),s=n(38502),o="settings.domainSettingsTabs",l=i.T.encloseNamespace(o);function u(e){var t=e.active,n=e.appLinks;return a.createElement("div",{className:"mb-3"},a.createElement(s.r,{tabs:[{name:l("requestingAccess"),appLink:n.requestingAccess,active:"requesting-access"===t,analyticsData:{name:l("requestingAccess"),url:r.Q.C$.getHref(n.requestingAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:l("teacherInvites"),appLink:n.teacherInvites,active:"teacher-invites"===t,analyticsData:{name:i.T.getPhrase(o,"teacherInvites"),url:r.Q.C$.getHref(n.teacherInvites)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:l("automaticAccess"),appLink:n.automaticAccess,active:"automatic-access"===t,analyticsData:{name:i.T.getPhrase(o,"automaticAccess"),url:r.Q.C$.getHref(n.automaticAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}}]}))}},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),i=n(15611),c=n(18559),s=n(11607),o=n(83914),l=n(22771);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(o.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(c.C,{type:c.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(s.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},24833:(e,t,n)=>{var a;n.d(t,{C:()=>a}),function(e){e.RequestingAccess="requestingAccess",e.TeacherInvites="teacherInvites",e.AutomaticAccess="automaticAccess"}(a||(a={}))},81803:(e,t,n)=>{n.d(t,{d:()=>d});var a=n(32735),r=n(81886),i=n(23481),c=n(49935),s=n(22902),o=n(14070),l=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="settings.settingsLayout",f=function(e){var t=(0,s.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var a=r.Q.C$.getCurrentAppLink();return a.application!==l.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===a.action}))}))};function d(e){var t,n=f(e.requiredPermissions);if(a.useEffect((function(){n||r.Q.C$.trigger({application:l.O.SETTINGS,action:o.e.Settings.HOME},{replace:!0})}),[n]),!n)return a.createElement(a.Fragment,null);var s,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:l.O.SETTINGS,action:o.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return a.createElement("div",{className:"px-3"},a.createElement("div",{className:"d-flex align-items-center justify-content-between"},a.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),a.createElement("div",{className:"pb-3"},a.createElement(c.Oo,{breadcrumbs:[{name:i.T.getPhrase(p,"settingsBreadcrumb"),appLink:{application:l.O.SETTINGS,action:o.e.Settings.HOME}}].concat((s=u,function(e){if(Array.isArray(e))return m(e)}(s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(s)||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.")}()))})),e.description&&a.createElement(a.Fragment,null,a.createElement("p",null,e.description),a.createElement("hr",null)),e.children)}},68598:(e,t,n)=>{n.d(t,{W:()=>o});var a=n(24833),r=n(14070),i=n(97291);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 s(e,t,n){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 n=t.call(e,"string");if("object"!=c(n))return n;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:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=s(s(s({},a.C.RequestingAccess,{application:i.O.SETTINGS,action:r.e.Settings.REQUESTING_ACCESS}),a.C.TeacherInvites,{application:i.O.SETTINGS,action:r.e.Settings.TEACHER_INVITES}),a.C.AutomaticAccess,{application:i.O.SETTINGS,action:r.e.Settings.AUTOMATIC_ACCESS})},96268:(e,t,n)=>{n.d(t,{W:()=>l});var a=n(32735),r=n(81886),i=n(65858),c=n(37802),s=n(14070),o=n(97291);function l(){var e=(0,c.r)(i.LZ.Settings),t=e.isLoadingSettings,n=e.domainSettings;a.useEffect((function(){t||n||r.Q.C$.trigger({application:o.O.SETTINGS,action:s.e.Settings.HOME},{replace:!0})}),[n,t])}},45143:(e,t,n)=>{n.r(t),n.d(t,{TeacherInvitesView:()=>N});var a=n(32735),r=n(23481),i=n(20354),c=n(65858),s=n(83345),o=n(83523),l="settings.domainSettingsInvitesToggle";function u(e){var t=e.allowInvites,n=e.onToggleInvites;return a.createElement("div",{className:"col-12 col-md-7 card p-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("p",{className:"fw-semibold"},a.createElement(s.x,{namespace:l,phrase:"invitesLabel"})),a.createElement(o.Z,{onClick:n,on:t})),a.createElement("p",null,a.createElement(s.x,{namespace:l,phrase:"invitesDescription"})),a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded p-2 bg-light-blue text-info fw-semibold"},a.createElement(s.x,{namespace:l,phrase:t?"invitesInfoMessage":"noInvitesInfoMessage"}))))}var m=n(61807),p=n(16714),f=n(77963),d=n(65728),v=n(31949),g=n(69883),b=n(79612),y=n(37802),E=n(81803),S=n(68598),h=n(96268);function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var A="settings.teacherInvites",I=r.T.encloseNamespace(A);function N(){(0,h.W)(),(0,b.M)({title:I("pageTitle")});var e,t,n=i.a.useBasicFetch(v.N.currentUser()).data.customerId,r=(0,y.r)(c.LZ.Settings),o=r.inviteColleague,l=r.updateSetting,N=r.isLoadingSettings,k=(0,g.Z)(),C=(e=a.useState(o),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,c,s=[],o=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(e){l=!0,r=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(l)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return T(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)?T(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.")}()),L=C[0],O=C[1];return a.useEffect((function(){N||O(o)}),[o,N]),N?a.createElement(a.Fragment,null):a.createElement(E.d,{heading:I("heading"),breadcrumbs:[I("breadcrumb")],requiredPermissions:p.C.ManageUsers},a.createElement(m.L,{active:"teacher-invites",appLinks:S.W}),a.createElement("p",null,a.createElement(s.x,{namespace:A,phrase:"description"})),a.createElement(u,{allowInvites:L,onToggleInvites:function(){var e={name:d.E.InviteColleague,value:!L,kind:f.g.
|
|
2
|
-
//# sourceMappingURL=5143-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5143],{61807:(e,t,n)=>{n.d(t,{L:()=>u});var a=n(32735),r=n(81886),i=n(23481),c=n(65858),s=n(38502),o="settings.domainSettingsTabs",l=i.T.encloseNamespace(o);function u(e){var t=e.active,n=e.appLinks;return a.createElement("div",{className:"mb-3"},a.createElement(s.r,{tabs:[{name:l("requestingAccess"),appLink:n.requestingAccess,active:"requesting-access"===t,analyticsData:{name:l("requestingAccess"),url:r.Q.C$.getHref(n.requestingAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:l("teacherInvites"),appLink:n.teacherInvites,active:"teacher-invites"===t,analyticsData:{name:i.T.getPhrase(o,"teacherInvites"),url:r.Q.C$.getHref(n.teacherInvites)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:l("automaticAccess"),appLink:n.automaticAccess,active:"automatic-access"===t,analyticsData:{name:i.T.getPhrase(o,"automaticAccess"),url:r.Q.C$.getHref(n.automaticAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}}]}))}},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),i=n(15611),c=n(18559),s=n(11607),o=n(83914),l=n(22771);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(o.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(c.C,{type:c.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(s.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},24833:(e,t,n)=>{var a;n.d(t,{C:()=>a}),function(e){e.RequestingAccess="requestingAccess",e.TeacherInvites="teacherInvites",e.AutomaticAccess="automaticAccess"}(a||(a={}))},81803:(e,t,n)=>{n.d(t,{d:()=>d});var a=n(32735),r=n(81886),i=n(23481),c=n(49935),s=n(22902),o=n(14070),l=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="settings.settingsLayout",f=function(e){var t=(0,s.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var a=r.Q.C$.getCurrentAppLink();return a.application!==l.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===a.action}))}))};function d(e){var t,n=f(e.requiredPermissions);if(a.useEffect((function(){n||r.Q.C$.trigger({application:l.O.SETTINGS,action:o.e.Settings.HOME},{replace:!0})}),[n]),!n)return a.createElement(a.Fragment,null);var s,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:l.O.SETTINGS,action:o.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return a.createElement("div",{className:"px-3"},a.createElement("div",{className:"d-flex align-items-center justify-content-between"},a.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),a.createElement("div",{className:"pb-3"},a.createElement(c.Oo,{breadcrumbs:[{name:i.T.getPhrase(p,"settingsBreadcrumb"),appLink:{application:l.O.SETTINGS,action:o.e.Settings.HOME}}].concat((s=u,function(e){if(Array.isArray(e))return m(e)}(s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(s)||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.")}()))})),e.description&&a.createElement(a.Fragment,null,a.createElement("p",null,e.description),a.createElement("hr",null)),e.children)}},68598:(e,t,n)=>{n.d(t,{W:()=>o});var a=n(24833),r=n(14070),i=n(97291);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 s(e,t,n){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 n=t.call(e,"string");if("object"!=c(n))return n;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:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=s(s(s({},a.C.RequestingAccess,{application:i.O.SETTINGS,action:r.e.Settings.REQUESTING_ACCESS}),a.C.TeacherInvites,{application:i.O.SETTINGS,action:r.e.Settings.TEACHER_INVITES}),a.C.AutomaticAccess,{application:i.O.SETTINGS,action:r.e.Settings.AUTOMATIC_ACCESS})},96268:(e,t,n)=>{n.d(t,{W:()=>l});var a=n(32735),r=n(81886),i=n(65858),c=n(37802),s=n(14070),o=n(97291);function l(){var e=(0,c.r)(i.LZ.Settings),t=e.isLoadingSettings,n=e.domainSettings;a.useEffect((function(){t||n||r.Q.C$.trigger({application:o.O.SETTINGS,action:s.e.Settings.HOME},{replace:!0})}),[n,t])}},45143:(e,t,n)=>{n.r(t),n.d(t,{TeacherInvitesView:()=>N});var a=n(32735),r=n(23481),i=n(20354),c=n(65858),s=n(83345),o=n(83523),l="settings.domainSettingsInvitesToggle";function u(e){var t=e.allowInvites,n=e.onToggleInvites;return a.createElement("div",{className:"col-12 col-md-7 card p-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("p",{className:"fw-semibold"},a.createElement(s.x,{namespace:l,phrase:"invitesLabel"})),a.createElement(o.Z,{onClick:n,on:t})),a.createElement("p",null,a.createElement(s.x,{namespace:l,phrase:"invitesDescription"})),a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded p-2 bg-light-blue text-info fw-semibold"},a.createElement(s.x,{namespace:l,phrase:t?"invitesInfoMessage":"noInvitesInfoMessage"}))))}var m=n(61807),p=n(16714),f=n(77963),d=n(65728),v=n(31949),g=n(69883),b=n(79612),y=n(37802),E=n(81803),S=n(68598),h=n(96268);function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var A="settings.teacherInvites",I=r.T.encloseNamespace(A);function N(){(0,h.W)(),(0,b.M)({title:I("pageTitle")});var e,t,n=i.a.useBasicFetch(v.N.currentUser()).data.customerId,r=(0,y.r)(c.LZ.Settings),o=r.inviteColleague,l=r.updateSetting,N=r.isLoadingSettings,k=(0,g.Z)(),C=(e=a.useState(o),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,c,s=[],o=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(e){l=!0,r=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(l)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return T(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)?T(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.")}()),L=C[0],O=C[1];return a.useEffect((function(){N||O(o)}),[o,N]),N?a.createElement(a.Fragment,null):a.createElement(E.d,{heading:I("heading"),breadcrumbs:[I("breadcrumb")],requiredPermissions:p.C.ManageUsers},a.createElement(m.L,{active:"teacher-invites",appLinks:S.W}),a.createElement("p",null,a.createElement(s.x,{namespace:A,phrase:"description"})),a.createElement(u,{allowInvites:L,onToggleInvites:function(){var e={name:d.E.InviteColleague,value:!L,kind:f.g.Setting};l(n,e,(function(){k.success(I("successAlert")),O(!L)}),(function(){return k.error(I("errorAlert"))}))}}))}},22771:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
2
|
+
//# sourceMappingURL=5143-d6c4a357ea-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5143-d6c4a357ea-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/domain-settings/domain-settings-tabs/DomainSettingsTabs.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/AccessSettingsGroup.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/constants/AccessSettingsAppLinks.ts","file:///app/packages/projects/lite/src/apps/settings/hooks/useDomainSettingsSwitch.ts","file:///app/packages/libs/shared/src/apps/domain-settings/domain-settings-invites-toggle/DomainSettingsInvitesToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/teacher-invites/TeacherInvitesView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { AccessSettingAppLinks } from 'libs/shared/interfaces/domains/AccessSettingAppLinks';\n\nconst namespace = 'settings.domainSettingsTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DomainSettingsTabsProps {\n active: 'requesting-access' | 'teacher-invites' | 'automatic-access',\n appLinks: AccessSettingAppLinks\n}\n\nexport function DomainSettingsTabs(props: DomainSettingsTabsProps): JSX.Element {\n const { active, appLinks } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('requestingAccess'),\n appLink: appLinks.requestingAccess,\n active: active === 'requesting-access',\n analyticsData: {\n name: getPhrase('requestingAccess'),\n url: Core.AppLinkHelper.getHref(appLinks.requestingAccess)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('teacherInvites'),\n appLink: appLinks.teacherInvites,\n active: active === 'teacher-invites',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'teacherInvites'),\n url: Core.AppLinkHelper.getHref(appLinks.teacherInvites)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('automaticAccess'),\n appLink: appLinks.automaticAccess,\n active: active === 'automatic-access',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'automaticAccess'),\n url: Core.AppLinkHelper.getHref(appLinks.automaticAccess)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum AccessSettingsGroup {\n RequestingAccess = 'requestingAccess',\n TeacherInvites = 'teacherInvites',\n AutomaticAccess = 'automaticAccess'\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\n\nimport { AccessSettingsGroup } from 'libs/shared/enums/AccessSettingsGroup';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport const AccessSettingsAppLinks: { [key in AccessSettingsGroup]: Core.AppLink } = {\n [AccessSettingsGroup.RequestingAccess]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n },\n [AccessSettingsGroup.TeacherInvites]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TEACHER_INVITES\n },\n [AccessSettingsGroup.AutomaticAccess]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.AUTOMATIC_ACCESS\n }\n};\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function useDomainSettingsSwitch() {\n const { isLoadingSettings, domainSettings } = useSettings(LocationContext.Settings);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n if (!domainSettings) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [ domainSettings, isLoadingSettings ]);\n}\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nconst namespace = 'settings.domainSettingsInvitesToggle';\n\ninterface DomainSettingsInvitesToggleProps {\n allowInvites: boolean,\n onToggleInvites: () => void\n}\n\nexport function DomainSettingsInvitesToggle(props: DomainSettingsInvitesToggleProps) {\n const { allowInvites, onToggleInvites } = props;\n\n return (\n <div className='col-12 col-md-7 card p-3'>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold'>\n <Text namespace={namespace} phrase='invitesLabel' />\n </p>\n <ToggleSwitch\n onClick={onToggleInvites}\n on={allowInvites}\n ></ToggleSwitch>\n </div>\n\n <p>\n <Text namespace={namespace} phrase='invitesDescription' />\n </p>\n\n <div className='d-flex'>\n <div className='rounded p-2 bg-light-blue text-info fw-semibold'>\n <Text namespace={namespace} phrase={allowInvites ? 'invitesInfoMessage' : 'noInvitesInfoMessage'} />\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { DomainSettingsInvitesToggle } from 'libs/shared/apps/domain-settings/domain-settings-invites-toggle/DomainSettingsInvitesToggle';\nimport { DomainSettingsTabs } from 'libs/shared/apps/domain-settings/domain-settings-tabs/DomainSettingsTabs';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { UpdateSettingRequest } from 'libs/shared/flight-requests/SettingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { AccessSettingsAppLinks } from 'apps/settings/constants/AccessSettingsAppLinks';\nimport { useDomainSettingsSwitch } from 'apps/settings/hooks/useDomainSettingsSwitch';\n\nconst namespace = 'settings.teacherInvites';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TeacherInvitesView() {\n useDomainSettingsSwitch();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { customerId } = currentUser.data;\n const { inviteColleague, updateSetting, isLoadingSettings } = useSettings(LocationContext.Settings);\n const alerts = useAlerts();\n const [ allowInvites, setAllowInvites ] = React.useState(inviteColleague);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n setAllowInvites(inviteColleague);\n }, [ inviteColleague, isLoadingSettings ]);\n\n function onToggleInvites() {\n const newSetting: UpdateSettingRequest<boolean> = {\n name: SettingName.InviteColleague,\n value: !allowInvites,\n kind: SettingKind.Setting\n };\n\n updateSetting(\n customerId,\n newSetting,\n () => {\n alerts.success(getPhrase('successAlert'));\n setAllowInvites(!allowInvites);\n },\n () => alerts.error(getPhrase('errorAlert'))\n );\n }\n\n if (isLoadingSettings) {\n return <></>;\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n requiredPermissions={PermissionName.ManageUsers}\n >\n <DomainSettingsTabs active='teacher-invites' appLinks={AccessSettingsAppLinks}/>\n\n <p>\n <Text namespace={namespace} phrase='description' />\n </p>\n\n <DomainSettingsInvitesToggle\n allowInvites={allowInvites}\n onToggleInvites={onToggleInvites}\n />\n </SettingsLayout>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","getPhrase","DomainSettingsTabs","props","active","appLinks","className","tabs","name","appLink","requestingAccess","analyticsData","url","analyticsOptions","actionType","entity","location","teacherInvites","automaticAccess","TabContents","tab","svgName","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","AccessSettingsGroup","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","breadcrumbs","i","length","heading","headingButton","description","children","AccessSettingsAppLinks","useDomainSettingsSwitch","isLoadingSettings","domainSettings","DomainSettingsInvitesToggle","allowInvites","onToggleInvites","Text","phrase","ToggleSwitch","on","LanguageService","TeacherInvitesView","useSetPageMetadata","title","customerId","UserRequests","useSettings","inviteColleague","updateSetting","alerts","setAllowInvites","PermissionName","newSetting","SettingName","value","kind","SettingKind","Setting","success","error"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5743],{45465:(e,t,n)=>{n.d(t,{ed:()=>r.e,cQ:()=>m.c,i:()=>f,RP:()=>v});var r=n(8835),a=n(32735);n(15611);var c=n(75896),l=n(70154),i=n(86764),s=n(81514),u=n(34644),o=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function d(e){var t=a.useContext(l.x),n=t.expandedSubject,r=t.selectedSubjects;return a.createElement(a.Fragment,null,e.subjects.map((function(t){var c=function(e,t){return!(!t||e.id===t.id||t.children.find((function(t){return t.id===e.id})))}(t,n),l=e.onSelect;return t.isExpandableOption&&(l=e.onExpand),c&&(l=e.onCollapse),e.hasSelectedBulk&&(l=function(){}),a.createElement(v,{key:t.id,subject:t,selected:!e.hasSelectedBulk&&r.includes(t.id),disabled:e.hasSelectedBulk||c,onClick:function(){return l(t)},hasSelectedBulk:e.hasSelectedBulk})})))}function f(e){var t=e.subjects,n=e.hasSelectedBulk,r=o(e,["subjects","hasSelectedBulk"]),m=a.useContext(l.x).expandedSubject,p=function(){switch((0,s.V)()){case i.r.LG:default:return 5;case i.r.MD:return 4;case i.r.SM:return 3;case i.r.XS:return 2}}(),b=t.reduce((function(e,t,n){return n%p==0?e.push([t]):c.m.last(e).push(t),e}),[]);return a.createElement("ul",{className:u.Z.grid},b.map((function(e,t){var c=m&&!!e.find((function(e){return m.id===e.id&&e.isExpandableOption}));return a.createElement(a.Fragment,{key:t},a.createElement(d,Object.assign({subjects:e,hasSelectedBulk:n},r)),c&&a.createElement("li",{className:"".concat(u.Z.subgrid," m-0")},a.createElement(f,Object.assign({subjects:m.children,hasSelectedBulk:n},r))))})))}var m=n(88346),p=n(36532),b=n(54610),h=n(67453);function v(e){var t,n,r=a.useContext(l.x),c=e.subject.cover?h.j.createUrl(e.subject.cover.url,{size:b.h2.Small}):"",i=e.subject.isExpandableOption?e.subject.children.map((function(e){return e.id})):[],s=e.hasSelectedBulk?0:null===(t=null==r?void 0:r.selectedSubjects)||void 0===t?void 0:t.filter((function(e){return i.includes(e)})).length,u=a.createElement(m.c,{name:e.subject.name,imageUrl:c,onClick:e.onClick,isSelected:e.selected,isDisabled:e.disabled,isExpandable:e.subject.isExpandableOption,expand:(null===(n=null==r?void 0:r.expandedSubject)||void 0===n?void 0:n.id)===e.subject.id,selectedChildCount:s,extraClasses:e.extraClasses,hideStatus:e.hideStatus});return e.disabled?a.createElement("span",null,u):a.createElement(p.u,{title:e.subject.name},a.createElement("span",null,u))}},88346:(e,t,n)=>{n.d(t,{c:()=>u});var r=n(32735),a=n(83914),c=n(35223);const l={preferenceItem:"PSWHa",expandCaret:"CCsqs",up:"w7N1R",down:"mO0Kn",disabled:"Oyw2x",selected:"Czk2N",noBorder:"_e7oe",textBox:"pfksF",itemStatus:"H4u81",unchecked:"iYkPv",green:"w5g0e"};var i=function(e){return e.selectedChildrenCount?r.createElement("div",{className:"".concat(l.itemStatus," ").concat(l.green)},e.selectedChildrenCount):r.createElement(r.Fragment,null)},s=function(e){var t;return t=e.selected?r.createElement(a.x,{svgName:c.vn.Check}):e.radioButton?r.createElement(r.Fragment,null," "):r.createElement(a.x,{svgName:c.vn.Plus}),r.createElement("div",{className:"".concat(l.itemStatus," ").concat(e.selected?l.green:l.unchecked)},t)};function u(e){var t,n="".concat(l.expandCaret," ").concat(e.expand?l.up:l.down);return r.createElement("li",{className:(t="rounded-3 ".concat(l.preferenceItem),e.extraClasses&&(t+=" "+e.extraClasses),e.isDisabled&&(t+=" "+l.disabled),e.isSelected&&!e.isExpandable&&(t+=" "+l.selected),e.hideStatus&&(t+=" "+l.noBorder),t),onClick:e.onClick,"aria-checked":e.isSelected,"aria-haspopup":e.isExpandable,role:e.isExpandable?"button":"checkbox",style:{backgroundImage:"url(".concat(e.imageUrl,")")},tabIndex:0,title:e.name},r.createElement("div",{className:"".concat(l.textBox," p-2")},r.createElement("p",{className:"clamp-2 mb-0"},e.name,r.createElement("span",{className:e.isExpandable?n:""})),!e.hideStatus&&r.createElement(r.Fragment,null,e.isExpandable?r.createElement(i,{selectedChildrenCount:e.selectedChildCount}):r.createElement(s,{selected:e.isSelected,radioButton:e.radioButton}))))}},42162:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(32735),a=n(34644);const c={partialSubject:"KQYyH",lg:"KiWap",partialSubjectList:"Ng80C"};function l(e){var t="grid"===e.style?a.Z.grid:c.partialSubjectList;return r.createElement("div",{className:"p-3"},r.createElement("ul",{className:"".concat(t," ").concat(e.center?"justify-content-center":"")},Array(e.count).fill(null).map((function(t,n){return r.createElement("li",{key:n,className:"".concat(c.partialSubject," partial-loading-background rounded-3 ").concat("lg"===e.size?c.lg:"")})}))))}l.defaultProps={size:"sm"}},70154:(e,t,n)=>{n.d(t,{x:()=>r});var r=(0,n(32735).createContext)(void 0)},60836:(e,t,n)=>{n.d(t,{j:()=>c});var r=n(32735);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=function(e){var t,n,c=(t=r.useState(1),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 r,a,c,l,i=[],s=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw a}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],i=c[1];return r.useEffect((function(){l>0||e()}),[l]),[function(){i((function(e){return e-1}))},i]}},6972:(e,t,n)=>{n.r(t),n.d(t,{TopicPreferencesView:()=>T});var r=n(32735),a=n(70680),c=n(23481),l=n(20354),i=n(65858),s=n(42162),u=n(81886),o=n(75896),d=n(45465),f=n(70154),m=n(49602),p=n(15611),b=n(2102),h=n(83345),v=n(83523),g=n(69883),S=n(60836);function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c,l,i=[],s=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw a}}return i}}(e,t)||x(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 y(e){return function(e){if(Array.isArray(e))return j(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||x(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 x(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var k="subjects.topicPreferences";function C(e){var t,n=E(r.useState([]),2),a=n[0],l=n[1],i=E(r.useState(null),2),s=i[0],x=i[1],j=E(r.useState(e.bulkPreferencesState),2),C=j[0],O=j[1],B=E(r.useState(!1),2),P=B[0],w=B[1],N=(0,g.Z)(),A=m.b.hasBulkSelectedTopics(C);r.useEffect((function(){var t;(null===(t=e.preselections)||void 0===t?void 0:t.length)?l(o.m.uniq([].concat(y(a),y(e.preselections.map((function(e){return e.id})))))):l([])}),[null===(t=e.preselections)||void 0===t?void 0:t.length]);var I=E((0,S.j)((function(){w(!1),e.isOnboarding||N.success(c.T.getPhrase(k,"success")),e.nextAppLink&&u.Q.C$.trigger(e.nextAppLink)})),2),F=I[0],L=I[1];function T(t){return!!e.preselections&&e.preselections.map((function(e){return e.id})).sort().toString()!==t.sort().toString()}function Z(){return e.bulkPreferencesState!==C}function U(){if(!a.length&&!A)return!1;var t=Z()||T(a);return!(!e.isOnboarding&&!t)}function M(){var e=m.b.getNextBulkState(C,"topics");x(null),O(e)}var _=function(e){if(!(null==e?void 0:e.length))return[];var t=[];return e.forEach((function(e){e.children&&e.children.length?t.push(Object.assign(Object.assign({},e),{isExpandableOption:!0,children:[Object.assign({},e)].concat(y(e.children))})):t.push(Object.assign({},e))})),t}(e.options);return r.createElement(h.D.Provider,{value:k},r.createElement("form",{className:"p-3 pb-5"},r.createElement("div",{className:"position-relative"},r.createElement(f.x.Provider,{value:{selectedSubjects:a,expandedSubject:s}},r.createElement(d.i,{subjects:_,onSelect:function(e){var t=o.m.addOrRemoveImmutable(a,e.id);l(t)},onExpand:function(e){x(s&&s.id===e.id?null:e)},onCollapse:function(){x(null)},hasSelectedBulk:A}))),r.createElement(d.ed,null,r.createElement("div",null,!!e.backButtonAppLink&&r.createElement(p.F,{appLink:e.backButtonAppLink,className:"btn btn-outline-dark"},r.createElement(h.x,{phrase:"back"}))),r.createElement("div",{className:"d-flex align-items-center justify-content-end"},r.createElement("div",{className:"d-flex me-3"},r.createElement("p",{onClick:M,className:"me-2 mb-0 fw-bold"},r.createElement(h.x,{phrase:"allSubjects"})),r.createElement(v.Z,{onClick:M,on:A,hideOutline:!0})),r.createElement(b.m,{variant:"dark",disabled:!U(),onClick:function(){if(U())if(T(a)||Z()){w(!0);var t=a.filter((function(t){return!e.preselections.find((function(e){return e.id===t}))})),n=e.preselections.filter((function(e){return!a.includes(e.id)})),r=0;t.length&&r++,n.length&&r++,Z()&&r++,L(r),e.saveChanges(t,n,C,F,(function(){N.error(c.T.getPhrase(k,"error")),w(!1)}))}else e.nextAppLink&&u.Q.C$.trigger(e.nextAppLink)},showSpinner:P},r.createElement(h.x,{phrase:e.isOnboarding?"next":"save"}))))))}var O=n(61699),B=n(77963),P=n(65728),w=n(31949),N=n(79612),A=n(37802),I=n(330),F="settings.topicPreferences",L=c.T.encloseNamespace(F);function T(){var e=l.a.useBasicFetch(w.N.currentUser());(0,N.M)({title:L("pageTitle")});var t,n,c=l.a.useBasicFetch(O.o.availablePresentations()),u=l.a.useBasicFetch(O.o.allLevelPreferences()),o=(t=function(e){return e?e.filter((function(e){return e.canBePreferred})):[]},n=l.a.useBasicFetch(O.o.mySubjectPreferences((function(e){}))),Object.assign(Object.assign({},n),{isFetching:n.isFetching,data:t(n.data)})),d=l.a.useBasicFetch(O.o.allSubjectPreferences()),f=(0,A.r)(i.LZ.PreferencesSettings),m=f.bulkOnboardingPreferencesState,p=f.isLoadingSettings,b=f.updateSetting,v=(0,a.I0)(),g=!!d.hasCompleted&&!!o.hasCompleted&&!p;return r.createElement(I.T,{availablePresentations:c.data,audiences:u.data},r.createElement("p",{className:"mt-3"},r.createElement(h.x,{namespace:F,phrase:"info"})),g?r.createElement(C,{options:d.data,preselections:o.data,bulkPreferencesState:m,saveChanges:function(t,n,r,a,c){if(r!==m){var i={name:P.E.BulkOnboardingPreferencesState,value:r,kind:B.g.Permanent};b(e.data.id,i,a,c)}(null==t?void 0:t.length)&&l.a.fetch(v,O.o.followSubjects(t,a,c)),(null==n?void 0:n.length)&&l.a.fetch(v,O.o.unfollowSubjects(n.map((function(e){return e.id})),a,c))}}):r.createElement(s.A,{count:7,style:"grid"}))}},34644:(e,t,n)=>{n.d(t,{Z:()=>r});const r={grid:"X9r1Y",subgrid:"TgYhp"}}}]);
|
|
2
|
-
//# sourceMappingURL=5743-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5743],{45465:(e,t,n)=>{n.d(t,{ed:()=>r.e,cQ:()=>m.c,i:()=>f,RP:()=>v});var r=n(8835),a=n(32735);n(15611);var c=n(75896),l=n(70154),i=n(86764),s=n(81514),u=n(34644),o=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function d(e){var t=a.useContext(l.x),n=t.expandedSubject,r=t.selectedSubjects;return a.createElement(a.Fragment,null,e.subjects.map((function(t){var c=function(e,t){return!(!t||e.id===t.id||t.children.find((function(t){return t.id===e.id})))}(t,n),l=e.onSelect;return t.isExpandableOption&&(l=e.onExpand),c&&(l=e.onCollapse),e.hasSelectedBulk&&(l=function(){}),a.createElement(v,{key:t.id,subject:t,selected:!e.hasSelectedBulk&&r.includes(t.id),disabled:e.hasSelectedBulk||c,onClick:function(){return l(t)},hasSelectedBulk:e.hasSelectedBulk})})))}function f(e){var t=e.subjects,n=e.hasSelectedBulk,r=o(e,["subjects","hasSelectedBulk"]),m=a.useContext(l.x).expandedSubject,p=function(){switch((0,s.V)()){case i.r.LG:default:return 5;case i.r.MD:return 4;case i.r.SM:return 3;case i.r.XS:return 2}}(),b=t.reduce((function(e,t,n){return n%p==0?e.push([t]):c.m.last(e).push(t),e}),[]);return a.createElement("ul",{className:u.Z.grid},b.map((function(e,t){var c=m&&!!e.find((function(e){return m.id===e.id&&e.isExpandableOption}));return a.createElement(a.Fragment,{key:t},a.createElement(d,Object.assign({subjects:e,hasSelectedBulk:n},r)),c&&a.createElement("li",{className:"".concat(u.Z.subgrid," m-0")},a.createElement(f,Object.assign({subjects:m.children,hasSelectedBulk:n},r))))})))}var m=n(88346),p=n(36532),b=n(54610),h=n(67453);function v(e){var t,n,r=a.useContext(l.x),c=e.subject.cover?h.j.createUrl(e.subject.cover.url,{size:b.h2.Small}):"",i=e.subject.isExpandableOption?e.subject.children.map((function(e){return e.id})):[],s=e.hasSelectedBulk?0:null===(t=null==r?void 0:r.selectedSubjects)||void 0===t?void 0:t.filter((function(e){return i.includes(e)})).length,u=a.createElement(m.c,{name:e.subject.name,imageUrl:c,onClick:e.onClick,isSelected:e.selected,isDisabled:e.disabled,isExpandable:e.subject.isExpandableOption,expand:(null===(n=null==r?void 0:r.expandedSubject)||void 0===n?void 0:n.id)===e.subject.id,selectedChildCount:s,extraClasses:e.extraClasses,hideStatus:e.hideStatus});return e.disabled?a.createElement("span",null,u):a.createElement(p.u,{title:e.subject.name},a.createElement("span",null,u))}},88346:(e,t,n)=>{n.d(t,{c:()=>u});var r=n(32735),a=n(83914),c=n(35223);const l={preferenceItem:"PSWHa",expandCaret:"CCsqs",up:"w7N1R",down:"mO0Kn",disabled:"Oyw2x",selected:"Czk2N",noBorder:"_e7oe",textBox:"pfksF",itemStatus:"H4u81",unchecked:"iYkPv",green:"w5g0e"};var i=function(e){return e.selectedChildrenCount?r.createElement("div",{className:"".concat(l.itemStatus," ").concat(l.green)},e.selectedChildrenCount):r.createElement(r.Fragment,null)},s=function(e){var t;return t=e.selected?r.createElement(a.x,{svgName:c.vn.Check}):e.radioButton?r.createElement(r.Fragment,null," "):r.createElement(a.x,{svgName:c.vn.Plus}),r.createElement("div",{className:"".concat(l.itemStatus," ").concat(e.selected?l.green:l.unchecked)},t)};function u(e){var t,n="".concat(l.expandCaret," ").concat(e.expand?l.up:l.down);return r.createElement("li",{className:(t="rounded-3 ".concat(l.preferenceItem),e.extraClasses&&(t+=" "+e.extraClasses),e.isDisabled&&(t+=" "+l.disabled),e.isSelected&&!e.isExpandable&&(t+=" "+l.selected),e.hideStatus&&(t+=" "+l.noBorder),t),onClick:e.onClick,"aria-checked":e.isSelected,"aria-haspopup":e.isExpandable,role:e.isExpandable?"button":"checkbox",style:{backgroundImage:"url(".concat(e.imageUrl,")")},tabIndex:0,title:e.name},r.createElement("div",{className:"".concat(l.textBox," p-2")},r.createElement("p",{className:"clamp-2 mb-0"},e.name,r.createElement("span",{className:e.isExpandable?n:""})),!e.hideStatus&&r.createElement(r.Fragment,null,e.isExpandable?r.createElement(i,{selectedChildrenCount:e.selectedChildCount}):r.createElement(s,{selected:e.isSelected,radioButton:e.radioButton}))))}},42162:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(32735),a=n(34644);const c={partialSubject:"KQYyH",lg:"KiWap",partialSubjectList:"Ng80C"};function l(e){var t="grid"===e.style?a.Z.grid:c.partialSubjectList;return r.createElement("div",{className:"p-3"},r.createElement("ul",{className:"".concat(t," ").concat(e.center?"justify-content-center":"")},Array(e.count).fill(null).map((function(t,n){return r.createElement("li",{key:n,className:"".concat(c.partialSubject," partial-loading-background rounded-3 ").concat("lg"===e.size?c.lg:"")})}))))}l.defaultProps={size:"sm"}},70154:(e,t,n)=>{n.d(t,{x:()=>r});var r=(0,n(32735).createContext)(void 0)},60836:(e,t,n)=>{n.d(t,{j:()=>c});var r=n(32735);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=function(e){var t,n,c=(t=r.useState(1),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 r,a,c,l,i=[],s=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw a}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],i=c[1];return r.useEffect((function(){l>0||e()}),[l]),[function(){i((function(e){return e-1}))},i]}},6972:(e,t,n)=>{n.r(t),n.d(t,{TopicPreferencesView:()=>T});var r=n(32735),a=n(70680),c=n(23481),l=n(20354),i=n(65858),s=n(42162),u=n(81886),o=n(75896),d=n(45465),f=n(70154),m=n(49602),p=n(15611),b=n(2102),h=n(83345),v=n(83523),g=n(69883),S=n(60836);function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c,l,i=[],s=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw a}}return i}}(e,t)||x(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 y(e){return function(e){if(Array.isArray(e))return j(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||x(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 x(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var k="subjects.topicPreferences";function C(e){var t,n=E(r.useState([]),2),a=n[0],l=n[1],i=E(r.useState(null),2),s=i[0],x=i[1],j=E(r.useState(e.bulkPreferencesState),2),C=j[0],O=j[1],B=E(r.useState(!1),2),P=B[0],w=B[1],N=(0,g.Z)(),A=m.b.hasBulkSelectedTopics(C);r.useEffect((function(){var t;(null===(t=e.preselections)||void 0===t?void 0:t.length)?l(o.m.uniq([].concat(y(a),y(e.preselections.map((function(e){return e.id})))))):l([])}),[null===(t=e.preselections)||void 0===t?void 0:t.length]);var I=E((0,S.j)((function(){w(!1),e.isOnboarding||N.success(c.T.getPhrase(k,"success")),e.nextAppLink&&u.Q.C$.trigger(e.nextAppLink)})),2),F=I[0],L=I[1];function T(t){return!!e.preselections&&e.preselections.map((function(e){return e.id})).sort().toString()!==t.sort().toString()}function Z(){return e.bulkPreferencesState!==C}function U(){if(!a.length&&!A)return!1;var t=Z()||T(a);return!(!e.isOnboarding&&!t)}function M(){var e=m.b.getNextBulkState(C,"topics");x(null),O(e)}var _=function(e){if(!(null==e?void 0:e.length))return[];var t=[];return e.forEach((function(e){e.children&&e.children.length?t.push(Object.assign(Object.assign({},e),{isExpandableOption:!0,children:[Object.assign({},e)].concat(y(e.children))})):t.push(Object.assign({},e))})),t}(e.options);return r.createElement(h.D.Provider,{value:k},r.createElement("form",{className:"p-3 pb-5"},r.createElement("div",{className:"position-relative"},r.createElement(f.x.Provider,{value:{selectedSubjects:a,expandedSubject:s}},r.createElement(d.i,{subjects:_,onSelect:function(e){var t=o.m.addOrRemoveImmutable(a,e.id);l(t)},onExpand:function(e){x(s&&s.id===e.id?null:e)},onCollapse:function(){x(null)},hasSelectedBulk:A}))),r.createElement(d.ed,null,r.createElement("div",null,!!e.backButtonAppLink&&r.createElement(p.F,{appLink:e.backButtonAppLink,className:"btn btn-outline-dark"},r.createElement(h.x,{phrase:"back"}))),r.createElement("div",{className:"d-flex align-items-center justify-content-end"},r.createElement("div",{className:"d-flex me-3"},r.createElement("p",{onClick:M,className:"me-2 mb-0 fw-bold"},r.createElement(h.x,{phrase:"allSubjects"})),r.createElement(v.Z,{onClick:M,on:A,hideOutline:!0})),r.createElement(b.m,{variant:"dark",disabled:!U(),onClick:function(){if(U())if(T(a)||Z()){w(!0);var t=a.filter((function(t){return!e.preselections.find((function(e){return e.id===t}))})),n=e.preselections.filter((function(e){return!a.includes(e.id)})),r=0;t.length&&r++,n.length&&r++,Z()&&r++,L(r),e.saveChanges(t,n,C,F,(function(){N.error(c.T.getPhrase(k,"error")),w(!1)}))}else e.nextAppLink&&u.Q.C$.trigger(e.nextAppLink)},showSpinner:P},r.createElement(h.x,{phrase:e.isOnboarding?"next":"save"}))))))}var O=n(61699),B=n(77963),P=n(65728),w=n(31949),N=n(79612),A=n(37802),I=n(330),F="settings.topicPreferences",L=c.T.encloseNamespace(F);function T(){var e=l.a.useBasicFetch(w.N.currentUser());(0,N.M)({title:L("pageTitle")});var t,n,c=l.a.useBasicFetch(O.o.availablePresentations()),u=l.a.useBasicFetch(O.o.allLevelPreferences()),o=(t=function(e){return e?e.filter((function(e){return e.canBePreferred})):[]},n=l.a.useBasicFetch(O.o.mySubjectPreferences((function(e){}))),Object.assign(Object.assign({},n),{isFetching:n.isFetching,data:t(n.data)})),d=l.a.useBasicFetch(O.o.allSubjectPreferences()),f=(0,A.r)(i.LZ.PreferencesSettings),m=f.bulkOnboardingPreferencesState,p=f.isLoadingSettings,b=f.updateSetting,v=(0,a.I0)(),g=!!d.hasCompleted&&!!o.hasCompleted&&!p;return r.createElement(I.T,{availablePresentations:c.data,audiences:u.data},r.createElement("p",{className:"mt-3"},r.createElement(h.x,{namespace:F,phrase:"info"})),g?r.createElement(C,{options:d.data,preselections:o.data,bulkPreferencesState:m,saveChanges:function(t,n,r,a,c){if(r!==m){var i={name:P.E.BulkOnboardingPreferencesState,value:r,kind:B.g.Setting};b(e.data.id,i,a,c)}(null==t?void 0:t.length)&&l.a.fetch(v,O.o.followSubjects(t,a,c)),(null==n?void 0:n.length)&&l.a.fetch(v,O.o.unfollowSubjects(n.map((function(e){return e.id})),a,c))}}):r.createElement(s.A,{count:7,style:"grid"}))}},34644:(e,t,n)=>{n.d(t,{Z:()=>r});const r={grid:"X9r1Y",subgrid:"TgYhp"}}}]);
|
|
2
|
+
//# sourceMappingURL=5743-14700e4f76-lite.chunk.js.map
|