@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/9241-2386134dd3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/classification-banner.scss","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/ClassificationBanner.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/components/ContentUpdateClassification.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/partial-content-updates.scss","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/PartialContentUpdates.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/ContentUpdatesView.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/useShowCalendar.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\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 { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center mx-n3'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\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","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}","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"B7jhq\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { Classification, PresentationAudience } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './classification-banner.scss';\n\nconst namespace = 'contentUpdates.classificationBanner';\n\ninterface ClassificationBannerProps {\n classification: Classification;\n backgroundUrl: string;\n getClassificationAppLink: (classification: Classification, activeAudiences: PresentationAudience[]) => Core.AppLink;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n}\n\nexport function ClassificationBanner(props: ClassificationBannerProps): JSX.Element {\n const { classification, backgroundUrl, followed, follow, showFollowSpinner } = props;\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n return (\n <div\n className={`banner mb-2 d-flex justify-content-between align-items-center rounded ${styles.banner}`}\n style={{ backgroundImage: `url('${backgroundUrl}')` }}\n >\n <AppLink className='text-white text-shadow' appLink={props.getClassificationAppLink(classification, activeAudiences)}>\n <h2 className='h3 mb-0'>{classification.name}</h2>\n </AppLink>\n\n {props.canFollow && (\n <IconButton\n className={`btn follow-btn ${followed ? 'btn-outline-dark' : 'btn-dark'}`}\n svgName={followed ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell}\n onClick={() => follow(classification.id, classification.name, !followed)}\n >\n {showFollowSpinner\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase={followed ? 'following' : 'follow'} />\n }\n </IconButton>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { ContentUpdateAppLinks, VideoWithClassification } from 'libs/shared/apps/content-updates/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Classification, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\n\nimport { ClassificationBanner } from 'apps/content-updates/components';\n\nconst namespace = 'contentUpdates.contentUpdatesView';\n\ninterface ClassificationProps {\n classification: Classification;\n videos: VideoWithClassification[];\n showMore: boolean;\n appLinks: ContentUpdateAppLinks;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n audiences: PresentationAudience[];\n commonVideoProps: CommonVideoProps;\n}\n\nexport function ContentUpdateClassification(props: ClassificationProps): JSX.Element {\n const { classification, videos, showMore, followed } = props;\n\n const { hasPermissions } = usePermissions();\n\n if (!classification)\n return <></>;\n \n const url = ImageHelper.createBannerUrl(classification.banner, {\n fallbackBaseUrl: props.commonVideoProps.imageCdnUrl,\n fallbackCategoryName: classification.name,\n type: ImageType.Banners\n }, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return (\n <div className='mb-3'>\n <ClassificationBanner\n classification={classification}\n backgroundUrl={url}\n getClassificationAppLink={props.appLinks.getClassificationAppLink}\n followed={followed}\n follow={props.follow}\n canFollow={props.canFollow}\n showFollowSpinner={props.showFollowSpinner}\n />\n <VideoList\n videos={videos}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n {showMore &&\n <div className={'show-more'}>\n <AppLink className='info-link' appLink={props.appLinks.getClassificationUpdateAppLink(classification)}>\n <Text namespace={namespace} phrase='showMore' options={{\n classificationName: classification.name\n }} />\n </AppLink>\n </div>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialBanner\":\"bxaA6\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-content-updates.scss';\n\nexport function PartialContentUpdates(): JSX.Element {\n return (\n <>\n {Array(4).fill(null).map((s, i) => (\n <div key={i} className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialBanner}`} />\n <PartialVideoList />\n </div>\n ))}\n </>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ContentUpdateRequests } from 'libs/shared/apps/content-updates/flight-requests/ContentUpdateRequests';\nimport { ClassificationVideosGrouping, ContentUpdate, ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\nimport { DiscoverHeader } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, DashboardUserType, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { ContentUpdateClassification } from './components/ContentUpdateClassification';\nimport { PartialContentUpdates } from './partial-loading/PartialContentUpdates';\n\nconst INITIAL_VIDEO_COUNT = 5;\nconst namespace = 'contentUpdates.contentUpdatesView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction map(\n contentUpdates: ClassificationVideosGrouping[],\n classifications: {[key: string]: Classification}\n): ContentUpdate[] {\n if (!contentUpdates || !classifications)\n return null;\n\n return contentUpdates.map((c): ContentUpdate => {\n return {\n showMore: c.videos.length > INITIAL_VIDEO_COUNT,\n classification: classifications[c.id],\n videos: c.videos.slice(0, INITIAL_VIDEO_COUNT).map((m: any) => {\n m.classification = classifications[m.id];\n return m;\n }).filter(v => v)\n };\n }).filter(v => v.classification);\n}\n\ninterface FollowSpinnersMap {\n [classificationId: string]: boolean;\n}\n\ninterface ContentUpdatesViewProps {\n appLinks: ContentUpdateAppLinks;\n presentationSlug?: string;\n}\n\nexport function ContentUpdatesView(props: ContentUpdatesViewProps): JSX.Element {\n const [ followSpinners, setFollowSpinners ] = React.useState<FollowSpinnersMap>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const { hasPermissions } = usePermissions();\n const canFollowSubjects = hasPermissions(PermissionName.FollowSubjects);\n\n const date = new Date();\n const from = DateHelper.format(DateHelper.endOf(DateHelper.subtract(date, 1, 'year'), 'day'), 'YYYY-MM-DD');\n const to = DateHelper.format(DateHelper.endOf(date, 'day'), 'YYYY-MM-DD');\n\n const { activePresentation } = usePresentation({ redirectOnError: true });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: activePresentation?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n activePresentation?.learningLevel,\n () => ({ application: AppChannels.CONTENT_UPDATES, action: Actions.ContentUpdates.CONTENT_UPDATES })\n )\n }));\n\n const contentUpdatesRequest = ContentUpdateRequests.getContentUpdates(activePresentation?.id, from, to);\n const contentUpdates = Flight.useBasicFetch<ClassificationVideosGrouping[]>(\n activePresentation && contentUpdatesRequest\n );\n const subjectPreferences = Flight.useBasicFetch<Classification[]>(canFollowSubjects &&\n PreferenceRequests.mySubjectPreferences());\n\n const audiences = usePresentationAudiences();\n\n /* Map content update response into list of video ids and classification ids*/\n const classificationIds: string[] = [];\n let videos: Video[] = [];\n contentUpdates.data && contentUpdates.data.forEach(c => {\n classificationIds.push(c.id);\n videos = videos.concat(c.videos);\n });\n\n /* Batch fetch the videos and classifications by id */\n const { items: classifications } = useBatchFetch<Classification>(\n classificationIds,\n (ids: string[]) => ContentUpdateRequests.getClassifications(ids)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n \n useVideoMixin(videos, {\n flightNamespace: contentUpdatesRequest.normalizeOptions?.namespace\n });\n\n const { commonVideoProps, hasCommonVideoPropsCompleted } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail,\n flightNamespace: contentUpdatesRequest.normalizeOptions?.namespace\n });\n\n /** Callbacks */\n function onFollow(classificationId: string, classificationName: string, follow: boolean): void {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: true\n }));\n\n const onSuccess = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n AnalyticsHelper.logUserAction({\n id: classificationId,\n name: classificationName\n }, {\n location: LocationContext.ContentUpdatesClassificationBanner,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: follow ? ToggleDescriptor.On : ToggleDescriptor.Off,\n actionType: UserAction.Follow,\n entity: EntityType.Classification\n });\n\n alerts.success(getPhrase(\n follow ? 'followed' : 'unfollowed',\n { classification: classifications[classificationId]?.name, escapeText: true }\n ));\n };\n\n const onError = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n alerts.error(getPhrase('error'));\n };\n\n const request = follow ?\n PreferenceRequests.followSubjects([classificationId], onSuccess, onError) :\n PreferenceRequests.unfollowSubjects([classificationId], onSuccess, onError);\n\n Flight.fetch(dispatch, request);\n }\n\n const { showCalendar, isLoading } = useShowCalendar();\n\n const dataLoaded = !!(\n contentUpdates.hasCompleted &&\n audiences.hasCompleted &&\n (!canFollowSubjects || subjectPreferences.hasCompleted) &&\n classifications &&\n !isLoading &&\n hasCommonVideoPropsCompleted\n );\n\n /* Build out array of content updates from our lists of videos and classifications */\n const mappedUpdates = map(contentUpdates.data, classifications);\n const preferredSubjectIds = subjectPreferences.data?.map(subject => subject.id) ?? [];\n\n const managePreferences = hasPermissions(PermissionName.ManageSubjectPreferences);\n const manageVideoAccess = hasPermissions(PermissionName.ManageVideoAccess);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='bg-white px-3'>\n {!isLoading && <DiscoverHeader\n type={DashboardUserType.Staff} // Students never see this page\n appLinks={{\n forYou: props.appLinks.dashboardAppLink,\n whatsNew: props.appLinks.whatsNewAppLink,\n calendar: props.appLinks.calendarAppLink\n }}\n showCalendar={showCalendar}\n active='whatsNew'\n />}\n <h1><Text namespace={namespace} phrase='heading' /></h1>\n {(managePreferences || manageVideoAccess) && (\n <p>\n {managePreferences &&\n <>\n <Text namespace={namespace} phrase='onlyRelevant' /> \n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TOPIC_PREFERENCES\n }}\n >\n <Text namespace={namespace} phrase='updatePreferences' />\n </AppLink>\n </>\n }\n {manageVideoAccess &&\n <span className='d-block'>\n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_REVIEW\n }}\n >\n <Text namespace={namespace} phrase='contentReview' />\n </AppLink>\n </span>\n }\n </p>\n )}\n\n {dataLoaded ? (\n <>\n {mappedUpdates.map((c: ContentUpdate, key: number) => (\n <ContentUpdateClassification\n key={key}\n classification={c.classification}\n videos={c.videos}\n showMore={c.showMore}\n appLinks={props.appLinks}\n followed={preferredSubjectIds.includes(c.classification?.id)}\n follow={onFollow}\n showFollowSpinner={followSpinners[c.classification?.id]}\n canFollow={canFollowSubjects}\n audiences={audiences.data}\n commonVideoProps={commonVideoProps}\n />\n ))}\n </>\n ) : (\n <PartialContentUpdates />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}\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 React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\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}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","TabContents","tab","svgName","count","data","ref","containerRef","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","chunk","responses","itemsArr","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","current","has","add","r","hasFirstRequestCompleted","hasCompleted","ClassificationBanner","classification","backgroundUrl","followed","follow","showFollowSpinner","activeAudiences","SharedViewModelKeys","undefined","storage","style","backgroundImage","getClassificationAppLink","canFollow","IconButton","Spinner","as","animation","role","size","ContentUpdateClassification","videos","showMore","hasPermissions","usePermissions","ImageHelper","banner","fallbackBaseUrl","commonVideoProps","imageCdnUrl","fallbackCategoryName","resizeType","VideoList","getVideoAppLink","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","AppLink","getClassificationUpdateAppLink","options","classificationName","PartialContentUpdates","Array","fill","s","i","PartialVideoList","INITIAL_VIDEO_COUNT","getPhrase","ContentUpdatesView","followSpinners","setFollowSpinners","dispatch","alerts","canFollowSubjects","PermissionName","date","Date","from","DateHelper","to","activePresentation","usePresentation","redirectOnError","useSetPageMetadata","PageMetadataHelper","title","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","learningLevel","application","action","contentUpdatesRequest","ContentUpdateRequests","contentUpdates","subjectPreferences","PreferenceRequests","usePresentationAudiences","classificationIds","c","concat","classifications","ids","videoActions","useVideoActions","useVideoMixin","flightNamespace","normalizeOptions","useCommonVideoProps","locationContext","hasCommonVideoPropsCompleted","onFollow","classificationId","currentState","onSuccess","AnalyticsHelper","workflowPhase","descriptor","success","escapeText","onError","error","request","useShowCalendar","isLoading","dataLoaded","mappedUpdates","slice","m","filter","v","preferredSubjectIds","subject","managePreferences","manageVideoAccess","VideoActionsContext","value","dashboardAppLink","whatsNewAppLink","calendarAppLink","includes","mtv","sharedPlaylist","isPlugin","params","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","config","currentUser","yearGroups","isAuthenticated","customerId","subTextType","getSubTextAppLink","video","series","isPluginPopup","popup","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","getFallbackPresentation","presentation","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","allowedLearningLevels","contentRegion","learningLevelCantAccess","find","l","toString","noSetting","setShowCalendar","setIsLoading","objects","videoIds","isArray","o","getValidObjects"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 9345-
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9345],{94644:(t,e,r)=>{r.d(e,{r:()=>l});var n=r(50242),o=r(81886),i=r(67058),a=r(14553),c=r(49267),u=r(49075),s={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._,internalServerError:u._};function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i;i="number"==typeof t?t:t.status;var a=Object.assign(Object.assign({},s),e);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?r.badRequest||o.Q.Ry.throw(new a.badRequest):r.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):r.notFound||o.Q.Ry.throw(new a.notFound):r.internalServerError||o.Q.Ry.throw(new u._))}}},39902:(t,e,r)=>{r.d(e,{F:()=>h,f:()=>d});var n=r(32735),o=r(20354),i=r(75896);function a(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||c(t)||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(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(t,e,r){return(e=function(t){var e=function(t){if("object"!=s(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==s(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var f=50;function d(t,e){var r=i.m.chunk(t,f).map((function(t){return e(i.m.uniq(t))})),n=o.a.useBasicFetchAll(r),a=i.m.flatten(n.data),c=n.data.length?a.reduce((function(t,e){return Object.assign(Object.assign({},t),l({},e.id,e))}),{}):null;return{itemsArr:a,items:c,isFetching:n.isFetching}}function h(t,e,r){var u,d,h,m,v=r||function(t){return"object"===s(t)?t.id:t},p=n.useRef(new Set),y=(h=n.useState([]),m=2,function(t){if(Array.isArray(t))return t}(h)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(h,m)||c(h,m)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],b=y[1];n.useEffect((function(){if(null==t?void 0:t.length){var r=[];t.forEach((function(t){var e=v(t);p.current.has(e)||(r.push(t),p.current.add(e))})),r.length&&b((function(t){return[].concat(a(t),a(i.m.chunk(r,f).map(e)))}))}}),[null==t?void 0:t.length]);var w=o.a.useBasicFetchAll(g),E=i.m.flatten(w.data),S=w.data.length?E.reduce((function(t,e){return Object.assign(Object.assign({},t),l({},v(e),e))}),{}):null;return{hasFirstRequestCompleted:!!(null===(d=null===(u=w.responses)||void 0===u?void 0:u[0])||void 0===d?void 0:d.hasCompleted),itemsArr:E,items:S,isFetching:w.isFetching}}},60115:(t,e,r)=>{r.d(e,{K:()=>s});var n=r(32735),o=r(50242),i=r(91967),a=400,c=r(45719);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t,e,r,s,l,f){var d,h,m,v,p=(d=(0,n.useState)(0),h=2,function(t){if(Array.isArray(t))return t}(d)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(d,h)||function(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(d,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=p[0],g=p[1],b=e,w=(0,c.P)((function(e){if(!t)return null;var r=t(e);return r?r.key:null}),s,l);return m={fetchNextPage:function(){if(e&&t&&w)return g((function(t){return t+1})),b(w.nextCursor)},hasMore:!!(null==w?void 0:w.nextCursor),isFetching:null==w?void 0:w.isFetching,scrollContainer:f},v=function(){if(!m.isFetching){if(m.scrollContainer){var t=m.scrollContainer;if(t.getBoundingClientRect().height+t.scrollTop<t.scrollHeight-a)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-a)return;m.fetchNextPage()}},(0,n.useEffect)((function(){var t=i.q.throttle(v,200),e=m.scrollContainer||window;return m.hasMore&&e.addEventListener("scroll",t),function(){return e.removeEventListener("scroll",t)}}),[m.hasMore,m.fetchNextPage,m.scrollContainer]),(0,n.useEffect)((function(){w&&w.shouldInitialFetch&&e&&(b(),g((function(t){return t+1})))}),[null==w?void 0:w.shouldInitialFetch,e]),(0,n.useEffect)((function(){var t,e;if((null==w?void 0:w.statusCode)&&i.q.isFunction(r)){var n=+(null===(e=null===(t=w.statusCode)||void 0===t?void 0:t.toString())||void 0===e?void 0:e.substr(0,1));n!==o.k.ClientError&&n!==o.k.ServerError||r(y,w.statusCode)}}),[null==w?void 0:w.statusCode]),{items:null==w?void 0:w.items,hasMore:!!(null==w?void 0:w.nextCursor),nextCursor:null==w?void 0:w.nextCursor,isFetching:null==w?void 0:w.isFetching,totalItems:null==w?void 0:w.totalItems,hasFirstPageCompleted:null==w?void 0:w.hasFirstPageCompleted}}},87821:(t,e,r)=>{r.d(e,{p:()=>a});var n=r(99940),o=r(110);function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var a={userVideoHistory:function(t,e,r,n){var i="video:history",a="{gateway}/v1/users/me/watch-history";return t&&(i+=":".concat(t),a+="?cursor=".concat(t)),{key:i,url:a,formatData:function(t){return{data:t.data.map((function(t){var e=o.O.format(t.lastTimeWatched),r=o.O.format(e,"YYYY-MM-DD");return Object.assign(Object.assign({},t),{lastTimeWatched:e,lastDateWatched:r})})),pagination:t.pagination}},success:e,error:r,always:n}},videoHistory:function(t,e,r,n,o){var i=t.sort().map((function(t){return"videoId=".concat(t)}));return{key:"video:history:videos:".concat(i.join("&")),url:"{gateway}/v1/videos/history?".concat(i.join("&")),normalizeOptions:{namespace:e},formatData:function(t){return(null==t?void 0:t.length)?t.map((function(t){return{id:t.videoId,lastProgressPoint:t.lastProgressPoint}})):t},success:r,error:n,always:o}},removeFromHistory:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{url:"{gateway}/v1/users/me/videos/".concat(t,"/watch-history"),key:"remove:video:history:".concat(t),type:n.k.DELETE,invalidationKeys:["video:history"].concat((e=r,function(t){if(Array.isArray(t))return i(t)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}}}},79345:(t,e,r)=>{r.r(e),r.d(e,{WatchHistoryView:()=>z});var n=r(32735),o=r(23481),i=r(20354),a=r(49985),c=r(65858),u=r(87801),s=r(83345),l=r(51365),f=r(16714),d=r(69883),h=r(22902),m=r(79612),v=r(58321),p=r(44110),y=r(75896),g=r(110),b=r(75100),w=r(10741),E=r(22490);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}var P="watchHistory.watchHistoryVideoList";function A(t){var e=(0,h.T)().hasPermissions,r=y.m.groupBy(t.videoHistory,"lastDateWatched"),i={},a=Object.keys(r).sort().reverse();a.forEach((function(e){i[e]=r[e].map((function(e){var r=t.videos.find((function(t){return t.id.toString()===e.videoId.toString()}));return r?Object.assign(Object.assign({},r),{lastProgressPoint:e.lastProgressPoint}):null})).filter(Boolean)}));var c=a.reduce((function(t,e){var r,n,o,a,c=i[e].length,u=c+(null!==(r=t.runningTotal)&&void 0!==r?r:0);return Object.assign(Object.assign({},t),(n={runningTotal:u},a=u-c,(o=function(t){var e=function(t){if("object"!=S(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}(o=e))in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a,n))}),{});return n.createElement(n.Fragment,null,a.map((function(r){return i[r].length?n.createElement("div",{key:r,className:"pb-3"},n.createElement("h2",{className:"h4"},function(t){var e=g.O.timeSince(new Date(t),"day");return 0===e?o.T.getPhrase(P,"today"):1===e?o.T.getPhrase(P,"yesterday"):g.O.format(t,"Do MMMM")}(r)),n.createElement(b.E4,{videos:i[r],getVideoAppLink:E.W.getAppLink,hasPermissions:e,startingPositionIndex:c[r],presentationAudiences:t.presentationAudiences,getPreviewQuestionsAppLink:function(t){return w.j.getPreviewQuestionsAppLink(t)},commonVideoProps:t.commonVideoProps})):n.createElement(n.Fragment,{key:r})})))}var L=r(87821),x=r(94644),F=r(31949),k=r(1575),j=r(39902),C=r(60115),O=r(97816),T="watchHistory.hooks",I=r(35223),H=r(10671);function N(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var V="watchHistory.hooks",_=r(97958),D=r(99742),M=r(14070),G=r(97291),R="watchHistory.watchHistoryEmptyState",W=o.T.encloseNamespace(R);function U(t){var e=t.hasDiscover;return n.createElement(s.D.Provider,{value:R},n.createElement(_.u,null,n.createElement(_.u.Image,{src:D.W.EmptyStates.WATCH_HISTORY,altText:W("info")}),n.createElement(_.u.Heading,null,n.createElement(s.x,{phrase:"heading"})),n.createElement(_.u.Info,null,n.createElement(s.x,{phrase:"info"})),e&&n.createElement(_.u.Cta,{text:o.T.getPhrase(R,"cta"),appLink:{application:G.O.DASHBOARD,action:M.e.Dashboard.HOME}})))}function q(){return n.createElement(s.D.Provider,{value:R},n.createElement(_.u,null,n.createElement(_.u.Image,{src:D.W.EmptyStates.WATCH_HISTORY_PUBLIC,altText:W("publicInfo")}),n.createElement(_.u.Heading,null,n.createElement(s.x,{phrase:"publicHeading"})),n.createElement(_.u.Info,null,n.createElement(s.x,{phrase:"publicInfo"})),n.createElement(_.u.Cta,{text:o.T.getPhrase(R,"publicCta"),appLink:{application:G.O.SIGN_UP,action:M.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:c.Vw.Click,location:c.LZ.WatchHistoryLanding,entity:c.py.AppLink,workflowPhase:c.eu.Start,descriptor:c.Yu.SignUp}})))}var B=r(1860);const Y={partialDate:"vq4eE"};function Q(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:2})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:3})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:2})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:5})))}function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function $(){$=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype),c=new C(n||[]);return o(a,"_invoke",{value:x(t,r,c)}),a}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var d="suspendedStart",h="suspendedYield",m="executing",v="completed",p={};function y(){}function g(){}function b(){}var w={};s(w,a,(function(){return this}));var E=Object.getPrototypeOf,S=E&&E(E(O([])));S&&S!==r&&n.call(S,a)&&(w=S);var P=b.prototype=y.prototype=Object.create(w);function A(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==Z(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function x(e,r,n){var o=d;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=F(c,n);if(u){if(u===p)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var s=f(e,r,n);if("normal"===s.type){if(o=n.done?v:h,s.arg===p)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function F(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,F(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),p;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,p;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,p):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,p)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function O(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(Z(e)+" is not iterable")}return g.prototype=b,o(P,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=s(b,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,s(t,u,"GeneratorFunction")),t.prototype=Object.create(P),t},e.awrap=function(t){return{__await:t}},A(L.prototype),s(L.prototype,c,(function(){return this})),e.AsyncIterator=L,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},A(P),s(P,u,"Generator"),s(P,a,(function(){return this})),s(P,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=O,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(j),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),p},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:O(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),p}},e}var K=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))},X="watchHistory.watchHistory";function z(){(0,m.M)({title:o.T.getPhrase(X,"pageTitle")});var t=i.a.useGetFetchAsync(),e=(0,h.T)(),r=e.hasPermissions,y=e.hasLocalPermissions,g=(0,d.Z)(),b=(0,v.U)({locationContext:c.LZ.VideoThumbnail}).commonVideoProps,w=function(){var e=(0,H._)({location:H.i.VideoItem});return Object.assign(Object.assign({},e),{getVideoActions:function(r,n){var i,u={label:o.T.getPhrase(V,"removeFromWatchHistory"),button:!1,svgName:I.vn.Delete,className:"text-danger",onClick:function(){!function(e){K(this,void 0,void 0,$().mark((function r(){return $().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,t(L.p.removeFromHistory(e.id));case 3:g.success(o.T.getPhrase(X,"removeFromHistorySuccess")),a.k.logUserAction({id:e.id,name:e.name},{entity:c.py.Video,actionType:c.Vw.Click,descriptor:c.XX.RemoveFromWatchHistory,location:c.LZ.VideoListItem}),r.next=10;break;case 7:r.prev=7,r.t0=r.catch(0),g.error(o.T.getPhrase(X,"removeFromHistoryError",{name:e.name}));case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))}(r)},group:"delete"};return[].concat(function(t){if(Array.isArray(t))return N(t)}(i=e.getVideoActions(r,n))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return N(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(t,e):void 0}}(i)||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.")}(),[u])}})}(),E=function(){var t,e=i.a.useGetFetch(),r=(0,d.Z)(),n=(0,h.T)().hasLocalPermissions,a=i.a.useBasicFetch(F.N.currentUser());function c(t){return L.p.userVideoHistory(t)}function u(t){return e(c(t))}var s=!n(f.E.ViewWatchHistoryLanding)&&a.hasCompleted,l=(0,C.K)(!!s&&c,u,(function(t,e){if(1===t)return(0,x.r)(e);r.error(o.T.getPhrase(T,"error"))})),m=l.items,v=l.hasMore,p=l.isFetching,y=null!==(t=null==m?void 0:m.map((function(t){return t.object})))&&void 0!==t?t:[],g=(0,j.F)(y.map((function(t){return t.id})),k.R.watchHistoryVideos);return(0,O.V)(y),{videoHistory:m,videos:y,fetchNext:u,isFetching:p,hasMore:v,hasFetchedFirstPage:g.hasFirstRequestCompleted}}(),S=E.videoHistory,P=E.videos,_=E.fetchNext,D=E.hasMore,M=E.hasFetchedFirstPage,G=E.isFetching,R=(0,p.i)();return y(f.E.ViewWatchHistoryLanding)?n.createElement(q,null):n.createElement(s.D.Provider,{value:X},n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2"},n.createElement(s.x,{phrase:"heading"})),M?P.length?n.createElement(l.M.Provider,{value:w},n.createElement(A,{videoHistory:S,videos:P,presentationAudiences:R.data,commonVideoProps:b}),(D||G)&&n.createElement(u._,{isFetching:G,fetchNext:_})):n.createElement(U,{hasDiscover:r(f.C.ViewDiscover)}):n.createElement(Q,null)))}},58321:(t,e,r)=>{r.d(e,{U:()=>m});var n=r(20354),o=r(16714),i=r(39151),a=r(1666),c=r(31949),u=r(22902),s=r(37802),l=r(22490),f=r(82431),d=r(46390),h=r(27638);function m(t){var e,r,m,v=t||{},p=v.locationContext,y=v.mtv,g=v.flightNamespace,b=v.sharedPlaylist,w=(0,d.G)().isPlugin,E=(0,h.u)(p,g),S=E.setFavourite,P=E.canFavourite,A=(0,s.r)(null),L=A.hasTopicDirectories,x=A.isLoadingSettings,F=(0,u.T)(),k=F.hasPermissions,j=F.isLoaded,C=k(o.C.StudentExperience),O=n.a.useBasicFetch(i.L.config()),T=n.a.useBasicFetch(c.N.currentUser()),I=n.a.useBasicFetch((null===(e=T.data)||void 0===e?void 0:e.isAuthenticated)&&a.h.yearGroups(T.data.customerId));return{hasCommonVideoPropsCompleted:!x&&j&&O.hasCompleted&&T.hasCompleted&&(!(null===(r=T.data)||void 0===r?void 0:r.isAuthenticated)||I.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(t){var e;return"series"in t?b&&!(null===(e=T.data)||void 0===e?void 0:e.isAuthenticated)?null:f.j.getSeriesAppLink(t.series,{mtv:y}):null},isPlugin:w,canFavourite:P,setFavourite:S,imageCdnUrl:null===(m=O.data)||void 0===m?void 0:m.imageCdnUrl,yearGroups:I.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:L,companyLogoFallbackUrl:null,hasStudentExperience:C}}}},44110:(t,e,r)=>{r.d(e,{i:()=>a});var n=r(20354),o=r(89454),i=r(86698),a=function(){var t=(0,i.y)({redirectOnError:!0}),e=t.activePresentation,r=t.getFallbackPresentation,a=e||r();return n.a.useBasicFetch(!!a&&o.O.presentationAudiences(a.id))}},97816:(t,e,r)=>{r.d(e,{V:()=>a});var n=r(1575),o=r(39902),i=r(31908);function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=function(t){return t?Array.isArray(t)?t.filter((function(t){return!!t&&(i.M.isVideo(t)||i.M.isClip(t))})):"data"in t?t.data.filter((function(t){return!!t&&(i.M.isVideo(t)||i.M.isClip(t))})):[]:[]}(t).map((function(t){return t.id}));(0,o.F)(r,(function(t){return n.R.videoMixinAssocs(t,e.flightNamespace)}))}}}]);
|
|
3
|
-
//# sourceMappingURL=9345-
|
|
1
|
+
/*! For license information please see 9345-0a7f58bb53-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9345],{94644:(t,e,r)=>{r.d(e,{r:()=>l});var n=r(50242),o=r(81886),i=r(67058),a=r(14553),c=r(49267),u=r(49075),s={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._,internalServerError:u._};function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i;i="number"==typeof t?t:t.status;var a=Object.assign(Object.assign({},s),e);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?r.badRequest||o.Q.Ry.throw(new a.badRequest):r.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):r.notFound||o.Q.Ry.throw(new a.notFound):r.internalServerError||o.Q.Ry.throw(new u._))}}},39902:(t,e,r)=>{r.d(e,{F:()=>h,f:()=>d});var n=r(32735),o=r(20354),i=r(75896);function a(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||c(t)||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(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(t,e,r){return(e=function(t){var e=function(t){if("object"!=s(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==s(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var f=50;function d(t,e){var r=i.m.chunk(t,f).map((function(t){return e(i.m.uniq(t))})),n=o.a.useBasicFetchAll(r),a=i.m.flatten(n.data),c=n.data.length?a.reduce((function(t,e){return Object.assign(Object.assign({},t),l({},e.id,e))}),{}):null;return{itemsArr:a,items:c,isFetching:n.isFetching}}function h(t,e,r){var u,d,h,m,v=r||function(t){return"object"===s(t)?t.id:t},p=n.useRef(new Set),y=(h=n.useState([]),m=2,function(t){if(Array.isArray(t))return t}(h)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(h,m)||c(h,m)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=y[0],b=y[1];n.useEffect((function(){if(null==t?void 0:t.length){var r=[];t.forEach((function(t){var e=v(t);p.current.has(e)||(r.push(t),p.current.add(e))})),r.length&&b((function(t){return[].concat(a(t),a(i.m.chunk(r,f).map(e)))}))}}),[null==t?void 0:t.length]);var w=o.a.useBasicFetchAll(g),E=i.m.flatten(w.data),S=w.data.length?E.reduce((function(t,e){return Object.assign(Object.assign({},t),l({},v(e),e))}),{}):null;return{hasFirstRequestCompleted:!!(null===(d=null===(u=w.responses)||void 0===u?void 0:u[0])||void 0===d?void 0:d.hasCompleted),itemsArr:E,items:S,isFetching:w.isFetching}}},60115:(t,e,r)=>{r.d(e,{K:()=>s});var n=r(32735),o=r(50242),i=r(91967),a=400,c=r(45719);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t,e,r,s,l,f){var d,h,m,v,p=(d=(0,n.useState)(0),h=2,function(t){if(Array.isArray(t))return t}(d)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(d,h)||function(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(d,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=p[0],g=p[1],b=e,w=(0,c.P)((function(e){if(!t)return null;var r=t(e);return r?r.key:null}),s,l);return m={fetchNextPage:function(){if(e&&t&&w)return g((function(t){return t+1})),b(w.nextCursor)},hasMore:!!(null==w?void 0:w.nextCursor),isFetching:null==w?void 0:w.isFetching,scrollContainer:f},v=function(){if(!m.isFetching){if(m.scrollContainer){var t=m.scrollContainer;if(t.getBoundingClientRect().height+t.scrollTop<t.scrollHeight-a)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-a)return;m.fetchNextPage()}},(0,n.useEffect)((function(){var t=i.q.throttle(v,200),e=m.scrollContainer||window;return m.hasMore&&e.addEventListener("scroll",t),function(){return e.removeEventListener("scroll",t)}}),[m.hasMore,m.fetchNextPage,m.scrollContainer]),(0,n.useEffect)((function(){w&&w.shouldInitialFetch&&e&&(b(),g((function(t){return t+1})))}),[null==w?void 0:w.shouldInitialFetch,e]),(0,n.useEffect)((function(){var t,e;if((null==w?void 0:w.statusCode)&&i.q.isFunction(r)){var n=+(null===(e=null===(t=w.statusCode)||void 0===t?void 0:t.toString())||void 0===e?void 0:e.substr(0,1));n!==o.k.ClientError&&n!==o.k.ServerError||r(y,w.statusCode)}}),[null==w?void 0:w.statusCode]),{items:null==w?void 0:w.items,hasMore:!!(null==w?void 0:w.nextCursor),nextCursor:null==w?void 0:w.nextCursor,isFetching:null==w?void 0:w.isFetching,totalItems:null==w?void 0:w.totalItems,hasFirstPageCompleted:null==w?void 0:w.hasFirstPageCompleted}}},87821:(t,e,r)=>{r.d(e,{p:()=>a});var n=r(99940),o=r(110);function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var a={userVideoHistory:function(t,e,r,n){var i="video:history",a="{gateway}/v1/users/me/watch-history";return t&&(i+=":".concat(t),a+="?cursor=".concat(t)),{key:i,url:a,formatData:function(t){return{data:t.data.map((function(t){var e=o.O.format(t.lastTimeWatched),r=o.O.format(e,"YYYY-MM-DD");return Object.assign(Object.assign({},t),{lastTimeWatched:e,lastDateWatched:r})})),pagination:t.pagination}},success:e,error:r,always:n}},videoHistory:function(t,e,r,n,o){var i=t.sort().map((function(t){return"videoId=".concat(t)}));return{key:"video:history:videos:".concat(i.join("&")),url:"{gateway}/v1/videos/history?".concat(i.join("&")),normalizeOptions:{namespace:e},formatData:function(t){return(null==t?void 0:t.length)?t.map((function(t){return{id:t.videoId,lastProgressPoint:t.lastProgressPoint}})):t},success:r,error:n,always:o}},removeFromHistory:function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{url:"{gateway}/v1/users/me/videos/".concat(t,"/watch-history"),key:"remove:video:history:".concat(t),type:n.k.DELETE,invalidationKeys:["video:history"].concat((e=r,function(t){if(Array.isArray(t))return i(t)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}}}},79345:(t,e,r)=>{r.r(e),r.d(e,{WatchHistoryView:()=>z});var n=r(32735),o=r(23481),i=r(20354),a=r(49985),c=r(65858),u=r(87801),s=r(83345),l=r(51365),f=r(16714),d=r(69883),h=r(22902),m=r(79612),v=r(58321),p=r(44110),y=r(75896),g=r(110),b=r(75100),w=r(10741),E=r(22490);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}var P="watchHistory.watchHistoryVideoList";function A(t){var e=(0,h.T)().hasPermissions,r=y.m.groupBy(t.videoHistory,"lastDateWatched"),i={},a=Object.keys(r).sort().reverse();a.forEach((function(e){i[e]=r[e].map((function(e){var r=t.videos.find((function(t){return t.id.toString()===e.videoId.toString()}));return r?Object.assign(Object.assign({},r),{lastProgressPoint:e.lastProgressPoint}):null})).filter(Boolean)}));var c=a.reduce((function(t,e){var r,n,o,a,c=i[e].length,u=c+(null!==(r=t.runningTotal)&&void 0!==r?r:0);return Object.assign(Object.assign({},t),(n={runningTotal:u},a=u-c,(o=function(t){var e=function(t){if("object"!=S(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==S(e)?e:e+""}(o=e))in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a,n))}),{});return n.createElement(n.Fragment,null,a.map((function(r){return i[r].length?n.createElement("div",{key:r,className:"pb-3"},n.createElement("h2",{className:"h4"},function(t){var e=g.O.timeSince(new Date(t),"day");return 0===e?o.T.getPhrase(P,"today"):1===e?o.T.getPhrase(P,"yesterday"):g.O.format(t,"Do MMMM")}(r)),n.createElement(b.E4,{videos:i[r],getVideoAppLink:E.W.getAppLink,hasPermissions:e,startingPositionIndex:c[r],presentationAudiences:t.presentationAudiences,getPreviewQuestionsAppLink:function(t){return w.j.getPreviewQuestionsAppLink(t)},commonVideoProps:t.commonVideoProps})):n.createElement(n.Fragment,{key:r})})))}var L=r(87821),x=r(94644),F=r(31949),k=r(1575),j=r(39902),C=r(60115),O=r(97816),T="watchHistory.hooks",I=r(35223),H=r(10671);function N(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var V="watchHistory.hooks",_=r(97958),D=r(99742),M=r(14070),G=r(97291),R="watchHistory.watchHistoryEmptyState",W=o.T.encloseNamespace(R);function U(t){var e=t.hasDiscover;return n.createElement(s.D.Provider,{value:R},n.createElement(_.u,null,n.createElement(_.u.Image,{src:D.W.EmptyStates.WATCH_HISTORY,altText:W("info")}),n.createElement(_.u.Heading,null,n.createElement(s.x,{phrase:"heading"})),n.createElement(_.u.Info,null,n.createElement(s.x,{phrase:"info"})),e&&n.createElement(_.u.Cta,{text:o.T.getPhrase(R,"cta"),appLink:{application:G.O.DASHBOARD,action:M.e.Dashboard.HOME}})))}function q(){return n.createElement(s.D.Provider,{value:R},n.createElement(_.u,null,n.createElement(_.u.Image,{src:D.W.EmptyStates.WATCH_HISTORY_PUBLIC,altText:W("publicInfo")}),n.createElement(_.u.Heading,null,n.createElement(s.x,{phrase:"publicHeading"})),n.createElement(_.u.Info,null,n.createElement(s.x,{phrase:"publicInfo"})),n.createElement(_.u.Cta,{text:o.T.getPhrase(R,"publicCta"),appLink:{application:G.O.SIGN_UP,action:M.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:c.Vw.Click,location:c.LZ.WatchHistoryLanding,entity:c.py.AppLink,workflowPhase:c.eu.Start,descriptor:c.Yu.SignUp}})))}var B=r(1860);const Y={partialDate:"vq4eE"};function Q(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:2})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:3})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:2})),n.createElement("div",{className:"mb-3"},n.createElement("div",{className:"".concat(Y.partialDate," mb-2 partial-loading-background")}),n.createElement(B.S,{numVideos:5})))}function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function $(){$=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype),c=new C(n||[]);return o(a,"_invoke",{value:x(t,r,c)}),a}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var d="suspendedStart",h="suspendedYield",m="executing",v="completed",p={};function y(){}function g(){}function b(){}var w={};s(w,a,(function(){return this}));var E=Object.getPrototypeOf,S=E&&E(E(O([])));S&&S!==r&&n.call(S,a)&&(w=S);var P=b.prototype=y.prototype=Object.create(w);function A(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==Z(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function x(e,r,n){var o=d;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=F(c,n);if(u){if(u===p)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var s=f(e,r,n);if("normal"===s.type){if(o=n.done?v:h,s.arg===p)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function F(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,F(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),p;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,p;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,p):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,p)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function O(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(Z(e)+" is not iterable")}return g.prototype=b,o(P,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=s(b,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,s(t,u,"GeneratorFunction")),t.prototype=Object.create(P),t},e.awrap=function(t){return{__await:t}},A(L.prototype),s(L.prototype,c,(function(){return this})),e.AsyncIterator=L,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},A(P),s(P,u,"Generator"),s(P,a,(function(){return this})),s(P,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=O,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(j),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),p},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:O(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),p}},e}var K=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))},X="watchHistory.watchHistory";function z(){(0,m.M)({title:o.T.getPhrase(X,"pageTitle")});var t=i.a.useGetFetchAsync(),e=(0,h.T)(),r=e.hasPermissions,y=e.hasLocalPermissions,g=(0,d.Z)(),b=(0,v.U)({locationContext:c.LZ.VideoThumbnail}).commonVideoProps,w=function(){var e=(0,H._)({location:H.i.VideoItem});return Object.assign(Object.assign({},e),{getVideoActions:function(r,n){var i,u={label:o.T.getPhrase(V,"removeFromWatchHistory"),button:!1,svgName:I.vn.Delete,className:"text-danger",onClick:function(){!function(e){K(this,void 0,void 0,$().mark((function r(){return $().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,t(L.p.removeFromHistory(e.id));case 3:g.success(o.T.getPhrase(X,"removeFromHistorySuccess")),a.k.logUserAction({id:e.id,name:e.name},{entity:c.py.Video,actionType:c.Vw.Click,descriptor:c.XX.RemoveFromWatchHistory,location:c.LZ.VideoListItem}),r.next=10;break;case 7:r.prev=7,r.t0=r.catch(0),g.error(o.T.getPhrase(X,"removeFromHistoryError",{name:e.name}));case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))}(r)},group:"delete"};return[].concat(function(t){if(Array.isArray(t))return N(t)}(i=e.getVideoActions(r,n))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return N(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(t,e):void 0}}(i)||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.")}(),[u])}})}(),E=function(){var t,e=i.a.useGetFetch(),r=(0,d.Z)(),n=(0,h.T)().hasLocalPermissions,a=i.a.useBasicFetch(F.N.currentUser());function c(t){return L.p.userVideoHistory(t)}function u(t){return e(c(t))}var s=!n(f.E.ViewWatchHistoryLanding)&&a.hasCompleted,l=(0,C.K)(!!s&&c,u,(function(t,e){if(1===t)return(0,x.r)(e);r.error(o.T.getPhrase(T,"error"))})),m=l.items,v=l.hasMore,p=l.isFetching,y=null!==(t=null==m?void 0:m.map((function(t){return t.object})))&&void 0!==t?t:[],g=(0,j.F)(y.map((function(t){return t.id})),k.R.watchHistoryVideos);return(0,O.V)(y),{videoHistory:m,videos:y,fetchNext:u,isFetching:p,hasMore:v,hasFetchedFirstPage:g.hasFirstRequestCompleted}}(),S=E.videoHistory,P=E.videos,_=E.fetchNext,D=E.hasMore,M=E.hasFetchedFirstPage,G=E.isFetching,R=(0,p.i)();return y(f.E.ViewWatchHistoryLanding)?n.createElement(q,null):n.createElement(s.D.Provider,{value:X},n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2"},n.createElement(s.x,{phrase:"heading"})),M?P.length?n.createElement(l.M.Provider,{value:w},n.createElement(A,{videoHistory:S,videos:P,presentationAudiences:R.data,commonVideoProps:b}),(D||G)&&n.createElement(u._,{isFetching:G,fetchNext:_})):n.createElement(U,{hasDiscover:r(f.C.ViewDiscover)}):n.createElement(Q,null)))}},58321:(t,e,r)=>{r.d(e,{U:()=>m});var n=r(20354),o=r(16714),i=r(39151),a=r(1666),c=r(31949),u=r(22902),s=r(37802),l=r(22490),f=r(82431),d=r(46390),h=r(27638);function m(t){var e,r,m,v=t||{},p=v.locationContext,y=v.mtv,g=v.flightNamespace,b=v.sharedPlaylist,w=(0,d.G)(),E=w.isPlugin,S=w.params,P=(0,h.u)(p,g),A=P.setFavourite,L=P.canFavourite,x=(0,s.r)(null),F=x.hasTopicDirectories,k=x.isLoadingSettings,j=(0,u.T)(),C=j.hasPermissions,O=j.isLoaded,T=C(o.C.StudentExperience),I=n.a.useBasicFetch(i.L.config()),H=n.a.useBasicFetch(c.N.currentUser()),N=n.a.useBasicFetch((null===(e=H.data)||void 0===e?void 0:e.isAuthenticated)&&a.h.yearGroups(H.data.customerId));return{hasCommonVideoPropsCompleted:!k&&O&&I.hasCompleted&&H.hasCompleted&&(!(null===(r=H.data)||void 0===r?void 0:r.isAuthenticated)||N.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(t){var e;return"series"in t?b&&!(null===(e=H.data)||void 0===e?void 0:e.isAuthenticated)?null:f.j.getSeriesAppLink(t.series,{mtv:y}):null},isPlugin:E,isPluginPopup:!!(null==S?void 0:S.popup),canFavourite:L,setFavourite:A,imageCdnUrl:null===(m=I.data)||void 0===m?void 0:m.imageCdnUrl,yearGroups:N.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:T}}}},44110:(t,e,r)=>{r.d(e,{i:()=>a});var n=r(20354),o=r(89454),i=r(86698),a=function(){var t=(0,i.y)({redirectOnError:!0}),e=t.activePresentation,r=t.getFallbackPresentation,a=e||r();return n.a.useBasicFetch(!!a&&o.O.presentationAudiences(a.id))}},97816:(t,e,r)=>{r.d(e,{V:()=>a});var n=r(1575),o=r(39902),i=r(31908);function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=function(t){return t?Array.isArray(t)?t.filter((function(t){return!!t&&(i.M.isVideo(t)||i.M.isClip(t))})):"data"in t?t.data.filter((function(t){return!!t&&(i.M.isVideo(t)||i.M.isClip(t))})):[]:[]}(t).map((function(t){return t.id}));(0,o.F)(r,(function(t){return n.R.videoMixinAssocs(t,e.flightNamespace)}))}}}]);
|
|
3
|
+
//# sourceMappingURL=9345-0a7f58bb53-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9345-0a7f58bb53-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/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/projects/lite/src/apps/watch-history/flight-requests/VideoHistoryRequests.ts","file:///app/packages/projects/lite/src/apps/watch-history/components/watch-history-video-list/WatchHistoryVideoList.tsx","file:///app/packages/projects/lite/src/apps/watch-history/hooks/useWatchHistory.ts","file:///app/packages/projects/lite/src/apps/watch-history/hooks/useWatchHistoryVideoActions.ts","file:///app/packages/projects/lite/src/apps/watch-history/views/watch-history/empty-state/WatchHistoryEmptyState.tsx","file:///app/packages/projects/lite/src/apps/watch-history/views/watch-history/partial-loading/partial-watch-history.scss","file:///app/packages/projects/lite/src/apps/watch-history/views/watch-history/partial-loading/PartialWatchHistory.tsx","file:///app/packages/projects/lite/src/apps/watch-history/views/watch-history/WatchHistoryView.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/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 { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { VideoHistoryCollection } from 'libs/shared/interfaces';\n\nexport const VideoHistoryRequests = {\n userVideoHistory(\n cursor?: string,\n success?: (data: HashObject) => void,\n error?: (Xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n let key = 'video:history';\n let url = `{gateway}/v1/users/me/watch-history`;\n\n if (cursor) {\n key += `:${cursor}`;\n url += `?cursor=${cursor}`;\n }\n\n return {\n key,\n url,\n formatData: (historyCollection: VideoHistoryCollection) => {\n return {\n data: historyCollection.data.map(historyData => {\n // Convert last watched times from UTC to local time\n const lastTimeWatchedLocal = DateHelper.format(historyData.lastTimeWatched);\n const lastDateWatchedLocal = DateHelper.format(lastTimeWatchedLocal, 'YYYY-MM-DD');\n\n return {\n ...historyData,\n lastTimeWatched: lastTimeWatchedLocal,\n lastDateWatched: lastDateWatchedLocal\n };\n }),\n pagination: historyCollection.pagination\n };\n },\n success,\n error,\n always\n };\n },\n\n videoHistory(\n ids: string[],\n namespace?: string,\n success?: (data: HashObject) => void,\n error?: (Xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const params = ids.sort().map(i => `videoId=${i}`);\n\n return {\n key: `video:history:videos:${params.join('&')}`,\n url: `{gateway}/v1/videos/history?${params.join('&')}`,\n normalizeOptions: {\n namespace\n },\n formatData: (historyCollection: HashObject[]) => {\n if (!historyCollection?.length)\n return historyCollection;\n\n /**\n * Data is formatted to enable it to be merged with the existing video object in the store\n * Where we need to merge more history properties with the video object, map them below.\n */\n return historyCollection.map((watchHistory: HashObject) => ({\n id: watchHistory.videoId,\n lastProgressPoint: watchHistory.lastProgressPoint\n }));\n },\n success,\n error,\n always\n };\n },\n\n removeFromHistory(videoId: string, invalidationKeys: string[] = []): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/videos/${videoId}/watch-history`,\n key: `remove:video:history:${videoId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [\n 'video:history',\n ...invalidationKeys\n ]\n };\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { PresentationAudience, VideoHistory, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst namespace = 'watchHistory.watchHistoryVideoList';\n\nfunction formatDate(date: string): string {\n const diff = DateHelper.timeSince(new Date(date), 'day');\n\n if (diff === 0)\n return LanguageService.getPhrase(namespace, 'today');\n\n if (diff === 1)\n return LanguageService.getPhrase(namespace, 'yesterday');\n\n return DateHelper.format(date, 'Do MMMM');\n}\n\ninterface WatchHistoryVideoListProps {\n videoHistory: VideoHistory[];\n videos: VideoTypes[];\n presentationAudiences?: PresentationAudience[];\n commonVideoProps: CommonVideoProps;\n}\n\nexport function WatchHistoryVideoList(props: WatchHistoryVideoListProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const historyGroups = ArrayHelper.groupBy(props.videoHistory, 'lastDateWatched');\n\n const videoGroups: { [index: string]: VideoTypes[] } = {};\n\n const sortedDates = Object.keys(historyGroups).sort().reverse();\n\n // Map video history to video objects and mixin lastProgressPoint\n sortedDates.forEach(date => {\n videoGroups[date] = historyGroups[date].map(history => {\n const video = props.videos.find(v => v.id.toString() === history.videoId.toString());\n\n if (!video)\n return null;\n\n return {\n ...video,\n lastProgressPoint: history.lastProgressPoint\n };\n }).filter(Boolean);\n });\n\n const sortedDatesGroupCount = sortedDates.reduce((dateCounts: HashObject, currentDate: string) => {\n const dateTotal = videoGroups[currentDate].length;\n const runningTotal = dateTotal + (dateCounts.runningTotal ?? 0);\n\n return {\n ...dateCounts,\n runningTotal,\n [currentDate]: runningTotal - dateTotal\n };\n }, {});\n\n return (\n <>\n {sortedDates.map(date => {\n // TODO: Fix bug where watch history endpoint returns workspace videos that cannot be fetched/displayed.\n // This is caused by 1 user sharing their workspace video with another user.\n if (!videoGroups[date].length)\n return <React.Fragment key={date}></React.Fragment>;\n\n return (\n <div key={date} className='pb-3'>\n <h2 className='h4'>{formatDate(date)}</h2>\n <VideoList\n videos={videoGroups[date]}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n hasPermissions={hasPermissions}\n startingPositionIndex={sortedDatesGroupCount[date]}\n presentationAudiences={props.presentationAudiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n })}\n </>\n );\n}","import { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocalPermissionName } from 'libs/shared/enums/PermissionName';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, VideoHistory } from 'libs/shared/interfaces';\n\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { VideoHistoryRequests } from '../flight-requests/VideoHistoryRequests';\n\nconst namespace = 'watchHistory.hooks';\n\nexport function useWatchHistory() {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n const { hasLocalPermissions } = usePermissions();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n function getUserVideoHistoryRequest(cursor?: string) {\n return VideoHistoryRequests.userVideoHistory(cursor);\n }\n\n function fetchNext(cursor?: string) {\n return fetch(getUserVideoHistoryRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n \n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewWatchHistoryLanding) && currentUser.hasCompleted;\n\n const {\n items: videoHistory,\n hasMore,\n isFetching\n } = useInfiniteList<VideoHistory>(shouldFetch ? getUserVideoHistoryRequest : false, fetchNext, onError);\n\n const videos = videoHistory?.map(v => v.object) ?? [];\n \n // Hydrate the videos\n const hydratedVideos = useGrowingBatchFetch(videos.map(v => v.id), VideoRequests.watchHistoryVideos);\n\n useVideoMixin(videos);\n\n return {\n videoHistory,\n videos,\n fetchNext,\n isFetching,\n hasMore,\n hasFetchedFirstPage: hydratedVideos.hasFirstRequestCompleted\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { VideoActionsOptions } from 'libs/shared/context/VideoActionsContext';\nimport { Video, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\n\nconst namespace = 'watchHistory.hooks';\n\nexport function useWatchHistoryViewActions(removeFromVideoHistory: (v: Video) => void) {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const getVideoActions = (video: VideoTypes, options?: VideoActionsOptions) => {\n const removeFromWatchHistoryAction = {\n label: LanguageService.getPhrase(namespace, 'removeFromWatchHistory'),\n button: false,\n svgName: cvSvgLibrary.Delete,\n className: 'text-danger',\n onClick: () => {\n removeFromVideoHistory(video);\n },\n // Event logging for this action is handled by the `removeFromVideoHistory` callback\n group: 'delete'\n };\n\n return [ ...videoActions.getVideoActions(video, options), removeFromWatchHistoryAction ];\n };\n\n return {\n ...videoActions,\n getVideoActions\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'watchHistory.watchHistoryEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface WatchHistoryEmptyStateProps {\n hasDiscover: boolean;\n}\n\nexport function WatchHistoryEmptyState({ hasDiscover }: WatchHistoryEmptyStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.WATCH_HISTORY} altText={getPhrase('info')} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n {hasDiscover &&\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }}\n />\n }\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function WatchHistoryPublicEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.WATCH_HISTORY_PUBLIC} altText={getPhrase('publicInfo')}/>\n <EmptyState.Heading><Text phrase='publicHeading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='publicInfo' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'publicCta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.WatchHistoryLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialDate\":\"vq4eE\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-watch-history.scss';\n\nexport function PartialWatchHistory(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <div className={`${styles.partialDate} mb-2 partial-loading-background`} />\n <PartialVideoList numVideos={2} />\n </div>\n\n <div className='mb-3'>\n <div className={`${styles.partialDate} mb-2 partial-loading-background`} />\n <PartialVideoList numVideos={3} />\n </div>\n\n <div className='mb-3'>\n <div className={`${styles.partialDate} mb-2 partial-loading-background`} />\n <PartialVideoList numVideos={2} />\n </div>\n\n <div className='mb-3'>\n <div className={`${styles.partialDate} mb-2 partial-loading-background`} />\n <PartialVideoList numVideos={5} />\n </div>\n </>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Video } from 'libs/shared/interfaces';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\n\nimport { WatchHistoryVideoList } from 'apps/watch-history/components/watch-history-video-list/WatchHistoryVideoList';\nimport { VideoHistoryRequests } from 'apps/watch-history/flight-requests/VideoHistoryRequests';\nimport { useWatchHistory } from 'apps/watch-history/hooks/useWatchHistory';\nimport { useWatchHistoryViewActions } from 'apps/watch-history/hooks/useWatchHistoryVideoActions';\n\nimport { WatchHistoryEmptyState, WatchHistoryPublicEmptyState } from './empty-state/WatchHistoryEmptyState';\nimport { PartialWatchHistory } from './partial-loading/PartialWatchHistory';\n\nconst namespace = 'watchHistory.watchHistory';\n\nexport function WatchHistoryView(): JSX.Element {\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n const fetchAsync = Flight.useGetFetchAsync();\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const alerts = useAlerts();\n\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const videoActions = useWatchHistoryViewActions(removeFromVideoHistory);\n\n const {\n videoHistory,\n videos,\n fetchNext,\n hasMore,\n hasFetchedFirstPage,\n isFetching\n } = useWatchHistory();\n\n async function removeFromVideoHistory(video: Video): Promise<void> {\n try {\n await fetchAsync<void>(VideoHistoryRequests.removeFromHistory(video.id));\n\n alerts.success(LanguageService.getPhrase(namespace, 'removeFromHistorySuccess'));\n\n AnalyticsHelper.logUserAction({\n id: video.id,\n name: video.name\n }, {\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: VideoActionDescriptor.RemoveFromWatchHistory,\n location: LocationContext.VideoListItem\n });\n } catch {\n alerts.error(LanguageService.getPhrase(namespace, 'removeFromHistoryError', { name: video.name }));\n }\n }\n \n const audiences = usePresentationAudiences();\n\n if (hasLocalPermissions(LocalPermissionName.ViewWatchHistoryLanding))\n return <WatchHistoryPublicEmptyState />;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-3'>\n <h1 className='h2'><Text phrase='heading' /></h1>\n {(() => {\n if (!hasFetchedFirstPage)\n return <PartialWatchHistory />;\n\n if (!videos.length)\n return <WatchHistoryEmptyState hasDiscover={hasPermissions(PermissionName.ViewDiscover)} />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <WatchHistoryVideoList\n videoHistory={videoHistory}\n videos={videos}\n presentationAudiences={audiences.data}\n commonVideoProps={commonVideoProps}\n />\n {(hasMore || isFetching) && <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />}\n </VideoActionsContext.Provider>\n );\n })()}\n </div>\n </LanguageNamespaceContext.Provider>\n );\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 { 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","SCROLL_TOLERANCE","useInfiniteList","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","nextCursor","hasMore","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","totalItems","hasFirstPageCompleted","VideoHistoryRequests","userVideoHistory","success","error","always","url","formatData","historyCollection","historyData","lastTimeWatchedLocal","lastTimeWatched","lastDateWatchedLocal","lastDateWatched","pagination","videoHistory","ids","namespace","params","sort","i","join","normalizeOptions","watchHistory","videoId","lastProgressPoint","removeFromHistory","invalidationKeys","type","WatchHistoryVideoList","props","hasPermissions","usePermissions","historyGroups","ArrayHelper","videoGroups","sortedDates","Object","keys","reverse","date","history","video","videos","find","v","filter","Boolean","sortedDatesGroupCount","dateCounts","currentDate","dateTotal","runningTotal","className","diff","DateHelper","Date","LanguageService","formatDate","VideoList","getVideoAppLink","VideoAppLinkHelper","startingPositionIndex","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","commonVideoProps","getPhrase","WatchHistoryEmptyState","hasDiscover","value","EmptyState","src","ImageUrls","altText","Text","phrase","text","appLink","application","action","WatchHistoryPublicEmptyState","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","PartialWatchHistory","PartialVideoList","numVideos","WatchHistoryView","useSetPageMetadata","title","fetchAsync","hasLocalPermissions","alerts","useCommonVideoProps","locationContext","videoActions","useVideoActions","getVideoActions","removeFromWatchHistoryAction","label","button","svgName","onClick","AnalyticsHelper","name","removeFromVideoHistory","group","useWatchHistoryViewActions","fetch","currentUser","UserRequests","getUserVideoHistoryRequest","shouldFetch","pageNumber","httpStatus","object","hydratedVideos","VideoRequests","useVideoMixin","hasFetchedFirstPage","useWatchHistory","audiences","usePresentationAudiences","VideoActionsContext","InfiniteScrollFooter","PermissionName","mtv","flightNamespace","sharedPlaylist","isPlugin","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","config","yearGroups","isAuthenticated","customerId","hasCommonVideoPropsCompleted","subTextType","getSubTextAppLink","series","isPluginPopup","popup","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","redirectOnError","activePresentation","getFallbackPresentation","presentation","objects","videoIds","Array","isArray","o","getValidObjects"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9352],{39157:(e,t,n)=>{n.d(t,{HI:()=>d,R6:()=>o,Rt:()=>g,UU:()=>m,Zs:()=>u,nq:()=>p});var r=n(75896),a=n(94892),s=n(28972),i=n(8246),c=n(83140),l=n(80845);function o(e,t,n){var s={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},i=(0,l.Q)(e),c=new Set(i.map((function(e){return e.id})));t.students.forEach((function(t){var i=Object.assign(Object.assign({},t),{summary:g(e,t)});i.summary.awaitingMarking?s.markingRequired.push(i):r.m.last(t.results).attempts.filter((function(e){var t;return!!c.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length===c.size?(s.completed.push(i),i.summary.percentCorrect>=((null==n?void 0:n.HIGH)||a.i.HIGH)&&s.highScore.push(i),i.summary.percentCorrect<((null==n?void 0:n.MODERATE)||a.i.MODERATE)&&s.lowScore.push(i)):s.notCompleted.push(i)}));var o=r.m.sortBy(s.lowScore,(function(e){return e.summary.percentCorrect})),u=r.m.sortBy(s.highScore,(function(e){return-e.summary.percentCorrect}));return Object.assign(Object.assign({},s),{lowScore:o,highScore:u})}function u(e,t){return(0,l.Wn)(e).find((function(e){return e.id.toString()===t.toString()}))}function m(e){return"".concat(e.questionId,":").concat(e.resultId)}function d(e,t,n){var r=(0,l.j_)(t),a=(0,l.f6)(e,r);return(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Correct})))?i.N.Correct:(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Incorrect})))?i.N.Incorrect:void 0}function p(e,t){var n=t.students.length,r=0,a=0,i=0,o=0,u=0;return t.students.forEach((function(t){var n=(0,l.j_)(t);if(n){u+=t.results.length;var m=c.A.isInteractionCorrect(e,n);m===s.w.Correct&&r++,m===s.w.UnAnswered&&i++,m===s.w.AwaitingMarking&&o++,m!==s.w.UnAnswered&&a++}})),{percentCorrect:n>0?r/n:0,correct:r,answered:a,unanswered:i,awaitingMarking:o,attempts:u}}function g(e,t){var n=(0,l.j_)(t),r=(0,l.Q)(e),a=r.length,i=0,o=0;r.forEach((function(e){var t=c.A.isInteractionCorrect(e,n);t===s.w.Correct&&i++,t===s.w.AwaitingMarking&&o++}));var u=a>0?i/a:0,m=new Set(r.map((function(e){return e.id}))),d=n.attempts.filter((function(e){var t;return!!m.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length;return{answered:d,attempts:t.results.length,unanswered:a-d,percentCorrect:u,correct:i,awaitingMarking:o}}},28972:(e,t,n)=>{var r;n.d(t,{w:()=>r}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(r||(r={}))},8246:(e,t,n)=>{var r;n.d(t,{N:()=>r}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(r||(r={}))},83140:(e,t,n)=>{n.d(t,{A:()=>v});var r=n(28972),a=n(8246),s=n(38129);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function c(e,t,n){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(){return r.w.NotApplicable}function o(e,t){var n=e.actionableItems.filter((function(e){return e.isCorrect}));return n.every((function(e){return!t(e.id)}))?r.w.UnAnswered:n.every((function(e){var n;return e.name.trim().toLowerCase()===(null===(n=t(e.id))||void 0===n?void 0:n.trim().toLowerCase())}))?r.w.Correct:r.w.Incorrect}function u(e,t){return e.actionableItems.every((function(e){return!t(e.id)}))?r.w.UnAnswered:e.actionableItems.filter((function(e){return e.isCorrect})).every((function(e){var n,r=t(e.id);return(null==r?void 0:r.toString())===(null===(n=e.id)||void 0===n?void 0:n.toString())||r===e.name}))?r.w.Correct:r.w.Incorrect}function m(e,t){return function(n){var r=t.attempts.find((function(t){return t.id===e.id}));return null==r?void 0:r.answers.find((function(e){return e.id===n}))}}function d(e,t){var n=m(e,t);return u(e,(function(e){var t=n(e);return null==t?void 0:t.text}))}function p(e,t){return function(e,t){var n;return e.actionableItems.forEach((function(e){var s=t(e.id);n=s?s.status!==a.N.Correct?s.status!==a.N.Incorrect?r.w.AwaitingMarking:r.w.Incorrect:r.w.Correct:r.w.UnAnswered})),n}(e,m(e,t))}var g=c(c(c(c(c(c(c({},s.Z9.Annotation,l),s.Z9.Image,l),s.Z9.MissingWord,(function(e,t){var n=m(e,t);return o(e,(function(e){var t=n(e);return null==t?void 0:t.text}))})),s.Z9.MultipleChoice,d),s.Z9.ShortAnswer,p),s.Z9.TrueOrFalse,d),s.Z9.Illustration,p),v={notApplicable:l,awaitingMarking:function(){return r.w.AwaitingMarking},isMissingWordCorrect:o,isMultipleChoiceCorrect:u,isInteractionCorrect:function(e,t){return(0,g[e.typeId])(e,t)}}},89352:(e,t,n)=>{n.d(t,{m:()=>ie});var r=n(32735),a=n(23481),s=n(84621),i=n(21976),c=n(70072),l=n(83345),o=n(35223);const u={tealChart:"lZZf0",grayChart:"wJQc4"};function m(e){return m="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},m(e)}function d(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||p(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 p(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}function g(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 v="shared.insightAverageAttempts",f=a.T.encloseNamespace(v);function h(e){var t,n,a=function(){var t=e.students.reduce((function(e,t){var n,r,a,s=t.summary.attempts.toString();return s in e||Object.assign(e,(n={},a=0,(r=function(e){var t=function(e){if("object"!=m(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=m(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==m(t)?t:t+""}(r=s))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n)),e[s]++,e}),{});return Object.keys(t).length?t:{0:0}}(),g=Math.max.apply(Math,d(Object.keys(a).map((function(e){return a[e]})))),h=Object.keys(a).reduce((function(e,t){return a[t]===g?[].concat(d(e),[t]):e}),[]),y=(t=0===a[0],{categories:Object.keys(a),series:[{type:"column",color:a[0]?"#EAEAEA":"#40C2BB",borderRadius:4,dataLabels:{enabled:!t,style:c.d,inside:!1,overflow:"allow",crop:!1},data:Object.keys(a).map((function(e){var n=0!==g&&a[e]===g;return{className:"".concat(t?u.grayChart:u.tealChart," ").concat(a[e]!==g&&0!==a[e]?"opacity-25":""),borderWidth:n?2:0,borderColor:n?"black":"",y:a[e]}}))}]});return r.createElement(s.L,{title:f("title"),svgName:o.vn.Refresh,svgClassName:"bg-light-purple text-purple"},r.createElement("p",null,h.length?r.createElement(l.x,{namespace:v,phrase:"averageAttempts",options:{smartCount:(n=Object.entries(a).reduce((function(e,t){var n,r,a=(r=2,function(e){if(Array.isArray(e))return e}(n=t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,c=[],l=!0,o=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=s.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){o=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw a}}return c}}(n,r)||p(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=a[0],i=a[1];return e.totalAttempts+=+s*i,e.totalUsers+=i,e}),{totalAttempts:0,totalUsers:0}),0===n.totalUsers?0:Math.round(n.totalAttempts/n.totalUsers*100)/100)}}):r.createElement(l.x,{namespace:v,phrase:"noAttempts"})),r.createElement("div",{className:"mt-auto"},r.createElement(i.x,{label:f("attempts"),chartData:y})))}var y=n(75896);const b={redChart:"G7zOw",yellowChart:"k34mm",greenChart:"vBneA",blueChart:"RPTWm",grayChart:"k4JFZ",borderDark:"LWor3"};var E="shared.insightAverageScore",k=a.T.encloseNamespace(E);function w(e){return r.createElement(s.L,{title:k("title"),svgName:o.vn.Analytics,svgClassName:"bg-light-orange text-orange"},r.createElement("p",null,e.students.length?r.createElement(l.x,{namespace:E,phrase:"averageScore",options:(c=e.students.map((function(e){return e.summary.percentCorrect})),u=c.reduce((function(e,t){return e+t}),0)/c.length,m=y.m.last(y.m.last(e.students).results).attempts.length,{averageScore:Math.round(m*u),totalQuestions:m,averagePercentage:(100*u).toFixed(1)})}):r.createElement(l.x,{namespace:E,phrase:"noAnswers"})),r.createElement(i.x,{label:"".concat(k("studentScores")," (%)"),chartData:(t=Array(11).fill(0),n=e.students.reduce((function(e,t){return e[Math.floor(10*t.summary.percentCorrect)]++,e}),t),a=["0","10","20","30","40","50","60","70","80","90","100"],{categories:a,series:[{type:"column",color:"#4E9ACE",borderRadius:4,data:n.map((function(e,t){var n=Number(a[t]);return{className:"".concat(function(e,t){return 0===t?b.grayChart:e<50?b.redChart:e<70?b.yellowChart:e<90?b.greenChart:b.blueChart}(n,e)),y:e}}))}]})}));var t,n,a,c,u,m}var A=n(98551),C=a.T.encloseNamespace("shared.insightCompletedStudents");function N(e){return r.createElement(s.L,{title:C("title"),svgName:o.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},r.createElement(A.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:C("completedStudents"),appLink:e.resultsAppLink,appLinkText:C("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var S=n(51870),I=n(39157),U=n(15611),L=n(86572),j=n(40782),O=n(80845),M="shared.insightEasiestQuestion",x=a.T.encloseNamespace(M);function q(e){var t,n=r.useMemo((function(){return t=e.interactive,n=e.results,r=(0,O.Q)(t).map((function(e){return Object.assign(Object.assign({},e),{resultsSummary:(0,I.nq)(e,n)})})).filter((function(e){return!!e.resultsSummary.answered&&!e.resultsSummary.awaitingMarking})),a=y.m.sortBy(r,(function(e){return e.resultsSummary.percentCorrect})),y.m.last(a);var t,n,r,a}),[e.results.students.length]);return r.createElement(s.L,{title:x("title"),svgName:o.vn.StarOutline,svgClassName:"bg-light-blue text-blue"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(j.O,{percentage:null===(t=null==n?void 0:n.resultsSummary)||void 0===t?void 0:t.percentCorrect,layout:j.I.LabelInside}),n?r.createElement("div",{className:"d-flex ms-2"},r.createElement(L.y,{interaction:n,iconClassName:"flex-shrink-0"})):r.createElement("span",{className:"ms-2"},x("noAnswers"))),n&&r.createElement(U.F,{appLink:Object.assign(Object.assign({},e.questionsAppLink),{params:Object.assign(Object.assign({},e.questionsAppLink.params),{sortBy:"score_desc"})}),className:"text-info"},r.createElement(l.x,{namespace:M,phrase:"viewQuestions"})))}var R="shared.insightHardestQuestion",T=a.T.encloseNamespace(R);function B(e){var t,n=r.useMemo((function(){return t=e.interactive,n=e.results,r=(0,O.Q)(t).map((function(e){return Object.assign(Object.assign({},e),{resultsSummary:(0,I.nq)(e,n)})})).filter((function(e){return!!e.resultsSummary.answered&&!e.resultsSummary.awaitingMarking})),a=y.m.sortBy(r,(function(e){return e.resultsSummary.percentCorrect})),y.m.first(a);var t,n,r,a}),[e.results.students.length]);return r.createElement(s.L,{title:T("title"),svgName:o.vn.QuestionMark,svgClassName:"bg-light-orange text-orange"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(j.O,{percentage:null===(t=null==n?void 0:n.resultsSummary)||void 0===t?void 0:t.percentCorrect,layout:j.I.LabelInside}),n?r.createElement("div",{className:"d-flex ms-2"},r.createElement(L.y,{interaction:n,iconClassName:"flex-shrink-0"})):r.createElement("span",{className:"ms-2"},T("noAnswers"))),n&&r.createElement(U.F,{appLink:Object.assign(Object.assign({},e.questionsAppLink),{params:Object.assign(Object.assign({},e.questionsAppLink.params),{sortBy:"score_asc"})}),className:"text-info"},r.createElement(l.x,{namespace:R,phrase:"viewQuestions"})))}var _=n(50916),H=a.T.encloseNamespace("shared.insightHighScoringStudents");function P(e){return r.createElement(s.L,{title:H("title"),svgName:o.vn.Trophy,svgClassName:"bg-light-teal text-teal",count:e.students.length},r.createElement(A.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.greenChartImageUrl,description:H(e.completed.length?"noStudents":"highScore"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:Object.assign(Object.assign({},e.resultsAppLink.params),{sortBy:"score_desc"})}),appLinkText:H("viewByHighest"),anonymiseUsers:e.anonymiseUsers}))}var W=a.T.encloseNamespace("shared.insightLowScoringStudents");function Z(e){return r.createElement(s.L,{title:W("title"),svgName:o.vn.Hand,svgClassName:"bg-light-red text-red",count:e.students.length},r.createElement(A.y,{students:e.students.map((function(e){return Object.assign(Object.assign({},e.user),{percentage:e.summary.percentCorrect})})),imageCdnUrl:e.imageCdnUrl,imageUrl:e.completed.length?e.heartImageUrl:e.redChartImageUrl,description:W(e.completed.length?"doingWell":"lowScore"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:Object.assign(Object.assign({},e.resultsAppLink.params),{sortBy:"score_asc"})}),appLinkText:W("viewByLowest"),anonymiseUsers:e.anonymiseUsers}))}var Q=a.T.encloseNamespace("shared.insightMarkingRequired");function D(e){return r.createElement(s.L,{title:Q("title"),svgName:o.vn.Hand,svgClassName:"bg-light-blue text-blue",count:e.students.length},r.createElement(A.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:Q("studentsRequireMarking"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:{filterBy:"marking_required"}}),appLinkText:Q("viewAll"),anonymiseUsers:e.anonymiseUsers}))}function F(e){return function(e){if(Array.isArray(e))return G(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return G(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)?G(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(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 z=a.T.encloseNamespace("shared.insightNotCompletedStudents");function J(e){var t,n,a,i=(t=e.markingRequiredStudents.map((function(e){return null==e?void 0:e.user.id})),n=e.completedStudents.map((function(e){return null==e?void 0:e.user.id})),a=e.classroomStudents.filter((function(e){return!t.includes(e.id)&&!n.includes(e.id)})),y.m.uniq([].concat(F(e.notCompletedStudents.map((function(e){return e.user}))),F(a)),"id"));return r.createElement(s.L,{title:z("title"),svgName:o.vn.Puzzle,svgClassName:"bg-light-teal text-teal",count:i.length},r.createElement(A.y,{students:i,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:z("completed"),appLink:Object.assign(Object.assign({},e.resultsAppLink),{params:"not_completed"}),appLinkText:z("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var $=n(94892),K=n(99742),V=n(91693),X=n(13759),Y="lite.insightsMask";function ee(e){return r.createElement("div",{className:"".concat(e.requiresMarking&&X.Z.mask," position-relative")},r.createElement("div",{className:e.requiresMarking?"position-absolute top-0":""},e.children),r.createElement("div",{className:e.requiresMarking?"".concat(X.Z.backdrop," d-flex flex-column align-items-center justify-content-start py-5"):""},!!e.requiresMarking&&r.createElement("div",{className:"text-center w-50"},r.createElement("img",{src:K.W.Insights.MARKING_RESPONSES,className:"mb-3",width:288}),r.createElement("h2",{className:"h3 mb-3"},r.createElement(l.x,{namespace:Y,phrase:"markHeading"})),r.createElement("p",{className:"mb-3"},r.createElement(l.x,{namespace:Y,phrase:"markDescription"})),r.createElement(V.h,{svgName:o.vn.Check,className:"btn btn-dark mb-3",appLink:Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},e.appLink.params),{filterBy:"marking_required"})})},r.createElement(l.x,{namespace:Y,phrase:"markResponses",options:{smartCount:e.requiresMarking}})),r.createElement("button",{className:"btn btn-link d-block p-0 mx-auto",onClick:e.hideMarkingRequiredMask},r.createElement(l.x,{namespace:Y,phrase:"seeIncomplete"})))))}var te=n(49673);const ne={partialInsights:"jf2hT"};function re(){return r.createElement("div",null,r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")}))),r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")}))),r.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col-6"},r.createElement("div",{className:"".concat(ne.partialInsights," rounded partial-loading-background")}))))}function ae(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 se="insights.interactiveInsightsOverview";function ie(e){var t,n,a,s,i=(a=r.useState(!1),s=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,c=[],l=!0,o=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=s.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){o=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw a}}return c}}(a,s)||function(e,t){if(e){if("string"==typeof e)return ae(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)?ae(e,t):void 0}}(a,s)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=i[0],o=i[1],u=e.hasDataLoaded&&(0,I.R6)(e.interactive,e.results,$.T);return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(re,null),e.hasDataLoaded&&r.createElement(te.u,{video:e.interactiveMetadata,hasShared:e.hasShared},r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(l.x,{namespace:se,phrase:"studentResponses"}),r.createElement("span",null,": ",e.results.students.length,e.classroomStudents?"/".concat(e.classroomStudents.data.length):"")),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col"},r.createElement(D,{imageUrl:K.W.Insights.SPEECH_BUBBLE_ASTERISK,resultsAppLink:e.interactiveInsightsAppLinks.resultsAppLink,imageCdnUrl:e.config.imageCdnUrl,students:(n=u.markingRequired,n.map((function(e){return e.user||e.publicUser}))),anonymiseUsers:e.anonymiseUsers})),e.classroomFilterOnly&&r.createElement("div",{className:"col"},r.createElement(J,{markingRequiredStudents:u.markingRequired,completedStudents:u.completed,notCompletedStudents:u.notCompleted,classroomStudents:e.classroomStudents.data,imageCdnUrl:e.config.imageCdnUrl,imageUrl:K.W.Insights.JIGSAW,resultsAppLink:e.interactiveInsightsAppLinks.resultsAppLink,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col"},r.createElement(N,{students:u.completed,imageCdnUrl:e.config.imageCdnUrl,imageUrl:K.W.Insights.AVATAR,resultsAppLink:e.interactiveInsightsAppLinks.resultsAppLink,anonymiseUsers:e.anonymiseUsers})))),r.createElement(ee,{requiresMarking:!c&&u.markingRequired.length,appLink:e.interactiveInsightsAppLinks.resultsAppLink,hideMarkingRequiredMask:function(){return o(!0)}},r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(l.x,{namespace:se,phrase:"studentsPerformance"})),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col-6"},r.createElement(Z,{redChartImageUrl:K.W.Insights.RED_CHART,heartImageUrl:K.W.Insights.SPEECH_BUBBLE_HEART,resultsAppLink:e.interactiveInsightsAppLinks.resultsAppLink,imageCdnUrl:e.config.imageCdnUrl,students:u.lowScore,completed:u.completed,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col-6"},r.createElement(P,{greenChartImageUrl:K.W.Insights.GREEN_CHART,resultsAppLink:e.interactiveInsightsAppLinks.resultsAppLink,imageCdnUrl:e.config.imageCdnUrl,students:u.highScore,completed:u.completed,anonymiseUsers:e.anonymiseUsers})),r.createElement("div",{className:"col-6"},r.createElement(B,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,questionsAppLink:e.interactiveInsightsAppLinks.questionsAppLink})),r.createElement("div",{className:"col-6"},r.createElement(q,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,questionsAppLink:e.interactiveInsightsAppLinks.questionsAppLink})))),r.createElement("section",{className:"mb-5"},r.createElement("h2",{className:"h4"},r.createElement(l.x,{namespace:se,phrase:"classPerformance"})),r.createElement("div",{className:"row g-3"},r.createElement("div",{className:"col-6"},r.createElement(w,{students:u.completed})),r.createElement("div",{className:"col-6"},r.createElement(h,{students:u.completed})),r.createElement("div",{className:"col-6"},r.createElement(S.i,{osCount:null===(t=e.videoViews)||void 0===t?void 0:t.osCount})),r.createElement("div",{className:"col-6"},r.createElement(_.b,{engagement:e.aggregateEngagement,heatmapAppLink:e.interactiveInsightsAppLinks.heatmapAppLink})))))))}}}]);
|
|
2
|
+
//# sourceMappingURL=9352-d4b2dc16a8-lite.chunk.js.map
|