@clickview/lite 0.59.0-rc.6 → 0.59.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1041-e67122b7dc-lite.chunk.js +2 -0
- package/dist/scripts/1041-e67122b7dc-lite.chunk.js.map +1 -0
- package/dist/scripts/{1080-aebdd2fd94-lite.chunk.js → 1080-db39a50a32-lite.chunk.js} +2 -2
- package/dist/scripts/1080-db39a50a32-lite.chunk.js.map +1 -0
- package/dist/scripts/{1169-b84be13a05-lite.chunk.js → 1169-394baed329-lite.chunk.js} +2 -2
- package/dist/scripts/1169-394baed329-lite.chunk.js.map +1 -0
- package/dist/scripts/{143-e8df681adb-lite.chunk.js → 143-851fefbbc8-lite.chunk.js} +2 -2
- package/dist/scripts/143-851fefbbc8-lite.chunk.js.map +1 -0
- package/dist/scripts/{170-edaa4055be-lite.chunk.js → 170-6dda8ec96e-lite.chunk.js} +3 -3
- package/dist/scripts/170-6dda8ec96e-lite.chunk.js.map +1 -0
- package/dist/scripts/2015-0cb7aead83-lite.chunk.js +2 -0
- package/dist/scripts/2015-0cb7aead83-lite.chunk.js.map +1 -0
- package/dist/scripts/204-67566b75e7-lite.chunk.js +2 -0
- package/dist/scripts/204-67566b75e7-lite.chunk.js.map +1 -0
- package/dist/scripts/2215-c47eb22183-lite.chunk.js +2 -0
- package/dist/scripts/2215-c47eb22183-lite.chunk.js.map +1 -0
- package/dist/scripts/{2340-16e28533f3-lite.chunk.js → 2340-6179f12db3-lite.chunk.js} +2 -2
- package/dist/scripts/2340-6179f12db3-lite.chunk.js.map +1 -0
- package/dist/scripts/{2564-0e39d7cce9-lite.chunk.js → 2564-5a55e14f66-lite.chunk.js} +3 -3
- package/dist/scripts/{2564-0e39d7cce9-lite.chunk.js.map → 2564-5a55e14f66-lite.chunk.js.map} +1 -1
- package/dist/scripts/2571-70477f279b-lite.chunk.js +2 -0
- package/dist/scripts/2571-70477f279b-lite.chunk.js.map +1 -0
- package/dist/scripts/{2581-bf3d282cb9-lite.chunk.js → 2581-f21f1ac71e-lite.chunk.js} +3 -3
- package/dist/scripts/2581-f21f1ac71e-lite.chunk.js.map +1 -0
- package/dist/scripts/3731-eeabea3393-lite.chunk.js +3 -0
- package/dist/scripts/3731-eeabea3393-lite.chunk.js.map +1 -0
- package/dist/scripts/{4013-3070636adb-lite.chunk.js → 4013-9e41670948-lite.chunk.js} +3 -3
- package/dist/scripts/4013-9e41670948-lite.chunk.js.map +1 -0
- package/dist/scripts/{4205-cf817cce7b-lite.chunk.js → 4205-2d3c5f264f-lite.chunk.js} +2 -2
- package/dist/scripts/4205-2d3c5f264f-lite.chunk.js.map +1 -0
- package/dist/scripts/{490-9b7a10c66a-lite.chunk.js → 490-f8e5bbb09c-lite.chunk.js} +2 -2
- package/dist/scripts/490-f8e5bbb09c-lite.chunk.js.map +1 -0
- package/dist/scripts/4944-c5ba3ff091-lite.chunk.js +2 -0
- package/dist/scripts/4944-c5ba3ff091-lite.chunk.js.map +1 -0
- package/dist/scripts/{5220-85356e2ed6-lite.chunk.js → 5220-0cca67a7e7-lite.chunk.js} +3 -3
- package/dist/scripts/5220-0cca67a7e7-lite.chunk.js.map +1 -0
- package/dist/scripts/{5224-6e7208837b-lite.chunk.js → 5224-ebdead7925-lite.chunk.js} +2 -2
- package/dist/scripts/5224-ebdead7925-lite.chunk.js.map +1 -0
- package/dist/scripts/{5836-27add12a78-lite.chunk.js → 5836-921d683eb5-lite.chunk.js} +2 -2
- package/dist/scripts/5836-921d683eb5-lite.chunk.js.map +1 -0
- package/dist/scripts/{5936-e61ae32ed3-lite.chunk.js → 5936-d1117ce842-lite.chunk.js} +2 -2
- package/dist/scripts/5936-d1117ce842-lite.chunk.js.map +1 -0
- package/dist/scripts/{6118-857c2f6b97-lite.chunk.js → 6118-3dbd569840-lite.chunk.js} +2 -2
- package/dist/scripts/6118-3dbd569840-lite.chunk.js.map +1 -0
- package/dist/scripts/{6263-dcc4cb4933-lite.chunk.js → 6263-d084bdb444-lite.chunk.js} +2 -2
- package/dist/scripts/6263-d084bdb444-lite.chunk.js.map +1 -0
- package/dist/scripts/{6368-d33570d16d-lite.chunk.js → 6368-c296821dd9-lite.chunk.js} +2 -2
- package/dist/scripts/6368-c296821dd9-lite.chunk.js.map +1 -0
- package/dist/scripts/{6741-5bf7ea5363-lite.chunk.js → 6741-9799a705b8-lite.chunk.js} +3 -3
- package/dist/scripts/6741-9799a705b8-lite.chunk.js.map +1 -0
- package/dist/scripts/{6934-11a3f3e147-lite.chunk.js → 6934-5647e18a41-lite.chunk.js} +2 -2
- package/dist/scripts/6934-5647e18a41-lite.chunk.js.map +1 -0
- package/dist/scripts/7234-fecb9339e5-lite.chunk.js +2 -0
- package/dist/scripts/7234-fecb9339e5-lite.chunk.js.map +1 -0
- package/dist/scripts/{7709-fb358991a1-lite.chunk.js → 7709-18e41d81b8-lite.chunk.js} +2 -2
- package/dist/scripts/7709-18e41d81b8-lite.chunk.js.map +1 -0
- package/dist/scripts/{9139-63b528ce93-lite.chunk.js → 9139-251b1d5a38-lite.chunk.js} +2 -2
- package/dist/scripts/9139-251b1d5a38-lite.chunk.js.map +1 -0
- package/dist/scripts/{9173-c164578a27-lite.chunk.js → 9173-1cb2d7c045-lite.chunk.js} +2 -2
- package/dist/scripts/9173-1cb2d7c045-lite.chunk.js.map +1 -0
- package/dist/scripts/9284-ca348ab523-lite.chunk.js +2 -0
- package/dist/scripts/9284-ca348ab523-lite.chunk.js.map +1 -0
- package/dist/scripts/{9395-7aa400f517-lite.chunk.js → 9395-10f1a8adfe-lite.chunk.js} +3 -3
- package/dist/scripts/{9395-7aa400f517-lite.chunk.js.map → 9395-10f1a8adfe-lite.chunk.js.map} +1 -1
- package/dist/scripts/{953-4e10bd618b-lite.chunk.js → 953-279b3b79cd-lite.chunk.js} +3 -3
- package/dist/scripts/{953-4e10bd618b-lite.chunk.js.map → 953-279b3b79cd-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-55d31077c4.min.js +3 -0
- package/dist/scripts/bundle-55d31077c4.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1080-aebdd2fd94-lite.chunk.js.map +0 -1
- package/dist/scripts/1169-b84be13a05-lite.chunk.js.map +0 -1
- package/dist/scripts/143-e8df681adb-lite.chunk.js.map +0 -1
- package/dist/scripts/170-edaa4055be-lite.chunk.js.map +0 -1
- package/dist/scripts/204-abf7907929-lite.chunk.js +0 -2
- package/dist/scripts/204-abf7907929-lite.chunk.js.map +0 -1
- package/dist/scripts/2215-69d4d628e5-lite.chunk.js +0 -2
- package/dist/scripts/2215-69d4d628e5-lite.chunk.js.map +0 -1
- package/dist/scripts/2340-16e28533f3-lite.chunk.js.map +0 -1
- package/dist/scripts/2581-bf3d282cb9-lite.chunk.js.map +0 -1
- package/dist/scripts/3525-36cfbbfcf2-lite.chunk.js +0 -2
- package/dist/scripts/3525-36cfbbfcf2-lite.chunk.js.map +0 -1
- package/dist/scripts/4013-3070636adb-lite.chunk.js.map +0 -1
- package/dist/scripts/4205-cf817cce7b-lite.chunk.js.map +0 -1
- package/dist/scripts/490-9b7a10c66a-lite.chunk.js.map +0 -1
- package/dist/scripts/4944-44f59087ce-lite.chunk.js +0 -2
- package/dist/scripts/4944-44f59087ce-lite.chunk.js.map +0 -1
- package/dist/scripts/5220-85356e2ed6-lite.chunk.js.map +0 -1
- package/dist/scripts/5224-6e7208837b-lite.chunk.js.map +0 -1
- package/dist/scripts/5836-27add12a78-lite.chunk.js.map +0 -1
- package/dist/scripts/5886-13395190b8-lite.chunk.js +0 -3
- package/dist/scripts/5886-13395190b8-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-e61ae32ed3-lite.chunk.js.map +0 -1
- package/dist/scripts/6118-857c2f6b97-lite.chunk.js.map +0 -1
- package/dist/scripts/6263-dcc4cb4933-lite.chunk.js.map +0 -1
- package/dist/scripts/6368-d33570d16d-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-5bf7ea5363-lite.chunk.js.map +0 -1
- package/dist/scripts/6934-11a3f3e147-lite.chunk.js.map +0 -1
- package/dist/scripts/7234-ef069e6013-lite.chunk.js +0 -2
- package/dist/scripts/7234-ef069e6013-lite.chunk.js.map +0 -1
- package/dist/scripts/7709-fb358991a1-lite.chunk.js.map +0 -1
- package/dist/scripts/8813-887868f687-lite.chunk.js +0 -2
- package/dist/scripts/8813-887868f687-lite.chunk.js.map +0 -1
- package/dist/scripts/9139-63b528ce93-lite.chunk.js.map +0 -1
- package/dist/scripts/9173-c164578a27-lite.chunk.js.map +0 -1
- package/dist/scripts/9284-7f6bbe012f-lite.chunk.js +0 -2
- package/dist/scripts/9284-7f6bbe012f-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-4b220684b2.min.js +0 -3
- package/dist/scripts/bundle-4b220684b2.min.js.map +0 -1
- /package/dist/css/{3525-lite-52288b11e5.chunk.css → 1041-lite-52288b11e5.chunk.css} +0 -0
- /package/dist/css/{8813-lite-52288b11e5.chunk.css → 2015-lite-52288b11e5.chunk.css} +0 -0
- /package/dist/css/{5886-lite-3633cd9770.chunk.css → 3731-lite-3633cd9770.chunk.css} +0 -0
- /package/dist/scripts/{170-edaa4055be-lite.chunk.js.LICENSE.txt → 170-6dda8ec96e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2564-0e39d7cce9-lite.chunk.js.LICENSE.txt → 2564-5a55e14f66-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2581-bf3d282cb9-lite.chunk.js.LICENSE.txt → 2581-f21f1ac71e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4013-3070636adb-lite.chunk.js.LICENSE.txt → 3731-eeabea3393-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5220-85356e2ed6-lite.chunk.js.LICENSE.txt → 4013-9e41670948-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5886-13395190b8-lite.chunk.js.LICENSE.txt → 5220-0cca67a7e7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-5bf7ea5363-lite.chunk.js.LICENSE.txt → 6741-9799a705b8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-7aa400f517-lite.chunk.js.LICENSE.txt → 9395-10f1a8adfe-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{953-4e10bd618b-lite.chunk.js.LICENSE.txt → 953-279b3b79cd-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-4b220684b2.min.js.LICENSE.txt → bundle-55d31077c4.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6741-5bf7ea5363-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/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/empty-state/DiscoverDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/DiscoverDashboard.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/CuratedDiscoverView.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/DiscoverViewUtils.ts","file:///app/packages/projects/lite/src/shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner.tsx","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.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 * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion,\n firstName: currentUser.givenName,\n lastName: currentUser.familyName\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.discoverDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface DiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function DiscoverDashboardEmptyState(props: DiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { DiscoverHeader, DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllDiscoverWidgetTemplates, WidgetImageUrls } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CanFavouriteFunc, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { DiscoverDashboardEmptyState } from './empty-state/DiscoverDashboardEmptyState';\n\nexport interface DiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation: Presentation\n ) => Flight.Request;\n imageCdnUrl: string;\n audiences: PresentationAudience[];\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: AllDiscoverWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink;\n };\n headerAppLinks?: DiscoverHeaderAppLinks;\n scrollToWidgetId?: string;\n updatePreferences?: (\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ) => Promise<void>;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n lazyLoad?: boolean;\n showCalendar: boolean;\n jobTitle: JobTitles;\n imageUrls: WidgetImageUrls\n settings: SettingsHash;\n isPlugin: boolean;\n availablePresentations: Presentation[];\n}\n\nexport function DiscoverDashboard(props: DiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, props.presentation);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <DiscoverHeader\n type={props.dashboard?.userType}\n appLinks={props.headerAppLinks}\n hasStudentExperience={props.hasPermissions(PermissionName.StudentExperience)}\n showCalendar={props.showCalendar}\n active='forYou'\n />\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Discover}\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n preferences={widget.preferences}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n onSubmitFeedback={props.onSubmitFeedback}\n updatePreferences={props.updatePreferences}\n yearGroups={props.yearGroups}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n jobTitle={props.jobTitle}\n isPreviewing={props.isReadonly}\n imageUrls={props.imageUrls}\n settings={{\n hasTopicDirectories: props.settings?.hasTopicDirectories,\n hasOnboardingV2: props.settings.hasOnboardingV2,\n hasCompletedOnboardingV2: props.settings.hasCompletedOnboardingV2\n }}\n isPlugin={props.isPlugin}\n availablePresentations={props.availablePresentations}\n // TODO: Ideally we don't have to do this\n classification={undefined}\n companyLogoFallbackUrl={undefined}\n contentType={undefined}\n hasTableOfContents={false}\n limitTotalItems={false}\n subTextType='series'\n />\n );\n })}\n\n {showEmptyState && (\n <DiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DiscoverDashboard } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser, Customer, DashboardTargetType, Library, Presentation, PresentationAudience, User, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { Config } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { UpgradeFeedbackBanner } from 'shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport { getDiscoverHeaderAppLinks, getDiscoverWidgetAppLinks } from './DiscoverViewUtils';\n\nconst namespace = 'dashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getPhraseVariant(presentation: Presentation): string {\n const learningLevel = PresentationLearningLevel[presentation?.learningLevel];\n\n return +learningLevel === PresentationLearningLevel.Level_1\n ? 'VariantOne'\n : 'VariantTwo';\n}\n\ninterface CuratedDiscoverViewProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CuratedDiscoverView(props: CuratedDiscoverViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasLocalPermissions(LocalPermissionName.ManageDiscoverPreferences) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated\n && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const libraries = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated &&\n LibraryRequests.libraries()\n );\n\n const { availablePresentations } = usePresentation();\n\n const {\n dashboard,\n presentation,\n audiences\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Discover,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const settings = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Dashboard);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n const phraseVariant = getPhraseVariant(presentation);\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: `pageTitle${phraseVariant}`,\n descriptionPhrase: `pageDescription${phraseVariant}`\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n widgetAppLinks.discover\n )\n }));\n\n async function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = await fetchAsync<void>(FeedbackRequests.submitFeedback({\n type: FeedbackType.Footer,\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n ProductId.Primary,\n hasPermissions(PermissionName.StudentExperience),\n [ 'discover', 'in product feedback' ]\n )\n }, {\n reaction: feedback.type,\n feedback: feedback.content,\n location: 'Discover Footer',\n presentationName: presentation.description,\n presentationId: presentation.id,\n dashboardName: dashboard.data.name,\n dashboardId: dashboard.data.id,\n currentPageUrl: LocationUtils.GetCurrentUrl()\n }));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.DiscoverFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n async function updateWidgetPreferences(\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ): Promise<void> {\n const addedSubjects = newPreferences.filter(p => {\n if (p.hidden)\n return false;\n\n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return oldPreference.hidden;\n });\n const removedSubjects = newPreferences.filter(p => {\n if (!p.hidden)\n return false;\n \n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return !oldPreference.hidden;\n });\n\n if (addedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id)));\n\n if (removedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id)));\n\n return fetchAsync<void>(DashboardRequests.updateWidgetPreferences(\n widgetId,\n newPreferences.map(p => ({\n id: p.id,\n index: p.index\n })),\n currentUser.data\n ));\n }\n const { showCalendar } = useShowCalendar();\n\n return (\n <div className='bg-white px-4'>\n <UpgradeFeedbackBanner />\n <DiscoverDashboard\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getDiscoverHeaderAppLinks()}\n presentation={presentation}\n imageCdnUrl={config.data.imageCdnUrl}\n getWidgetContentRequest={(\n ...args: Parameters<typeof DashboardRequests.dashboardWidgetContent>\n ) => {\n const hasTwig = LibraryHelper.hasTwig(libraries.data, currentUser.data);\n\n return DashboardRequests.discoverWidgetContent(hasTwig, ...args);\n }}\n setFavourite={setFavourite}\n audiences={audiences.data}\n canFavourite={canFavourite}\n updatePreferences={updateWidgetPreferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n showCalendar={showCalendar}\n jobTitle={user.data?.userProfile?.metadata?.jobTitle}\n imageUrls={{\n onboardingTeacherBackground: ImageUrls.OnboardingV2.Widget.TEACHER_BACKGROUND\n }}\n settings={settings}\n isPlugin={isPlugin}\n availablePresentations={availablePresentations}\n />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { DiscoverDashboardProps } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, Company, Playlist, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ClassificationAppLinkHelper } from 'shared/utils/ClassificationAppLinkHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst CLASSIFICATION_LATEST_RELEASES = 'classification-latest-releases';\nconst OMITTED_PARAMS = [ 'preview', 'dashboardId', 'skipPrompt' ];\n\nexport function getDiscoverWidgetAppLinks(\n params: HashObject\n): DiscoverDashboardProps['widgetAppLinks'] {\n return {\n classification: (classification?: Classification) =>\n ClassificationAppLinkHelper.getAppLink(classification, params || {}),\n\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n \n latestReleases: () => ({\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n }),\n\n allTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.PRESENTATION_TOPICS\n }),\n\n classificationLatestReleases: (classification: Classification) => {\n if (classification.id === CLASSIFICATION_LATEST_RELEASES)\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n };\n\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\n args: [ classification.id, TextHelper.slugify(classification.name) ]\n };\n },\n\n classificationDirectory: (_classification: Classification) => {\n const appLinkClassification = _classification;\n\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_TOPICS,\n args: [ appLinkClassification.id, TextHelper.slugify(appLinkClassification.name) ],\n params: ObjectHelper.omit(params, OMITTED_PARAMS)\n };\n },\n\n widgetVideoList: (widgetId: string, widgetName: string) => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.DASHBOARD,\n args: [ widgetId, TextHelper.slugify(widgetName) ]\n }),\n\n watchHistory: () => ({\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n\n discover: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }),\n\n calendar: () => ({\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }),\n\n calendarMonth: (month: string, year?: string) => {\n const appLink: Core.AppLink = {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR_MONTH,\n args: [month.toLowerCase()]\n };\n\n if (year)\n appLink.params = { year };\n\n return appLink;\n },\n\n onboardingStep: (step: OnboardingScreenId) => {\n const appLinks = getOnboardingAppLinks();\n return appLinks[step];\n },\n\n onboardingAppLinks: () => {\n return getOnboardingAppLinks();\n },\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink,\n\n livestream: () => null,\n widgetWizard: () => null\n };\n}\n\nexport function getDiscoverHeaderAppLinks(): DiscoverHeaderAppLinks {\n return {\n forYou: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n },\n whatsNew: {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n },\n calendar: {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }\n };\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.upgradeFeedbackBanner';\n\nexport function UpgradeFeedbackBanner(): JSX.Element {\n const { showFeedbackBanner, dismissFeedbackBanner } = useLiteUpgrade();\n\n if (!showFeedbackBanner)\n return <></>;\n\n return (\n <div className='alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center'>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ url: 'https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look' }}\n />\n <DivButton\n onClick={dismissFeedbackBanner}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n className='ms-2 svg-container'\n />\n </DivButton>\n </div>\n );\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}","// 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","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","TabContents","tab","svgName","count","data","ref","containerRef","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","FeedbackType","FeedbackRequests","submitFeedback","requestData","formValues","FeedbackFormHelper","getUserInfo","currentUser","customer","id","username","email","userType","role","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","firstName","givenName","lastName","familyName","mapInstanceRegionToTag","getTags","product","extraTags","tags","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getPhrase","DiscoverDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","DiscoverDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","presentation","showEmptyState","isReadonly","length","headerAppLinks","hasPermissions","PermissionName","widget","idx","WidgetContainerView","widgetCollection","imageCdnUrl","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","preferences","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","hasLocalPermissions","onSubmitFeedback","updatePreferences","yearGroups","lazyLoad","dashboardTarget","widgetIndex","jobTitle","isPreviewing","settings","hasTopicDirectories","hasOnboardingV2","hasCompletedOnboardingV2","isPlugin","availablePresentations","classification","undefined","companyLogoFallbackUrl","contentType","hasTableOfContents","limitTotalItems","subTextType","emptyImageUrl","widgetWizard","CuratedDiscoverView","config","ConfigRequests","UserRequests","user","isAuthenticated","usePermissions","usePluginHelper","CustomerRequests","libraries","LibraryRequests","usePresentation","targetType","queryParams","presentationSlug","fetchAsync","useSettings","useLiteFavourites","u","activeAudiences","SharedViewModelKeys","storage","AudienceHelper","phraseVariant","PresentationLearningLevel","learningLevel","getPhraseVariant","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","discover","useShowCalendar","UpgradeFeedbackBanner","hasTwig","LibraryHelper","args","DashboardRequests","oldPreferences","newPreferences","addedSubjects","filter","p","hidden","find","o","removedSubjects","PreferenceRequests","s","feedback","ProductId","reaction","presentationName","presentationId","dashboardName","dashboardId","currentPageUrl","promise","AnalyticsHelper","feedbackType","workflowPhase","userProfile","onboardingTeacherBackground","ImageUrls","CLASSIFICATION_LATEST_RELEASES","OMITTED_PARAMS","getDiscoverWidgetAppLinks","videoType","video","opts","context","series","subText","playlist","application","action","latestReleases","allTopics","classificationLatestReleases","classificationDirectory","_classification","appLinkClassification","widgetVideoList","widgetName","watchHistory","company","calendarMonth","month","year","onboardingStep","step","onboardingAppLinks","classroomGuide","interactiveGuidance","resourceGuidance","livestream","getDiscoverHeaderAppLinks","showFeedbackBanner","dismissFeedbackBanner","options","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","activePresentation","redirectOnError","allowedLearningLevels","learningLevelCantAccess","l","toString","noSetting","setShowCalendar","isLoading","setIsLoading"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6934-11a3f3e147-lite.chunk.js","mappings":"mgBAyCMA,EAAY,oBACZC,EAAY,qBAAiCD,GAM7C,SAAUE,EAAeC,G,cACrBC,EAAYD,EAAZC,QACFC,EAAQ,kBACRC,GAAS,SAEf,GAAuC,IAAAC,GAAkB,qBAAjDC,EAAY,EAAZA,aAAcC,EAAY,EAAZA,aACdC,GAAa,SAAbA,SAEFC,GAAY,SACVC,GAAmB,SAAnBA,eACAC,GAAkB,OAAY,MAA9BA,cAEFC,GAAe,OAAgB,CAAEC,SAAU,gBAC3CC,GAAgB,SAChBC,EAAc,kBAAkC,mBAChDC,GAAa,kBACjBD,EAAYE,KAAKC,iBAAmB,eAA4BH,EAAYE,KAAKE,aAG7EC,GAAQ,kBAA4B,UAAoBlB,IAM9D,SAASmB,GAAgBC,GACvB,OAAO,eAAwBpB,EAAS,KAAMoB,EAChD,CAEA,SAASC,GAAUD,GACjB,OAAOnB,EAAMkB,GAAgBC,GAC/B,EAVA,OAAmB,CACjBE,MAAOJ,GAAMH,KAAOlB,EAAU,oBAAqB,CAAEqB,MAAiB,QAAV,EAAAA,GAAMH,YAAI,eAAEQ,OAAU,KAkBpF,QAA8C,SAC5CX,EAAcY,cAAeL,GAC7BE,IATF,SAAiBI,EAAoBC,GACnC,GAAmB,IAAfD,EACF,OAAO,OAAgBC,GAEzBxB,EAAOyB,MAAM,cAA0B/B,EAAW,cACpD,IAEegC,GAAK,GAAZC,MAAcC,GAAO,GAAPA,QAASC,GAAU,GAAVA,WAMzBC,GAAS,kBAA6B,cAEtCV,GAAQzB,EAAU,eAGlBoC,GAA4B,CAAC,CACjCV,KAAgB,QAAV,EAAAL,GAAMH,YAAI,eAAEQ,KAClBW,QAAS,OAAF,wBACF,eAA4B,CAC/BC,KAAM,CAAEnC,EAAS,YAA6B,QAAV,EAAAkB,GAAMH,YAAI,eAAEQ,UAEjD,CACDA,KAAMD,GACNY,QAAS,CACPE,YAAa,WACbC,OAAS,uBACTF,KAAM,CAAEnC,EAAS,YAA6B,QAAV,EAAAkB,GAAMH,YAAI,eAAEQ,QAElDe,QAAQ,IAgBV,OANA,aAAgB,WACT1B,EAAcY,cARrB,W,MACE,eAA2B,OAAD,wBACrB,eAA4B,CAC/BW,KAAM,CAAEnC,EAAS,YAA6B,QAAV,EAAAkB,GAAMH,YAAI,eAAEQ,SAC/C,CAAEgB,SAAS,GAChB,CAIIC,EAEJ,GAAG,CAAC5B,EAAcY,eAEbN,GAAMH,OAASa,cAAK,EAALA,GAAOa,SAAWT,GAAOU,aAI3C,gBAAC,aAA4B,CAACC,MAAOjC,GACnC,uBAAKkC,UAAU,QACb,sBAAIA,UAAU,WAAWtB,IAEzB,uBAAKsB,UAAU,QACb,gBAAC,KAAW,CAACX,YAAaA,MAG5B,gBAAC,KAAS,CACRY,OAAQjB,GACRd,WAAYA,GAAWC,KACvB+B,gBAAiB,SAAC5B,EAAO6B,GAAI,OAAK,eAA8B7B,EAAO,OAAF,wBAChE6B,GAAI,CACPC,QAAS,WACTC,UAAWlD,EAAMC,UACjB,EACFQ,eAAgBA,EAChB0C,kBAAmB,SAAAhC,GAAK,OAAI,qBAAqCA,EAAMiC,OAAO,EAC9E/C,aAAcA,EACdC,aAAcA,EACd+C,sBAAuB7C,EAAUQ,KACjCsC,YAAwB,QAAX,EAAArB,GAAOjB,YAAI,eAAEsC,YAC1B/C,SAAUA,EACVgD,yBAA0B,6BAC1BC,8BAA+B,kCAC/BC,2BAA4B,+BAC5BC,UAAWhD,KAEXqB,IAAWC,KACX,gBAAC,IAAoB,CAACA,WAAYA,GAAYV,UAAWA,OAhCxD,gBAAC,IAAqB,KAqCjC,C","sources":["file:///app/packages/projects/lite/src/shared/views/video-media/VideoClipsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\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 { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, Config, CurrentUser, Video, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { PartialVideoMediaView } from 'shared/views/video-media/partial-loading/PartialVideoMediaView';\nimport { VideoMediaAppLinks } from 'shared/views/video-media/VideoMediaAppLinks';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.videoMedia';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoMediaViewProps {\n videoId: string;\n}\n\nexport function VideoClipsView(props: VideoMediaViewProps): JSX.Element {\n const { videoId } = props;\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { isPlugin } = usePluginHelper();\n \n const audiences = usePresentationAudiences();\n const { hasPermissions } = usePermissions();\n const { hasPlayPageV2 } = useSettings(null);\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const featureAccess = useVideoFeatureAccess();\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 const video = Flight.useBasicFetch<Video>(VideoRequests.video(videoId));\n\n useSetPageMetadata({\n title: video.data ? getPhrase('clipViewPageTitle', { video: video.data?.name }) : ''\n });\n\n function getClipsRequest(cursor?: string) {\n return ClipRequests.videoClips(videoId, null, cursor);\n }\n\n function fetchNext(cursor?: string) {\n return fetch(getClipsRequest(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, 'errorClips'));\n }\n\n const { items: clips, hasMore, isFetching } = useInfiniteList<Clip>(\n featureAccess.canViewClips ? getClipsRequest : false,\n fetchNext,\n onError\n );\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const title = getPhrase('clipHeading');\n\n\n const breadcrumbs: Breadcrumb[] = [{\n name: video.data?.name,\n appLink: {\n ...VideoMediaAppLinks.playVideo,\n args: [ videoId, TextHelper.slugify(video.data?.name) ]\n }\n }, {\n name: title,\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.VIDEO_CLIPS,\n args: [ videoId, TextHelper.slugify(video.data?.name) ]\n },\n active: true\n }];\n\n function redirectToPlaypage(): void {\n Core.AppLinkHelper.trigger({\n ...VideoMediaAppLinks.playVideo,\n args: [ videoId, TextHelper.slugify(video.data?.name) ]\n }, { replace: true });\n }\n\n React.useEffect(() => {\n if (!featureAccess.canViewClips) {\n redirectToPlaypage();\n }\n }, [featureAccess.canViewClips]);\n\n if (!video.data || !clips?.length || !config.hasCompleted)\n return <PartialVideoMediaView />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n <h1 className='h2 mb-2'>{title}</h1>\n \n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={breadcrumbs}/>\n </div>\n\n <VideoList\n videos={clips}\n yearGroups={yearGroups.data}\n getVideoAppLink={(video, opts) => VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget,\n contextId: props.videoId\n })}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={audiences.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n showOwner={hasPlayPageV2}\n />\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}"],"names":["namespace","getPhrase","VideoClipsView","props","videoId","fetch","alerts","u","setFavourite","canFavourite","isPlugin","audiences","hasPermissions","hasPlayPageV2","videoActions","location","featureAccess","currentUser","yearGroups","data","isAuthenticated","customerId","video","getClipsRequest","cursor","fetchNext","title","name","canViewClips","pageNumber","httpStatus","error","clips","items","hasMore","isFetching","config","breadcrumbs","appLink","args","application","action","active","replace","redirectToPlaypage","length","hasCompleted","value","className","videos","getVideoAppLink","opts","context","contextId","getSubTextAppLink","series","presentationAudiences","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showOwner"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7234],{56520:(e,a,n)=>{n.d(a,{R0:()=>m,_N:()=>u,eR:()=>p});var t=n(23481),i=n(97395),r=n(20354),o=n(42617),s=n(4594),l=n(39151),c=n(31949),d=t.T.encloseNamespace("shared.hooks");function u(e,a,n,t){var r=i._.safeUrlConcat(e,"manage"),o=i._.safeUrlConcat(e,"exchange"),l=function(e,a,n){return i._.safeUrlConcat(e,"".concat(a,"/").concat(n))};switch(a){case s.E.Subject:return i._.safeUrlConcat(r,"subjects/presentations/".concat(t,"/classifications/").concat(n,"/edit"));case s.E.Video:return l(r,"videos",n);case s.E.Playlist:return l(r,"playlists",n);case s.E.Series:return l(r,"series",n);case s.E.Company:return l(r,"companies",n);case s.E.Interactive:return l(r,"interactives",n);case s.E.Clip:return l(r,"clips",n);case s.E.Category:return l(o,"categories",n)}}function p(){return d("openInCurationStudio")}function m(){var e,a,n=r.a.useBasicFetch(c.N.currentUser()),t=r.a.useBasicFetch((null===(e=n.data)||void 0===e?void 0:e.id)&&c.N.groups(null===(a=n.data)||void 0===a?void 0:a.id)).data,i=r.a.useBasicFetch(l.L.config()),s=[o.j.Curator,o.j.Content,o.j.Developer];return{openInCurationStudioLabel:p(),isUserCurator:s.some((function(e){return null==t?void 0:t.data.find((function(a){return a.name===e}))})),getOpenInCurationStudioLink:function(e,a,n){var t;return u(null===(t=i.data)||void 0===t?void 0:t.curatorUrl,e,a,n)}}}},60008:(e,a,n)=>{n.r(a),n.d(a,{CompanyDashboardView:()=>Z});var t=n(32735),i=n(23481),r=n(81886),o=n(20354),s=n(28400),l=n(65858),c=n(75896),d=n(23232),u=n(83345),p=n(36532),m=n(40424),g=n(35223),v="moviesAndTv.companyDashboardEmptyState",h=i.T.encloseNamespace(v);function f(e){var a,n,r=(null===(a=e.dashboard)||void 0===a?void 0:a.status)===m.GL.Archived;return t.createElement(d.u,null,t.createElement(d.u.Image,{src:e.imageUrl,altText:h("info")}),t.createElement(d.u.Heading,null,t.createElement(u.x,{namespace:v,phrase:"heading"})),t.createElement(d.u.Info,null,t.createElement(u.x,{namespace:v,phrase:"info"})),t.createElement(p.u,{title:r?i.T.getPhrase(v,"archivedCtaTooltip"):"",spanHack:!0},t.createElement(d.u.Cta,{text:i.T.getPhrase(v,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:g.vn.Plus,disabled:r})))}var y=n(44522),C=n(49935),b=n(49961),T=n(7733),k=n(21366),L=n(9085);function E(e){var a,n,i,r=c.m.sortBy(null===(a=e.dashboard)||void 0===a?void 0:a.widgets,"index");function o(a,n,t){var i=k.S.getWidgetParams(n,t,k.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(a,i,t)}var s=e.isReadonly&&!(null==r?void 0:r.length);return t.createElement(t.Fragment,null,!!r.length&&t.createElement(t.Fragment,null,e.company?t.createElement(y.p,{heading:e.company.name,banner:e.company.banner,imageCdnUrl:e.imageCdnUrl,blockColourClass:(0,L.x)(e.company.name,T.o),actions:null===(n=e.getBannerActions)||void 0===n?void 0:n.call(e),actionsDropdownClassName:"btn btn-outline-dark"}):t.createElement(y.v,null),t.createElement("div",{className:"py-3 mb-3 border-bottom"},t.createElement(C.Oo,{breadcrumbs:null===(i=e.getBreadcrumbs)||void 0===i?void 0:i.call(e)})),t.createElement("div",{className:"mt-3"},r.map((function(a){return t.createElement(b.L,{widgetCollection:m.ku.Company,dashboardTarget:m.ku.Company,key:a.id,id:a.id,imageCdnUrl:e.imageCdnUrl,getContentRequest:o,audiences:e.audiences,name:a.name,description:a.description,templateId:a.templateId,metadata:a.metadata,setFavourite:e.setFavourite,canFavourite:e.canFavourite,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===a.id,widgetTypeId:a.widgetId,yearGroups:e.yearGroups,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,isPlugin:e.isPlugin,settings:e.settings,classification:null,contentType:null,hasTableOfContents:!1})})))),s&&t.createElement(f,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var P=n(14875),A=n(16714),w=n(183),I=n(67058),S=n(39151),U=n(80889),F=n(63719),x=n(56520),D=n(22902),R=n(79612),W=n(37802),N=n(76753),O=n(14070),_=n(97291),B=n(68317),G=n(51855),j=n(7179),M=n(27638),H=n(23737),V=n(33192),q=n(22490),Q=n(82431),Y=i.T.encloseNamespace("moviesAndTv.companyDashboard"),z={videoType:function(e,a){return q.W.getAppLink(e,Object.assign(Object.assign({},a),{moviesAndTv:!0,context:w.Q.Widget}))},series:Q.j.getSeriesAppLink,subText:function(e){return Q.j.getSeriesAppLink(e.series)},playlist:function(e){return{application:_.O.PLAYLISTS,action:O.e.Playlists.PLAYLIST,args:[e.id,s.m.slugify(e.name)]}},classroomGuide:q.W.getClassroomGuideAppLink,interactiveGuidance:q.W.getInteractiveGuidanceAppLink,resourceGuidance:q.W.getResourceGuidanceAppLink,classification:function(){return null},allTopics:function(){return null},calendar:function(){return null},calendarMonth:function(){return null},classificationDirectory:function(){return null},classificationLatestReleases:function(){return null},company:function(){return null},discover:function(){return null},livestream:function(){return null},watchHistory:function(){return null},widgetVideoList:function(){return null},widgetWizard:function(){return null}};function Z(e){var a,n,i,c,d,u=o.a.useBasicFetch(S.L.config()),p=o.a.useBasicFetch(B.h.company(e.companyId)),g=(0,x.R0)(),v=g.openInCurationStudioLabel,h=g.isUserCurator,f=g.getOpenInCurationStudioLink,y=(0,M.u)(l.LZ.ExpandableVideoThumbnail),C=y.setFavourite,b=y.canFavourite,T=(0,D.T)(),k=T.hasPermissions,L=T.hasLocalPermissions,w=(0,G.G)().isPlugin,q=(0,W.r)(null),Q=k(A.C.ViewMoviesTv),Z=(0,H.y)({targetType:m.ku.Company,queryParams:e.queryParams,presentationSlug:e.presentationSlug,companyId:e.companyId}),$=Z.dashboard,J=Z.isPreviewing;(0,R.M)(N.CG.getDefaultMetadata({title:null===(a=p.data)||void 0===a?void 0:a.name,phraseContext:{phraseHandler:Y,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:V.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:{application:_.O.MOVIES_AND_TV,action:O.e.MoviesAndTv.COMPANY_DASHBOARD,args:[null===(n=p.data)||void 0===n?void 0:n.id,s.m.slugify(null===(i=p.data)||void 0===i?void 0:i.name)]}}),allowIndexing:!1})),(0,j.P)({id:e.companyId,app:"studios"}),t.useEffect((function(){$.hasCompleted&&(Q&&$.data||r.Q.C$.trigger({application:_.O.DASHBOARD,action:O.e.Dashboard.HOME},{replace:!0}))}),[Q,$.data,$.hasCompleted]);var K=(0,F.h)({name:null===(c=p.data)||void 0===c?void 0:c.name});return t.useEffect((function(){$.hasCompleted&&!$.data&&r.Q.Ry.throw(new I.d)}),[$.data,$.hasCompleted]),t.createElement("div",{className:"position-relative px-4"},!(!J||!$.data)&&t.createElement(P.a,{status:$.data.status,type:"company"}),t.createElement(E,{company:p.data,dashboard:$.data,getWidgetContentRequest:U._.dashboardWidgetContent,getBannerActions:function(){var e,a;return h?[{label:v,href:f(null===(e=p.data)||void 0===e?void 0:e.typeId,null===(a=p.data)||void 0===a?void 0:a.id),openInNewTab:!0}]:[]},imageCdnUrl:null===(d=u.data)||void 0===d?void 0:d.imageCdnUrl,widgetAppLinks:z,setFavourite:C,canFavourite:b,getBreadcrumbs:function(){return p.hasCompleted?K:[]},hasPermissions:k,hasLocalPermissions:L,isPlugin:w,settings:q}))}}}]);
|
|
2
|
-
//# sourceMappingURL=7234-ef069e6013-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7234-ef069e6013-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/useCurationStudio.ts","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/company-dashboard/CompanyDashboard.tsx","file:///app/packages/projects/lite/src/apps/movies-and-tv/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CuratorUserGroupCollection, CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getOpenInCurationStudioLink(\n baseUrl: string,\n objectType: MasterType | string,\n id: string,\n presentationId?: string\n) {\n const baseManageUrl = UrlHelper.safeUrlConcat(baseUrl, 'manage');\n const baseExchangeUrl = UrlHelper.safeUrlConcat(baseUrl, 'exchange');\n const href = (baseUrl: string, objectType: string, id: string) => UrlHelper.safeUrlConcat(baseUrl, `${objectType}/${id}`);\n\n switch (objectType) {\n case MasterType.Subject:\n return UrlHelper.safeUrlConcat(baseManageUrl, `subjects/presentations/${presentationId}/classifications/${id}/edit`);\n case MasterType.Video:\n return href(baseManageUrl, 'videos', id);\n case MasterType.Playlist:\n return href(baseManageUrl, 'playlists', id);\n case MasterType.Series:\n return href(baseManageUrl, 'series', id);\n case MasterType.Company:\n return href(baseManageUrl, 'companies', id);\n case MasterType.Interactive:\n return href(baseManageUrl, 'interactives', id);\n case MasterType.Clip:\n return href(baseManageUrl, 'clips', id);\n case MasterType.Category:\n return href(baseExchangeUrl, 'categories', id);\n }\n}\n\nexport function getOpenInCurationStudioLabel(): string {\n return getPhrase('openInCurationStudio');\n}\n\nexport function useCurationStudio() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { data: userGroups } = Flight.useBasicFetch<CuratorUserGroupCollection>(\n (currentUser.data?.id) && UserRequests.groups(currentUser.data?.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const curatorGroups = [ CuratorGroup.Curator, CuratorGroup.Content, CuratorGroup.Developer ];\n\n function isUserCurator(): boolean {\n return curatorGroups.some(group => userGroups?.data.find(userGroup => userGroup.name === group));\n }\n\n return {\n openInCurationStudioLabel: getOpenInCurationStudioLabel(),\n isUserCurator: isUserCurator(),\n getOpenInCurationStudioLink: (objectType: MasterType | string, id: string, presentationId?: string) =>\n getOpenInCurationStudioLink(config.data?.curatorUrl, objectType, id, presentationId)\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'moviesAndTv.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CompanyDashboardEmptyState(props: CompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CompanyDashboardEmptyState } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, FavouriteFunc, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nexport interface CompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n imageCdnUrl: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink;\n };\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n isPlugin: boolean;\n\n settings?: AllCompanyWidgetTemplates['settings'];\n}\n\nexport function CompanyDashboard(props: CompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company\n ? (\n <BannerHeader\n heading={props.company.name}\n banner={props.company.banner}\n imageCdnUrl={props.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n yearGroups={props.yearGroups}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n isPlugin={props.isPlugin}\n settings={props.settings}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n contentType={null}\n hasTableOfContents={false}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <CompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CompanyDashboard, CompanyDashboardProps } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/CompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, Config, DashboardTargetType, Playlist, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTv.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst companyAppLinks: CompanyDashboardProps['widgetAppLinks'] = {\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink,\n\n // TODO: Find a nice way around having to pass these in\n classification: () => null,\n allTopics: () => null,\n calendar: () => null,\n calendarMonth: () => null,\n classificationDirectory: () => null,\n classificationLatestReleases: () => null,\n company: () => null,\n discover: () => null,\n livestream: () => null,\n watchHistory: () => null,\n widgetVideoList: () => null,\n widgetWizard: () => null\n};\n\ninterface CompanyDashboardViewProps {\n presentationSlug: string;\n companyId: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId));\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.ExpandableVideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n const settings = useSettings(null);\n const hasMoviesAndTv = hasPermissions(PermissionName.ViewMoviesTv);\n\n const {\n dashboard,\n isPreviewing\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Company,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug,\n companyId: props.companyId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.data?.id, TextHelper.slugify(company.data?.name) ]\n }\n }),\n allowIndexing: false\n }));\n\n useDeepLinks({ id: props.companyId, app: 'studios' });\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted)\n return;\n\n if (hasMoviesAndTv && dashboard.data)\n return;\n\n Core.AppLinkHelper.trigger(\n { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\n { replace: true }\n );\n }, [ hasMoviesAndTv, dashboard.data, dashboard.hasCompleted ]);\n\n const breadcrumbs = useBreadcrumbs({ name: company.data?.name });\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return breadcrumbs;\n }\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(company.data?.typeId, company.data?.id),\n openInNewTab: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <CompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBannerActions={getBannerActions}\n imageCdnUrl={config.data?.imageCdnUrl}\n widgetAppLinks={companyAppLinks}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n isPlugin={isPlugin}\n settings={settings}\n />\n </div>\n );\n}"],"names":["getPhrase","baseUrl","objectType","id","presentationId","baseManageUrl","baseExchangeUrl","href","getOpenInCurationStudioLabel","useCurationStudio","currentUser","userGroups","data","config","curatorGroups","Curator","openInCurationStudioLabel","isUserCurator","some","group","find","userGroup","name","getOpenInCurationStudioLink","curatorUrl","namespace","LanguageService","CompanyDashboardEmptyState","props","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Text","phrase","Tooltip","title","spanHack","text","appLink","addWidgetApplink","className","icon","disabled","CompanyDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","showEmptyState","isReadonly","length","company","BannerHeader","heading","banner","imageCdnUrl","blockColourClass","getBgColorClass","actions","getBannerActions","actionsDropdownClassName","Breadcrumbs","breadcrumbs","getBreadcrumbs","map","widget","WidgetContainerView","widgetCollection","dashboardTarget","key","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","appLinks","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","yearGroups","hasPermissions","hasLocalPermissions","isPreviewing","companyLogoFallbackUrl","subTextType","isPlugin","settings","classification","contentType","hasTableOfContents","emptyImageUrl","widgetWizard","companyAppLinks","videoType","video","opts","VideoAppLinkHelper","moviesAndTv","context","RelatedVideosContext","series","SeriesAppLinkHelper","subText","playlist","application","action","args","TextHelper","classroomGuide","interactiveGuidance","resourceGuidance","allTopics","calendar","calendarMonth","classificationDirectory","classificationLatestReleases","discover","livestream","watchHistory","widgetVideoList","CompanyDashboardView","ConfigRequests","CompanyRequests","companyId","useLiteFavourites","u","usePermissions","usePluginHelper","useSettings","hasMoviesAndTv","PermissionName","targetType","queryParams","presentationSlug","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","customAppLink","allowIndexing","useDeepLinks","app","hasCompleted","replace","useBreadcrumbs","NotFoundError","PreviewBanner","type","DashboardRequests","label","typeId","openInNewTab"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7709-fb358991a1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-clip/PlaySharedClipView.tsx","file:///app/packages/projects/lite/src/shared/components/play-clip/PlayClip.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, ClipCollection, Config, CurrentUser, InteractiveCollection, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayClip } from 'shared/components/play-clip/PlayClip';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedClipView(props: ShareLinkViewProps): React.ReactElement {\n const { hasProduct } = useProducts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { isPlugin } = usePluginHelper();\n const { hasPermissions } = usePermissions();\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.sharedClip(props.objectId, props.shareId));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n const glanceTheme = Flight.useBasicFetch<Theme>(clip.data?.glance?.theme\n ? ThemeRequests.themeImages(clip.data.glance.theme, clip.data.glance.type) : null);\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n clip.data?.glance?.theme;\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({ content: clip.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(clip);\n useDeepLinks({ id: props.objectId, app: 'clips', shareId: props.shareId });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n shareId={props.shareId}\n clip={clip.data}\n interactives={interactives.data?.data}\n clips={childClips.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n relatedVideos={relatedVideos}\n canFavourite={canFavourite}\n setFavourite={setFavourite}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n imageCdnUrl={config.data.imageCdnUrl}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n pointsOfInterest={pointsOfInterest?.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n isPlugin={isPlugin}\n />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SignUpDescriptors, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoAtAGlance } from 'libs/shared/components/video-at-a-glance/VideoAtAGlance';\nimport { hasGlanceData } from 'libs/shared/components/video-at-a-glance/VideoAtAGlanceUtils';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { VideoDetailsPartial } from 'libs/shared/components/video-details/VideoDetailsPartial';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ClipWidgetItem, ClipWidgetItemProps } from 'libs/shared/components/widgets/items/clip-widget-item/ClipWidgetItem';\nimport { InteractiveWidgetItem, InteractiveWidgetItemProps } from 'libs/shared/components/widgets/items/interactive-widget-item/InteractiveWidgetItem';\nimport { ResourceWidgetItem, ResourceWidgetItemProps } from 'libs/shared/components/widgets/items/resource-widget-item/ResourceWidgetItem';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CanFavouriteFunc, Clip, CurrentUser, FavouriteFunc, Interactive, InteractiveMetadata, Link, PointOfInterest, PresentationAudience, Resource, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { getResources } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype DetailsViewType = {\n view: 'v@g' | 'details' | 'loading';\n referrer: 'v@g' | 'details';\n};\n\ninterface PlayClipProps {\n clip: Clip;\n interactives: InteractiveMetadata[];\n clips: Clip[];\n originalVideo: Video;\n currentUser: CurrentUser;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n imageCdnUrl: string;\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n glanceTheme?: Theme;\n glanceLoaded: boolean;\n tableOfContentsId: string;\n isPlugin: boolean;\n}\n\nexport function PlayClip(props: PlayClipProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const resourcesRef = React.useRef<HTMLDivElement>(null);\n const interactivesRef = React.useRef<HTMLDivElement>(null);\n\n useTableOfContentsScroll([\n resourcesRef.current,\n interactivesRef.current\n ], props.tableOfContentsId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const hasGlance = hasGlanceData(props.clip, props.glanceTheme) && props.featureAccess.canViewGlance;\n\n const [ detailsView, setDetailsView ] = React.useState<DetailsViewType>({\n view: 'loading',\n referrer: null\n });\n\n React.useEffect(() => {\n if (!props.glanceLoaded)\n return;\n\n setDetailsView({\n view: props.glanceTheme ? 'v@g' : 'details',\n referrer: null\n });\n }, [ props.glanceLoaded, props.glanceTheme ]);\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n function limitAccess(): boolean {\n if (!props.currentUser?.isAuthenticated)\n return true;\n\n if (!props.hasProduct(ProductId.Primary))\n return true;\n\n if (hasStudentExperience)\n return true;\n\n return false;\n }\n\n const canAccessOriginal = props.originalVideo && !limitAccess() && !!props.clip._canBeConsumed?.value;\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal)\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.originalVideo.id, TextHelper.slugify(props.originalVideo.name) ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n\n const resourcesWidget = getResources(props.clip, hasStudentExperience);\n\n const otherClips = props.clips?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n return (\n <div className='px-4'>\n <RestrictionBanner\n restrictions={props.clip._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section className={`mb-2`}>\n {canConsume &&\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode='default'\n location='play-page'\n />\n }\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <PlayPageTitleAndActions\n media={props.clip}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n />\n\n {/* \n * Toggling between display 'block' and 'none' is *deliberate* done here to facilitate exposure of our content to bots for SEO.\n * The markup of all 3 components should be available in the DOM from the first render. If you're going to refactor,\n * please don't neglect this usecase - Mike\n */}\n <section className={`${detailsView.view === 'v@g' ? 'd-block' : 'd-none'}`}>\n <VideoAtAGlance\n theme={props.glanceTheme}\n video={props.clip}\n pointsOfInterest={props.pointsOfInterest}\n onClickShowDescription={() => setDetailsView({ view: 'details', referrer: 'v@g' })}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n </section>\n\n <section className={`${detailsView.view === 'details' ? 'd-block' : 'd-none'}`}>\n <VideoDetailsWithScrollbar\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n onClickClose={hasGlance && (() => setDetailsView({ view: 'v@g', referrer: 'details' }))}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n hideTags={hasGlance}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n </section>\n\n <section className={`${detailsView.view === 'loading' ? 'd-block' : 'd-none'}`}>\n <VideoDetailsPartial />\n </section>\n\n {!!resourcesWidget?.length && (\n <section className='pb-3' id={PlayPageAnchor.Resources} ref={resourcesRef}>\n <FixedWidget<ResourceWidgetItemProps>\n name={getPhrase('resources', { count: resourcesWidget.length })}\n contents={WidgetContents.PlayPageResources}\n collection={resourcesWidget}\n prefetched\n childComponent={ResourceWidgetItem}\n extraChildComponentProps={{\n imageCdnUrl: props.imageCdnUrl,\n imageErrorFallbackUrl: ImageUrls.Fallbacks.RESOURCE_THUMBNAIL,\n actionBehaviour: props.featureAccess.canViewResourceItems ? 'normal' : 'public',\n location: 'play-page',\n titlePosition: 'above',\n hideTypeBadge: true\n }}\n getChildAppLink={getResourceAppLink(\n props.clip?.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n )}\n analyticsOptions={(() => {\n if (props.featureAccess.canViewResourceItems)\n return {};\n\n return {\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n };\n })()}\n analyticsData={{ widgetId: 'resources' }}\n />\n </section>\n )}\n\n {!!(otherClips?.length && !limitAccess()) && (\n <div className='pb-3'>\n <FixedWidget<ClipWidgetItemProps>\n name={getPhrase('otherClips', { count: otherClips.length })}\n contents={WidgetContents.Clips}\n collection={otherClips}\n prefetched\n getChildAppLink={(clip: Clip) => {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ clip.id, TextHelper.slugify(clip.name) ]\n };\n }}\n childComponent={ClipWidgetItem}\n extraChildComponentProps={{ video: props.originalVideo, imageCdnUrl: props.imageCdnUrl }}\n analyticsData={{ widgetId: 'clips' }}\n />\n </div>\n )}\n\n {!!(props.interactives?.length && !limitAccess()) && (\n <div className='pb-3' id={PlayPageAnchor.Interactives} ref={interactivesRef}>\n <FixedWidget<InteractiveWidgetItemProps>\n name={getPhrase('interactives', { count: props.interactives.length })}\n contents={WidgetContents.Interactives}\n collection={props.interactives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n video: props.clip,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n imageCdnUrl: props.imageCdnUrl\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n {!!canAccessOriginal && (\n <section className='pb-2 pt-1'>\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n </VideoActionsContext.Provider>\n </section>\n )}\n\n <section>\n <RelatedVideos\n currentVideo={props.clip}\n yearGroups={props.yearGroups}\n relatedVideos={props.relatedVideos}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n isPlugin={props.isPlugin}\n />\n </section>\n </div>\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};"],"names":["PlaySharedClipView","props","hasProduct","u","setFavourite","canFavourite","isPlugin","hasPermissions","featureAccess","currentUser","config","clip","objectId","shareId","video","data","_parentVideo","id","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","interactives","canViewInteractives","childClips","canViewClips","audiences","yearGroups","isAuthenticated","customerId","pointsOfInterest","glanceTheme","glance","theme","type","shouldFetchTheme","content","videos","app","hasCompleted","clips","originalVideo","imageCdnUrl","canManageVideoAccess","glanceLoaded","items","tableOfContentsId","tocId","getResourceAppLink","videoId","canViewResource","resource","application","action","args","params","namespace","getPhrase","PlayClip","playerContext","canConsume","videoActions","location","resourcesRef","interactivesRef","current","isArchived","hasStudentExperience","shouldPlayOnExitImmersiveReader","hasGlance","canViewGlance","view","referrer","detailsView","setDetailsView","limitAccess","canAccessOriginal","_canBeConsumed","value","showPlayerPlaceholder","mode","canViewPublicLayout","resourcesWidget","otherClips","filter","c","toString","className","restrictions","_restrictions","objectTypeId","typeId","key","playNext","startTime","t","media","originalVideoAppLink","name","onClickShowDescription","setStartTime","time","playerRef","currentTime","getTagAppLink","tag","tagOrClassification","suppressInteractivity","onLaunchImmersiveReader","isPaused","pause","onExitImmersiveReader","play","onClickClose","hideTags","length","ref","count","contents","collection","prefetched","childComponent","R","extraChildComponentProps","imageErrorFallbackUrl","actionBehaviour","canViewResourceItems","titlePosition","hideTypeBadge","getChildAppLink","analyticsOptions","workflowPhase","descriptor","SignUp","analyticsData","widgetId","C","interactive","questionsAppLink","phrase","getVideoAppLink","v","opts","presentationAudiences","getPreviewQuestionsAppLink","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","currentVideo","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8813],{5859:(e,a,i)=>{function t(e,a){(null==a||a>e.length)&&(a=e.length);for(var i=0,t=Array(a);i<a;i++)t[i]=e[i];return t}i.d(a,{u:()=>r});var n={numItems:5,minWidth:50,maxWidth:100},r={getPartialLoadingItems:function(){var e,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=Object.assign(Object.assign({},n),a);return(e=Array(i.numItems),function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return t(e,a);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,a):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.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*i.maxWidth),i.minWidth),"px")}}))}}},70067:(e,a,i)=>{i.r(a),i.d(a,{PlaySharedClipViewV2:()=>x});var t=i(32735),n=i(20354),r=i(65858),c=i(16714),s=i(43012),o=i(39151),d=i(1666),l=i(20768),u=i(31949),p=i(1575),v=i(63719),m=i(26304),g=i(22902),h=i(15311),I=i(79612),y=i(76753),f=i(51855),A=i(7179),P=i(49948),C=i(36873),b=i(27638),E=i(44110),V=i(35014),O=i(97816),F=i(81812),S=i(14085);function x(e){var a,i,x,L,G,k,R,T,w,U=(0,h.r)().hasProduct,q=(0,b.u)(r.LZ.VideoThumbnail),N=q.setFavourite,M=q.canFavourite,j=(0,g.T)().hasPermissions,_=(0,f.G)().isPlugin,W=(0,F.a)(),B=(0,V.I)(),D=n.a.useBasicFetch(u.N.currentUser()),H=n.a.useBasicFetch(o.L.config()),K=n.a.useBasicFetch(s.e.sharedClip(e.objectId,e.shareId)),Q=n.a.useBasicFetch(!!(null===(a=K.data)||void 0===a?void 0:a._parentVideo)&&p.R.video(K.data._parentVideo.id)),Y=n.a.useBasicFetch(!!(null===(x=null===(i=K.data)||void 0===i?void 0:i._parentVideo)||void 0===x?void 0:x.id)&&B.canViewClips&&s.e.videoClips(K.data._parentVideo.id)),Z=n.a.useBasicFetch(B.canViewInteractives&&l.b.videoInteractives(e.objectId)),J=(0,C.k)({video:Q.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:D.data}),$=(0,E.i)(),z=n.a.useBasicFetch((null===(L=D.data)||void 0===L?void 0:L.isAuthenticated)&&d.h.yearGroups(D.data.customerId)),X=(0,P.l)(e.objectId);(0,I.M)(y.CG.getClipMetadata({content:K.data})),(0,O.V)(null!==(G=J.videos)&&void 0!==G?G:[]),(0,m.b)(K),(0,A.P)({id:e.objectId,app:"clips",shareId:e.shareId});var ee=(0,v.h)({name:null===(k=K.data)||void 0===k?void 0:k.name});return K.data&&D.hasCompleted&&H.hasCompleted&&X.hasCompleted?t.createElement(S.S,{shareId:e.shareId,clip:K.data,clips:null===(R=Y.data)||void 0===R?void 0:R.data,interactives:null===(T=Z.data)||void 0===T?void 0:T.data,originalVideo:Q.data,currentUser:D.data,yearGroups:z.data,relatedVideos:J,canFavourite:M,setFavourite:N,hasProduct:U,queryParams:e.queryParams,audiences:$.data,imageCdnUrl:H.data.imageCdnUrl,canManageVideoAccess:j(c.C.ManageVideoAccess),pointsOfInterest:null==X?void 0:X.items,featureAccess:B,tableOfContentsId:null===(w=e.queryParams)||void 0===w?void 0:w.tocId,shouldShowSideTableOfContents:W,isPlugin:_,breadcrumbs:ee}):t.createElement(t.Fragment,null)}},44110:(e,a,i)=>{i.d(a,{i:()=>c});var t=i(20354),n=i(89454),r=i(86698),c=function(){var e=(0,r.y)({redirectOnError:!0}),a=e.activePresentation,i=e.getFallbackPresentation,c=a||i();return t.a.useBasicFetch(!!c&&n.O.presentationAudiences(c.id))}},14085:(e,a,i)=>{i.d(a,{S:()=>H});var t=i(32735),n=i(28400),r=i(49935),c=i(5640),s=i(56940),o=i(51184),d=i(64921),l=i(95812),u=i(53709),p=i(71063),v=i(10439),m=i(35429),g=i(4594),h=i(16714),I=i(12754),y=i(22902),f=i(65332),A=i(76196),P=i(59598),C=i(31908),b=i(26492),E=i(9465),V=i(91479),O=i(47938),F=i(57605),S=i(78166),x=i(99742),L=i(14070),G=i(97291),k=i(22490),R=i(63010),T=i(14476),w=i(53256),U=i(83345),q=i(13231),N=i(51365),M=i(10671),j=i(10741),_="shared.playClipV2";function W(e){var a=(0,y.T)().hasPermissions,i=(0,M._)({location:M.i.VideoItem});return t.createElement("section",{className:"play-page-section",id:P.K.ClippedFrom,ref:function(a){var i;a&&(null===(i=e.headingRef)||void 0===i?void 0:i.current)&&e.headingRef.current.set(P.K.ClippedFrom,a)}},t.createElement("h2",{className:"h4 mb-0"},t.createElement(U.x,{namespace:_,phrase:"clippedFrom"})),t.createElement(N.M.Provider,{value:i},t.createElement(q.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(a,i){return k.W.getAppLink(a,Object.assign(Object.assign({},i),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},hasPermissions:a,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return j.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink})))}const B={main:"iQ0Ie",expandedToc:"sIoV8"};var D=function(e,a,i){return function(t){return i?{application:G.O.VIDEOS,action:L.e.Videos.PREVIEW_PDF,args:[t.id],params:{videoId:e,shareId:a}}:{application:G.O.SIGN_UP,action:L.e.SignUp.SIGN_UP}}};function H(e){var a,i,U,q,N,M,j,_,H,K,Q=(0,m.g)(),Y=(0,y.T)().hasPermissions,Z=C.M.getCanBeConsumed(e.clip).canConsume,J=(0,R.Q)(e.tableOfContentsId),$=J.tableOfContentsActiveId,z=J.setTableOfContentsActiveId,X=J.controlledId,ee=J.setControlledId,ae=J.tableOfContentsExpanded,ie=J.onToggleTableOfContents,te=(0,o.Wp)(e.clip)&&e.featureAccess.canViewGlance,ne=(0,T.i)(te),re=ne.headingRef,ce=ne.headingElements,se=ce.map((function(a){var i;return{id:a.id,name:w.d.getSectionHeading(a.id,{clips:e.clips,interactives:e.interactives,resources:null===(i=e.clip.resources)||void 0===i?void 0:i.data,isPlayClipPage:!0})}}));(0,f.D)({setActiveId:z,headingElements:ce,controlledId:X,setControlledId:ee}),(0,A.P)(ce,X);var oe=C.M.isVideoTypeArchived(e.clip),de=Y(h.C.StudentExperience),le=t.useRef(!1);function ue(){var e,a,i,t;le.current=!(null===(a=null===(e=null==Q?void 0:Q.playerRef)||void 0===e?void 0:e.current)||void 0===a?void 0:a.isPaused()),null===(t=null===(i=null==Q?void 0:Q.playerRef)||void 0===i?void 0:i.current)||void 0===t||t.pause()}function pe(){var e,a;le.current&&(null===(a=null===(e=null==Q?void 0:Q.playerRef)||void 0===e?void 0:e.current)||void 0===a||a.play())}function ve(){var a,i;return!(!e.originalVideo||!(null===(a=e.clip._canBeConsumed)||void 0===a?void 0:a.value)||!(null===(i=e.currentUser)||void 0===i?void 0:i.isAuthenticated)||!e.hasProduct(I.x.Primary)||de)}var me="picture-in-picture"===Q.mode||e.featureAccess.canViewPublicLayout,ge=null!==(i=null===(a=e.clips)||void 0===a?void 0:a.filter((function(a){return a.id.toString()!==e.clip.id.toString()})))&&void 0!==i?i:[];return t.createElement("div",{className:"px-4 play-page-sections-container ".concat(e.shouldShowSideTableOfContents?"row g-0":"")},t.createElement("main",{className:"".concat(B.main," ").concat(e.shouldShowSideTableOfContents&&ae?"".concat(B.expandedToc," col-9"):e.shouldShowSideTableOfContents&&!ae?"pe-4":void 0)},!!(null===(U=e.breadcrumbs)||void 0===U?void 0:U.length)&&t.createElement("div",{className:"mb-2"},t.createElement(r.Oo,{breadcrumbs:e.breadcrumbs})),t.createElement(O.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:g.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),oe&&t.createElement(b.T,{typeId:e.clip.typeId,hasStudentExperience:de}),t.createElement("section",{id:P.K.Video,className:"mb-2 ".concat(p.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==re?void 0:re.current)&&re.current.set(P.K.Video,e)}},Z&&t.createElement(v.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(q=e.queryParams)||void 0===q?void 0:q.context,contextId:null===(N=e.queryParams)||void 0===N?void 0:N.contextId,moviesAndTv:null===(M=e.queryParams)||void 0===M?void 0:M.mtv,playNext:null===(j=e.queryParams)||void 0===j?void 0:j.playNext,startTime:null!==(H=null===(_=e.queryParams)||void 0===_?void 0:_.t)&&void 0!==H?H:null===(K=e.queryParams)||void 0===K?void 0:K.startTime,mode:"default",location:"play-page"}),t.createElement("div",{className:me?"":"d-none"},t.createElement(F.S,{video:e.clip,type:"pip"}))),t.createElement(V.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:ve()?{application:G.O.VIDEOS,action:L.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,n.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),te?t.createElement(d.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var a;return null===(a=Q.playerRef.current)||void 0===a?void 0:a.currentTime(e)},getTagAppLink:function(e){return{application:G.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:te}):t.createElement(s.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ue,onExitImmersiveReader:pe,getTagAppLink:function(e){return{application:G.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:re,suppressInteractivity:e.featureAccess.canViewPublicLayout}),t.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.imageCdnUrl,getAppLink:D(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:x.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:re}),t.createElement(l.J,{video:e.clip,interactives:e.interactives,imageCdnUrl:e.imageCdnUrl,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:re,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}),t.createElement(c.O,{clips:ge||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,headingRef:re,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},isPlugin:e.isPlugin}),te&&t.createElement(s.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ue,onExitImmersiveReader:pe,getTagAppLink:function(e){return{application:G.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:re,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0}),!!ve()&&t.createElement(W,{originalVideo:e.originalVideo,setFavourite:e.setFavourite,canFavourite:e.canFavourite,yearGroups:e.yearGroups,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:re,isPlugin:e.isPlugin,getClassroomGuideAppLink:k.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:k.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:k.W.getResourceGuidanceAppLink}),t.createElement(S.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(a,i){return k.W.getAppLink(a,Object.assign(Object.assign({},i),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin})),t.createElement(E.h,{isExpanded:ae,setIsExpanded:ie,items:se,activeId:$,setControlledId:ee,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},showInSide:e.shouldShowSideTableOfContents}))}}}]);
|
|
2
|
-
//# sourceMappingURL=8813-887868f687-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8813-887868f687-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/share/views/play-shared-clip/v2/PlaySharedClipViewV2.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/v2/components/clipped-from/ClippedFrom.tsx","file:///app/packages/projects/lite/src/shared/views/play-clip/v2/components/play-clip/play-clip-v2.scss","file:///app/packages/projects/lite/src/shared/views/play-clip/v2/components/play-clip/PlayClipV2.tsx"],"sourcesContent":["const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, ClipCollection, Config, CurrentUser, InteractiveCollection, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/v2/hooks/useShouldShowTableOfContents';\nimport { PlayClipV2 } from 'shared/views/play-clip/v2/components/play-clip/PlayClipV2';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedClipViewV2(props: ShareLinkViewProps): React.ReactElement {\n const { hasProduct } = useProducts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.sharedClip(props.objectId, props.shareId));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo?.id && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n \n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({ content: clip.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(clip);\n useDeepLinks({ id: props.objectId, app: 'clips', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClipV2\n shareId={props.shareId}\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n relatedVideos={relatedVideos}\n canFavourite={canFavourite}\n setFavourite={setFavourite}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n imageCdnUrl={config.data.imageCdnUrl}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest?.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n isPlugin={isPlugin}\n breadcrumbs={breadcrumbs}\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 { Core } from 'libs/common/backbone/index';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, FavouriteFunc, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst namespace = 'shared.playClipV2';\n\ninterface ClippedFromProps {\n originalVideo: VideoTypes;\n yearGroups: YearGroup[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n shareId?: string;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n isPlugin: boolean;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n}\n\nexport function ClippedFrom(props: ClippedFromProps) {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n return (\n <section\n className='play-page-section'\n id={PlayPageAnchor.ClippedFrom}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.ClippedFrom, el);\n }}\n >\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n />\n </VideoActionsContext.Provider>\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"iQ0Ie\",\"expandedToc\":\"sIoV8\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PlayPageClips } from 'libs/shared/components/play-page-v2/clips-widget/PlayPageClips';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page-v2/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page-v2/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page-v2/glance/VideoAtAGlanceV2';\nimport { PlayPageInteractives } from 'libs/shared/components/play-page-v2/interactives-widget/PlayPageInteractives';\nimport { PlayPageResources } from 'libs/shared/components/play-page-v2/resources-widget/PlayPageResources';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CanFavouriteFunc, Clip, CurrentUser, FavouriteFunc, InteractiveMetadata, Link, PointOfInterest, PresentationAudience, Resource, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { TableOfContentsContainer } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { usePlayPageTableOfContent } from 'shared/views/play/v2/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/v2/hooks/useSectionHeadings';\nimport { PlayPageUtils } from 'shared/views/play/v2/PlayPageUtilV2';\nimport { ClippedFrom } from 'shared/views/play-clip/v2/components/clipped-from/ClippedFrom';\n\nimport styles from './play-clip-v2.scss';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\n\ninterface PlayClipV2Props {\n clip: Clip;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n originalVideo: Video;\n currentUser: CurrentUser;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n imageCdnUrl: string;\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n isPlugin: boolean;\n breadcrumbs?: Breadcrumb[];\n}\n\nexport function PlayClipV2(props: PlayClipV2Props): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId);\n\n const hasGlance = hasGlanceData(props.clip) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(ele => {\n return {\n id: ele.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n ele.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: props.clip.resources?.data,\n isPlayClipPage: true\n }\n )\n };\n });\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n function canAccessOriginal(): boolean {\n if (!props.originalVideo || !props.clip._canBeConsumed?.value)\n return false;\n\n if (!props.currentUser?.isAuthenticated)\n return false;\n\n if (!props.hasProduct(ProductId.Primary))\n return false;\n\n if (hasStudentExperience)\n return false;\n\n return true;\n }\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal())\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.originalVideo.id, TextHelper.slugify(props.originalVideo.name) ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n\n const otherClips = props.clips?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n function getMainClassName() {\n if (props.shouldShowSideTableOfContents && tableOfContentsExpanded) {\n return `${styles.expandedToc} col-9`;\n }\n if (props.shouldShowSideTableOfContents && !tableOfContentsExpanded)\n return 'pe-4';\n }\n\n return (\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${getMainClassName()}`}>\n {!!props.breadcrumbs?.length &&\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n\n <RestrictionBanner\n restrictions={props.clip._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-2 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode='default'\n location='play-page'\n />\n )}\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <PlayPageTitleAndActions\n media={props.clip}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.clip}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n )}\n\n <PlayPageResources\n video={props.clip}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.imageCdnUrl}\n getAppLink={\n getResourceAppLink(props.clip.id, props.shareId, props.featureAccess.canViewResourceItems)\n }\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n headingRef={headingRef}\n />\n\n <PlayPageInteractives\n video={props.clip}\n interactives={props.interactives}\n imageCdnUrl={props.imageCdnUrl}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n headingRef={headingRef}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n isPlugin={props.isPlugin}\n />\n\n <PlayPageClips\n clips={otherClips || []}\n video={props.clip}\n canViewClips={props.featureAccess.canViewClips}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n imageCdnUrl={props.imageCdnUrl}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n headingRef={headingRef}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n isPlugin={props.isPlugin}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n />\n )}\n \n {!!canAccessOriginal() && (\n <ClippedFrom\n originalVideo={props.originalVideo}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n yearGroups={props.yearGroups}\n shareId={props.shareId}\n queryParams={props.queryParams}\n audiences={props.audiences}\n headingRef={headingRef}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n )}\n\n <RelatedVideos\n currentVideo={props.clip}\n yearGroups={props.yearGroups}\n relatedVideos={props.relatedVideos}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n isPlugin={props.isPlugin}\n />\n\n </main>\n\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n />\n \n </div>\n );\n}"],"names":["DEFAULT_PARTIAL_LOADING_OPTIONS","numItems","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","map","width","Math","max","floor","random","PlaySharedClipViewV2","props","hasProduct","u","setFavourite","canFavourite","hasPermissions","isPlugin","shouldShowSideTableOfContents","featureAccess","currentUser","config","clip","objectId","shareId","video","data","_parentVideo","id","childClips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","audiences","yearGroups","isAuthenticated","customerId","pointsOfInterest","content","videos","app","breadcrumbs","name","hasCompleted","clips","originalVideo","imageCdnUrl","canManageVideoAccess","items","tableOfContentsId","tocId","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","namespace","ClippedFrom","usePermissions","videoActions","useVideoActions","location","className","PlayPageAnchor","ref","el","headingRef","current","set","Text","phrase","VideoActionsContext","value","VideoList","getVideoAppLink","v","VideoAppLinkHelper","playNext","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","getResourceAppLink","videoId","canViewResource","resource","application","action","args","params","PlayClipV2","playerContext","canConsume","VideoHelper","usePlayPageTableOfContent","tableOfContentsActiveId","setTableOfContentsActiveId","controlledId","setControlledId","tableOfContentsExpanded","onToggleTableOfContents","hasGlance","canViewGlance","useSectionHeadings","headingElements","ele","resources","isPlayClipPage","useTableOfContentsActiveHeading","setActiveId","useTableOfContentsScroll","isArchived","hasStudentExperience","PermissionName","shouldPlayOnExitImmersiveReader","onLaunchImmersiveReader","playerRef","isPaused","pause","onExitImmersiveReader","play","canAccessOriginal","_canBeConsumed","ProductId","showPlayerPlaceholder","mode","canViewPublicLayout","otherClips","filter","c","toString","length","Breadcrumbs","RestrictionBanner","restrictions","_restrictions","objectTypeId","MasterType","ArchivedBanner","typeId","SeoConstants","GlobalPlayerConsumer","key","startTime","t","PlayerPlaceholder","type","PlayPageTitleAndActions","media","originalVideoAppLink","TextHelper","VideoAtAGlanceV2","setStartTime","time","currentTime","getTagAppLink","tag","tagOrClassification","suppressInteractivity","PlayPageResources","canViewResources","canViewResourceItems","getAppLink","analyticsData","clipId","clipName","resourceThumbnailFallbackUrl","ImageUrls","PlayPageInteractives","PlayPageClips","showHeading","RelatedVideos","currentVideo","TableOfContents","isExpanded","setIsExpanded","activeId","showInSide"],"sourceRoot":""}
|