@clickview/reports 0.89.0-rc.2 → 0.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +254 -254
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{C2ypnyI02.chunk.js → 6JQ6BqMh2.chunk.js} +2 -2
- package/dist/scripts/{C2ypnyI02.chunk.js.map → 6JQ6BqMh2.chunk.js.map} +1 -1
- package/dist/scripts/{DNRNNhy3.chunk.js → B1iL-jMr.chunk.js} +2 -2
- package/dist/scripts/{DNRNNhy3.chunk.js.map → B1iL-jMr.chunk.js.map} +1 -1
- package/dist/scripts/{BNN5pscb2.chunk.js → BAtXgv3y2.chunk.js} +2 -2
- package/dist/scripts/{BNN5pscb2.chunk.js.map → BAtXgv3y2.chunk.js.map} +1 -1
- package/dist/scripts/{DTga4UBD.chunk.js → BPR8VDbk.chunk.js} +2 -2
- package/dist/scripts/{DTga4UBD.chunk.js.map → BPR8VDbk.chunk.js.map} +1 -1
- package/dist/scripts/{DnC9RoGV.chunk.js → BXBV7owL.chunk.js} +3 -3
- package/dist/scripts/{DnC9RoGV.chunk.js.map → BXBV7owL.chunk.js.map} +1 -1
- package/dist/scripts/BeZ1MJpI.chunk.js +1 -0
- package/dist/scripts/{CzyQ8kBM.chunk.js → BkAs45Lr.chunk.js} +2 -2
- package/dist/scripts/{CzyQ8kBM.chunk.js.map → BkAs45Lr.chunk.js.map} +1 -1
- package/dist/scripts/{ZeBQ-OW-.chunk.js → C04VdpOQ.chunk.js} +2 -2
- package/dist/scripts/{ZeBQ-OW-.chunk.js.map → C04VdpOQ.chunk.js.map} +1 -1
- package/dist/scripts/{kzm6epUV.chunk.js → CAZ-IUkN.chunk.js} +2 -2
- package/dist/scripts/{kzm6epUV.chunk.js.map → CAZ-IUkN.chunk.js.map} +1 -1
- package/dist/scripts/CF1kF6Jh.chunk.js +1 -0
- package/dist/scripts/{CLk46QjF.chunk.js → CRlhqtL_.chunk.js} +2 -2
- package/dist/scripts/{CLk46QjF.chunk.js.map → CRlhqtL_.chunk.js.map} +1 -1
- package/dist/scripts/{BnzWs-z6.chunk.js → CXlTLbis.chunk.js} +2 -2
- package/dist/scripts/{BnzWs-z6.chunk.js.map → CXlTLbis.chunk.js.map} +1 -1
- package/dist/scripts/{CSucqxC_2.chunk.js → Cae9k2q12.chunk.js} +2 -2
- package/dist/scripts/{CSucqxC_2.chunk.js.map → Cae9k2q12.chunk.js.map} +1 -1
- package/dist/scripts/{DD6DxO8_2.chunk.js → CbJtjZDt2.chunk.js} +2 -2
- package/dist/scripts/{DD6DxO8_2.chunk.js.map → CbJtjZDt2.chunk.js.map} +1 -1
- package/dist/scripts/{D09t8fP0.chunk.js → CbVSQbWA.chunk.js} +2 -2
- package/dist/scripts/{D09t8fP0.chunk.js.map → CbVSQbWA.chunk.js.map} +1 -1
- package/dist/scripts/{DRThGgko.chunk.js → Cf_lhry_.chunk.js} +2 -2
- package/dist/scripts/{DRThGgko.chunk.js.map → Cf_lhry_.chunk.js.map} +1 -1
- package/dist/scripts/{9w-0PYPT2.chunk.js → D91VLfRj2.chunk.js} +2 -2
- package/dist/scripts/{9w-0PYPT2.chunk.js.map → D91VLfRj2.chunk.js.map} +1 -1
- package/dist/scripts/{hLeAzv3u2.chunk.js → DDoYluM72.chunk.js} +2 -2
- package/dist/scripts/{hLeAzv3u2.chunk.js.map → DDoYluM72.chunk.js.map} +1 -1
- package/dist/scripts/{DFrb5tDP2.chunk.js → DYn78_772.chunk.js} +2 -2
- package/dist/scripts/{DFrb5tDP2.chunk.js.map → DYn78_772.chunk.js.map} +1 -1
- package/dist/scripts/{wJ4aGP5K2.chunk.js → Dd-o5tl12.chunk.js} +2 -2
- package/dist/scripts/{wJ4aGP5K2.chunk.js.map → Dd-o5tl12.chunk.js.map} +1 -1
- package/dist/scripts/{B9pFKWJ02.chunk.js → DrYB4Ro-2.chunk.js} +2 -2
- package/dist/scripts/{B9pFKWJ02.chunk.js.map → DrYB4Ro-2.chunk.js.map} +1 -1
- package/dist/scripts/{CO_jJj0j2.chunk.js → DwSv23JW2.chunk.js} +2 -2
- package/dist/scripts/{CO_jJj0j2.chunk.js.map → DwSv23JW2.chunk.js.map} +1 -1
- package/dist/scripts/{BnSjmWJq.chunk.js → MKbQXC2E.chunk.js} +2 -2
- package/dist/scripts/{BnSjmWJq.chunk.js.map → MKbQXC2E.chunk.js.map} +1 -1
- package/dist/scripts/{vJbbo87R.chunk.js → PS4C28cy.chunk.js} +2 -2
- package/dist/scripts/{vJbbo87R.chunk.js.map → PS4C28cy.chunk.js.map} +1 -1
- package/dist/scripts/{DMfhvxDs2.chunk.js → Yhphmx6U2.chunk.js} +2 -2
- package/dist/scripts/{DMfhvxDs2.chunk.js.map → Yhphmx6U2.chunk.js.map} +1 -1
- package/dist/scripts/{app-DomX9RS2.js → app-D4CCj7F-.js} +3 -3
- package/dist/scripts/{app-DomX9RS2.js.map → app-D4CCj7F-.js.map} +1 -1
- package/dist/scripts/{kAYaBqYw.chunk.js → cNFodX9C.chunk.js} +2 -2
- package/dist/scripts/{kAYaBqYw.chunk.js.map → cNFodX9C.chunk.js.map} +1 -1
- package/dist/scripts/{CTdvdzIT2.chunk.js → dMkwhWzI2.chunk.js} +2 -2
- package/dist/scripts/{CTdvdzIT2.chunk.js.map → dMkwhWzI2.chunk.js.map} +1 -1
- package/dist/scripts/{DjoLfFO8.chunk.js → ej_k609j.chunk.js} +2 -2
- package/dist/scripts/{DjoLfFO8.chunk.js.map → ej_k609j.chunk.js.map} +1 -1
- package/dist/scripts/{Ci_TQUTp.chunk.js → n4MofnrM.chunk.js} +2 -2
- package/dist/scripts/{Ci_TQUTp.chunk.js.map → n4MofnrM.chunk.js.map} +1 -1
- package/dist/scripts/{XIOc3Va_2.chunk.js → tF73iFqX2.chunk.js} +2 -2
- package/dist/scripts/{XIOc3Va_2.chunk.js.map → tF73iFqX2.chunk.js.map} +1 -1
- package/dist/scripts/{DjtI-11t.chunk.js → tRbYkN25.chunk.js} +2 -2
- package/dist/scripts/{DjtI-11t.chunk.js.map → tRbYkN25.chunk.js.map} +1 -1
- package/dist/scripts/{Pvqa-Uuo.chunk.js → zh7zXmBf.chunk.js} +2 -2
- package/dist/scripts/{Pvqa-Uuo.chunk.js.map → zh7zXmBf.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/CcjaxIhQ.chunk.js +0 -1
- package/dist/scripts/DfzH_ahn.chunk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLk46QjF.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-highlight/partial-loading/partial-video-highlight.module.scss","../../../../libs/shared/src/components/video-highlight/partial-loading/PartialVideoHighlight.tsx","../../../../libs/shared/src/components/video-highlight/thumbnail/VideoHighlightThumbnail.tsx","../../../../libs/shared/src/components/video-highlight/VideoHighlight.tsx","../../../../libs/shared/src/enums/TutorialVideoType.ts","../../../../libs/shared/src/constants/HardCoded.ts","../../../../libs/shared/src/hooks/useTutorialVideoHighlight.ts","../../src/shared/flight-requests/VideoRequests.ts","../../src/shared/flight-requests/SearchRequests.ts","../../src/apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView.tsx","../../src/apps/dashboard/views/school-analytics-dashboard/components/classroom-views-alert/classroom-views-alert.module.scss","../../src/apps/dashboard/views/school-analytics-dashboard/components/classroom-views-alert/ClassroomViewsAlert.tsx","../../src/apps/dashboard/views/school-analytics-dashboard/school-analytics-dashboard.module.scss","../../src/apps/dashboard/views/school-analytics-dashboard/SchoolAnalyticsDashboardView.tsx"],"sourcesContent":[":local {\n .video {\n width: auto;\n height: 9rem;\n }\n\n .button {\n width: 6.25rem;\n height: 2.5rem;\n }\n\n .content {\n overflow: hidden;\n width: 49rem;\n height: 5rem;\n }\n\n .partialHighlight {\n overflow: hidden;\n width: 68.25rem;\n height: 9.2rem;\n }\n\n @media screen and (width <= 992px) {\n .video {\n overflow: hidden;\n width: auto;\n height: 100%;\n }\n\n .content {\n overflow: hidden;\n width: 20rem;\n height: 5rem;\n }\n }\n\n @media screen and (width <= 576px) {\n .partialHighlight {\n width: 23.875rem;\n height: 25.625rem;\n }\n\n .video {\n overflow: hidden;\n width: 22rem;\n height: 12.375rem;\n }\n\n .content {\n overflow: hidden;\n width: 20rem;\n height: 5rem;\n }\n }\n}\n","import React from 'react';\n\nimport styles from './partial-video-highlight.module.scss';\n\nexport function PartialVideoThumbnail() {\n return (\n <div className={`w-100 ${styles.partialHighlight}`}>\n <div className='row gx-3 h-100'>\n <div className='col-lg-3 col-sm-5 col-12 align-self-start'>\n <div className={`rounded-3 ${styles.video} partial-loading-background`}/>\n </div>\n <div className='col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between'>\n <div className={`${styles.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}></div>\n <div>\n <div className={`${styles.button} rounded-3 partial-loading-background me-2 d-inline-block`} />\n <div className={`${styles.button} rounded-3 partial-loading-background me-2 d-inline-block`} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { AppLink } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, LocationContext } from 'libs/analytics/interfaces';\n\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\ninterface VideoHighlightThumbnailProps {\n video?: VideoTypes;\n analyticsOptions?: AnalyticsOptions;\n appLink?: AppLink;\n redirectUrl?: string;\n commonVideoProps?: CommonVideoProps;\n locationContext?: LocationContext;\n}\n\nexport function VideoHighlightThumbnail(props: VideoHighlightThumbnailProps) {\n if (props.appLink) {\n return (\n <VideoThumbnail\n video={props.video}\n commonVideoProps={props.commonVideoProps}\n appLink={props.appLink}\n analyticsOptions={{\n ...props.analyticsOptions,\n location: props.locationContext\n }}\n imageOptions={{ size: ImageSize.Medium }}\n type='static'\n size='sm'\n hideDuration\n hideRating\n hideBottomBar\n alwaysShowIcon\n />\n );\n }\n\n return (\n <a\n href={props.redirectUrl}\n target='_blank'\n onClick={() => {\n AnalyticsHelper.logUserAction(\n { videoId: props.video?.id },\n { ...props.analyticsOptions, location: props.locationContext }\n );\n }}\n >\n <VideoThumbnail\n video={props.video}\n imageOptions={{ size: ImageSize.Medium }}\n type='cosmetic'\n size='sm'\n hideDuration\n hideRating\n hideBottomBar\n />\n </a>\n );\n}\n","import React from 'react';\nimport { ObjectHash } from 'backbone';\n\nimport { AppLinkHelper, LocationUtils } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, EventVersion, LocationContext, OnboardingDescriptor, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { PartialVideoThumbnail } from 'libs/shared/components/video-highlight/partial-loading/PartialVideoHighlight';\nimport { VideoHighlightThumbnail } from 'libs/shared/components/video-highlight/thumbnail/VideoHighlightThumbnail';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\ninterface VideoHighlightProps {\n video: VideoTypes;\n subtitle?: string;\n description?: string;\n supportArticle: string;\n appLink?: Core.AppLink;\n locationContext?: LocationContext;\n commonVideoProps?: CommonVideoProps;\n redirectUrl?: string;\n sharedPlaylistAppLink?: Core.AppLink;\n redirectPlaylistUrl?: string;\n bgColorClassName?: string;\n onDismiss?: () => void;\n}\n\nconst namespace = 'shared.videoHighlight';\n\nconst dismissAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: OnboardingDescriptor.DismissWidget,\n entity: EntityType.Widget,\n eventVersion: EventVersion.V1,\n location: LocationContext.VideoHighlight,\n workflowPhase: WorkflowPhase.Complete\n};\n\nconst videoAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: VideoActionDescriptor.ViewOriginalVideo,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Thumbnail,\n location: LocationContext.VideoHighlight,\n eventVersion: EventVersion.V1\n};\n\nconst subtitleAnalyticOptions = {\n actionType: UserAction.Click,\n location: LocationContext.VideoHighlight,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: VideoActionDescriptor.OpenInClickView,\n eventVersion: EventVersion.V1\n};\n\nconst helpArticleAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.SeeMore,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.AppLink,\n eventVersion: EventVersion.V1\n};\n\nexport function VideoHighlight(props: VideoHighlightProps) {\n if (!props.video) return <></>;\n\n function onDismissWithAnalytics() {\n AnalyticsHelper.logUserAction({ videoId: props.video?.id }, dismissAnalyticsOptions);\n props.onDismiss();\n }\n\n function onClick(\n link: Core.AppLink | string,\n analyticsOptions: AnalyticsOptions,\n analyticsData: ObjectHash = {}\n ) {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n if (typeof link === 'string') {\n LocationUtils.PageLoad(link, true);\n } else {\n AppLinkHelper.trigger(link);\n }\n }\n\n if (!props.video) {\n return (\n <div className={`position-relative p-3 rounded-3 ${props.bgColorClassName ?? ''}`}>\n <PartialVideoThumbnail/>\n </div>\n );\n }\n\n return (\n <div className={`position-relative p-3 rounded-3 ${props.bgColorClassName ?? ''}`}>\n <div className='row gx-3'>\n <div className='col-lg-3 col-sm-5 col-12 align-self-start'>\n <VideoHighlightThumbnail\n video={props.video}\n analyticsOptions={videoAnalyticsOptions}\n appLink={props.appLink}\n redirectUrl={props.redirectUrl}\n commonVideoProps={props.commonVideoProps}\n locationContext={props.locationContext}\n />\n </div>\n <div className='col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between'>\n <div className='overflow-hidden mt-lg-0 mt-2'>\n <TitleSubText>\n <span\n onClick={() =>\n onClick(props.sharedPlaylistAppLink ?? props.redirectPlaylistUrl, subtitleAnalyticOptions)\n }\n className='cursor-pointer'\n >{props.subtitle}</span>\n </TitleSubText>\n <div className='h5 mb-0 clamp-1 d-block'>\n <span\n onClick={() => onClick(props.appLink ?? props.redirectUrl, videoAnalyticsOptions)}\n className='cursor-pointer'\n >\n {props.video?.name}\n </span>\n </div>\n <div className='mt-1 mb-2'>{props.video?.description ?? props.description}</div>\n </div>\n <div>\n <button\n className='btn btn-dark me-2'\n onClick={() =>\n onClick(props.appLink ?? props.redirectUrl, videoAnalyticsOptions, { videoId: props.video?.id })}\n >\n <Text namespace={namespace} phrase='watch'/>\n </button>\n <button\n className='btn btn-outline-dark me-2'\n onClick={() => onClick(\n props.supportArticle,\n { ...helpArticleAnalyticsOptions, location: props.locationContext },\n { url: props.supportArticle }\n )}\n >\n <Text namespace={namespace} phrase='learnMore'/>\n </button>\n <div\n className='btn btn-outline-dark d-sm-none'\n onClick={onDismissWithAnalytics}\n >\n <Text namespace={namespace} phrase='dismiss'/>\n </div>\n </div>\n </div>\n </div>\n <div className='position-absolute top-0 end-0 p-2 d-sm-inline d-none'>\n <IconButton\n svg={CloseSvg}\n onClick={onDismissWithAnalytics}\n />\n </div>\n </div>\n );\n}\n","import { SettingName } from './SettingName';\n\nexport type TutorialVideosTarget = 'cv' | 'live';\n\n// tutorial videos should be added here if they are meant to be embedded into the product\nexport enum TutorialVideoType {\n SearchAndDiscover = 'searchAndDiscover',\n Analytics = 'analytics',\n OpenClassroom = 'openClassroom',\n CreateClassroom = 'createClassroom',\n UploadVideo = 'uploadVideo',\n Playlist = 'playlist',\n ShareVideo = 'shareVideo'\n}\n\n// link to the domain options that manage video highlight visibility\nexport const dismissibleTutorialVideoTypeSettingsMapping: {[key in TutorialVideoType]: SettingName } = {\n [TutorialVideoType.Analytics]: SettingName.HasDismissedAnalyticsTutorial,\n [TutorialVideoType.OpenClassroom]: SettingName.HasDismissedOpenClassroomsTutorial,\n [TutorialVideoType.SearchAndDiscover]: SettingName.HasDismissedSearchAndDiscoverTutorial,\n [TutorialVideoType.CreateClassroom]: SettingName.HasDismissedClassroomsTutorial,\n [TutorialVideoType.Playlist]: SettingName.HasDismissedPlaylistsTutorial,\n [TutorialVideoType.ShareVideo]: SettingName.HasDismissedMySharesTutorial,\n [TutorialVideoType.UploadVideo]: SettingName.HasDismissedMyVideosTutorial\n};\n","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nexport const HardCoded = {\n OlympicsTopics: {\n // AU_PRIMARY\n ['18']: {\n id: 'Oq9WnjA',\n name: '2026 Milano Cortina Winter Olympic Games'\n },\n // AU_SECONDARY\n ['9']: {\n id: 'EoAYjoR',\n name: '2026 Milano Cortina Winter Olympic Games'\n }\n },\n CommonwealthGameTopics: {\n // SCT_PRIMARY\n ['12']: {\n id: 'AO0j90j',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // SCT_SECONDARY\n ['24']: {\n id: 'ZJxKkg1',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // ENG_PRIMARY\n ['16']: {\n id: 'agD7d73',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // ENG_SECONDARY\n ['47']: {\n id: 'm6mpl27',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // AU_PRIMARY\n ['18']: {\n id: '3bRp6eA',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // AU SECONDARY\n ['9']: {\n id: '7mjAxYR',\n name: 'Commonwealth Games Glasgow 2026'\n }\n },\n PublicTranscriptVideoIds: [\n '78902422',\n '8139055',\n '32102562',\n '36875667',\n '3713657',\n '9900524',\n '48278572',\n '39424302',\n '3712691',\n '54504550',\n '23852726',\n '3713563',\n '3714027',\n '51281358',\n '58785149',\n '7322586',\n '3716774',\n '36554689',\n '54192890',\n '6689791',\n '10749459',\n '3712691',\n '81764158',\n '43772092',\n '43974358',\n '48091365',\n '6430651',\n '3713735',\n '54096131',\n '57977558',\n '78840166',\n '57738254',\n '51666370',\n '49858722'\n ],\n SpecialEvents: {\n dlL00b3: {\n id: 'dlL00b3',\n iconUrl: 'https://img.clickviewapp.com/v2/covers/PGbNp0'\n }\n },\n Classifications: {\n Twig: {\n EnglandSecondary: {\n HUB: 'yrg5vYN'\n },\n ScotlandSecondary: {\n HUB: 'Y69j14M'\n },\n InternationalSecondary: {\n HUB: 'MYM6GGM'\n },\n NewZealandSecondary: {\n HUB: 'agNmRd9'\n },\n CanadaMiddle: {\n HUB: '3brl1mY'\n },\n CanadaHigh: {\n HUB: 'kZJ9vkz'\n }\n },\n Tigtag: {\n EnglandPrimary: {\n HUB: 'D1218zx',\n TIGTAG_HUB: 'odldxPJ',\n TIGTAG_JUNIOR_HUB: 'nENExnL'\n },\n ScotlandPrimary: {\n HUB: 'JjAONbj',\n TIGTAG_HUB: '3bNAGl1',\n TIGTAG_JUNIOR_HUB: 'K6GKp43'\n },\n InternationalPrimary: {\n HUB: 'W1xqbk2',\n TIGTAG_HUB: 'ek3dJr8',\n TIGTAG_JUNIOR_HUB: 'PGyKzpn'\n },\n NewZealandPrimary: {\n HUB: 'odnkREE',\n TIGTAG_HUB: 'kZJ4RPa',\n TIGTAG_JUNIOR_HUB: 'zMg80DR'\n },\n CanadaElementary: {\n HUB: 'JjabmDE',\n TIGTAG_HUB: 'dq9Ewje',\n TIGTAG_JUNIOR_HUB: 'bmElWrb'\n },\n CanadaMiddle: {\n HUB: 'dq9EwyZ',\n TIGTAG_HUB: 'K6abxjP',\n TIGTAG_JUNIOR_HUB: '7mwxLdR'\n }\n }\n },\n // Production values. For testing in development, change these to staging preso values\n PresentationIds: {\n DEFAULT: 1,\n DEFAULT_CURRICULUM: 10,\n\n AU_PRIMARY: 18,\n AU_SECONDARY: 9,\n AU_TERTIARY: 81,\n US_ELEMENTARY: 13,\n US_MIDDLE: 14,\n US_HIGH: 15,\n CA_ELEMENTARY: 100,\n CA_MIDDLE: 101,\n CA_HIGH: 102,\n STREAMABLE_LEARNING: 68,\n ENG_PRIMARY: 16,\n ENG_SECONDARY: 47,\n SCT_PRIMARY: 12,\n SCT_SECONDARY: 24,\n UK_TERTIARY: 82,\n INT_PRIMARY: 19,\n INT_SECONDARY: 21,\n NZ_PRIMARY: 96,\n NZ_SECONDARY: 97\n },\n Libraries: {\n LICENCED_CONTENT_COLLECTION: '3700633',\n\n AU_PRIMARY: '10066675',\n AU_SECONDARY: '59401330',\n AU_TERTIARY: '5836680',\n US_ELEMENTARY: '38693445',\n US_MIDDLE: '39642303',\n US_HIGH: '38693435',\n CA_ELEMENTARY: '92862332',\n CA_MIDDLE: '92862334',\n CA_HIGH: '92862344',\n STREAMABLE_LEARNING: '78688869',\n ENG_PRIMARY: '35340580',\n ENG_SECONDARY: '59889793',\n SCT_PRIMARY: '33386791',\n SCT_SECONDARY: '59856733',\n UK_TERTIARY: '5815036',\n INT_PRIMARY: '3706428',\n INT_SECONDARY: '3706459',\n NZ_PRIMARY: '3705693',\n NZ_SECONDARY: '3705710',\n NZ_MTV: '26989676',\n\n TWIG: '88117784',\n TIGTAG: '80333935'\n },\n Rostering: {\n sources: {\n 0: { name: 'Unknown', iconUrl: '' },\n 1: { name: 'Clever', iconUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd' },\n 2: { name: 'ClassLink', iconUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5' },\n 3: { name: 'Google', iconUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL' },\n 4: { name: 'Microsoft', iconUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP' },\n 5: { name: 'Schoology', iconUrl: 'https://img.clickviewapp.com/v2/logos/kZNEyz' },\n 6: { name: 'PowerSchool', iconUrl: 'https://img.clickviewapp.com/v2/logos/m6aDmR' }\n }\n },\n Images: {\n Level_1: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dlM73E',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/WAe8MP',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/raRm7E',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/3kzeZ2'\n },\n Level_2: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/WAeKvP',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/9DAZJv',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/eKG2bq',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/xyn5eP'\n },\n Level_3: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dl1d0g',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/R0Pz7A',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/8LYZ9R',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/nKDyRj'\n },\n Level_4: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/vYJPP5',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/PGPLLP'\n },\n TOPIC_DEFAULT_BANNER: 'https://img.clickviewapp.com/v2/banners/yKvoG0',\n STREAMABLE_TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/q6gnOn',\n STREAMABLE_TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/age95g'\n },\n Onboarding: {\n Playlist: {\n COVER_FILE_ID: 'G149g3',\n BANNER_FILE_ID: 'bmPLkn'\n },\n LOADING_THUMBNAILS: [\n 'https://img.clickviewapp.com/v2/thumbnails/7m34ne',\n 'https://img.clickviewapp.com/v2/thumbnails/W1bjqJ',\n 'https://img.clickviewapp.com/v2/thumbnails/G14M1e',\n 'https://img.clickviewapp.com/v2/thumbnails/2mnv5x',\n 'https://img.clickviewapp.com/v2/thumbnails/xAEG91',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbyg',\n 'https://img.clickviewapp.com/v2/thumbnails/W13emP',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6j2vy',\n 'https://img.clickviewapp.com/v2/thumbnails/W1MJGE',\n 'https://img.clickviewapp.com/v2/thumbnails/OqDJqG',\n 'https://img.clickviewapp.com/v2/thumbnails/1My9Wn',\n 'https://img.clickviewapp.com/v2/thumbnails/G14MRe',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgKpl',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbp9',\n 'https://img.clickviewapp.com/v2/thumbnails/G147R1',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgMz5',\n 'https://img.clickviewapp.com/v2/thumbnails/G14Me5',\n 'https://img.clickviewapp.com/v2/thumbnails/5bEovE',\n 'https://img.clickviewapp.com/v2/thumbnails/odY4oZ',\n 'https://img.clickviewapp.com/v2/thumbnails/yrqwqD',\n 'https://img.clickviewapp.com/v2/thumbnails/K6pOmR',\n 'https://img.clickviewapp.com/v2/thumbnails/vYK3w4',\n 'https://img.clickviewapp.com/v2/thumbnails/agnD88',\n 'https://img.clickviewapp.com/v2/thumbnails/4rKmp7',\n 'https://img.clickviewapp.com/v2/thumbnails/0wM4r3',\n 'https://img.clickviewapp.com/v2/thumbnails/69A2jO',\n 'https://img.clickviewapp.com/v2/thumbnails/7m3Z3e',\n 'https://img.clickviewapp.com/v2/thumbnails/3bGL94',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6jwLo',\n 'https://img.clickviewapp.com/v2/thumbnails/1MyPby'\n ]\n },\n Tutorial: {\n cv: {\n staging: {\n [InstanceRegion.AU]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n }\n },\n production: {\n [InstanceRegion.AU]: {\n PLAYLIST: '106743306',\n SHARE: 'DYXNQP'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '106743114',\n SHARE: 'DvwPAL'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '106735465',\n SHARE: 'D6VOJX'\n }\n }\n },\n live: {\n staging: {\n [InstanceRegion.AU]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n }\n },\n production: {\n [InstanceRegion.AU]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n }\n }\n }\n },\n TutorialVideoHighlight: {\n analytics: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107356113',\n SHARE: 'DNYxnm'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107239339',\n SHARE: 'GmQgWQ'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107324974',\n SHARE: 'bAKL6d'\n }\n }\n },\n searchAndDiscover: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107310200',\n SHARE: 'Gp92A7'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107219457',\n SHARE: 'GMY10v'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107418074',\n SHARE: 'GgwWvY'\n }\n }\n },\n openClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302736',\n SHARE: 'Dkrvan'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106898400',\n SHARE: 'Da9YRX'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898583',\n SHARE: 'G2Vxrk'\n }\n }\n },\n createClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633076',\n SHARE: 'G2Vxvp'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107239329',\n SHARE: 'b9dp00'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107232174',\n SHARE: 'DYgRdV'\n }\n }\n },\n uploadVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302713',\n SHARE: 'byNpd8'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106826031',\n SHARE: 'GmQgXQ'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898590',\n SHARE: 'D6AgER'\n }\n }\n },\n playlist: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107357318',\n SHARE: 'DKYdz7'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107221344',\n SHARE: 'Gp92ay'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107221972',\n SHARE: 'GR9RxO'\n }\n }\n },\n shareVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302709',\n SHARE: 'bwgdNk'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106826023',\n SHARE: 'DvwPYO'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898587',\n SHARE: 'bzr05K'\n }\n }\n },\n welcomeToClickView: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095344',\n SHARE: 'DaalVQ'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302715',\n SHARE: 'DEleZo'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107148652',\n SHARE: 'GR9RZL'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107162361',\n SHARE: 'G084Qg'\n }\n }\n },\n welcomeToClickViewLive: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107493452',\n SHARE: 'bnp63m'\n }\n }\n }\n },\n UpsellVideo: {\n CLICKVIEW: 'https://static.clickview.com.au/video-banners/clickview-banner.mp4'\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { dismissibleTutorialVideoTypeSettingsMapping, TutorialVideoType } from 'libs/shared/enums/TutorialVideoType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes } from 'libs/shared/interfaces';\n\ninterface PlaylistIdsProps {\n PLAYLIST: string;\n SHARE: string;\n}\n\ninterface VideoIdsProps {\n VIDEO: string;\n SHARE: string;\n}\n\nexport interface TutorialVideoHighlightContext {\n shouldShowVideo: boolean;\n tutorialVideo: Flight.Response<VideoTypes>;\n videoIds: VideoIdsProps;\n playlistIds: PlaylistIdsProps;\n hasDismissedVideoHighlight?: boolean;\n dismissVideoHighlight?: () => Promise<void>;\n}\n\nexport function useTutorialVideoHighlight(\n type: TutorialVideoType,\n requireDismissal: boolean = true\n): TutorialVideoHighlightContext {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const ids = config.data?.liteUrl.includes('staging') ?\n HardCoded.TutorialVideoHighlight[type].staging :\n HardCoded.TutorialVideoHighlight[type].production;\n const videoIds = ids[instanceRegion as keyof typeof ids];\n\n const playlistIds = (config.data?.liteUrl.includes('staging') ?\n HardCoded.Tutorial.cv.staging[instanceRegion] :\n HardCoded.Tutorial.cv.production[instanceRegion]) || { PLAYLIST: '', SHARE: '' };\n\n const { hasPermissions, isLoaded: isPermissionLoaded } = usePermissions();\n\n // if the user is not signed in or not a student, this should fetch the video\n const shouldShowVideo =\n instanceRegion && videoIds !== undefined &&\n isPermissionLoaded &&\n !hasPermissions(PermissionName.StudentExperience);\n\n const tutorialVideo = Flight.useBasicFetch<VideoTypes>(\n shouldShowVideo &&\n VideoRequests.sharedVideo(videoIds.VIDEO, videoIds.SHARE)\n );\n\n const settings = useSettings(LocationContext.VideoHighlight);\n\n if (!requireDismissal || !Object.keys(dismissibleTutorialVideoTypeSettingsMapping).includes(type)) {\n return {\n shouldShowVideo,\n tutorialVideo,\n videoIds,\n playlistIds\n };\n }\n\n const tutorialSettingsMap = {\n [TutorialVideoType.Analytics]: settings.hasDismissedAnalyticsTutorial,\n [TutorialVideoType.OpenClassroom]: settings.hasDismissedOpenClassroomsTutorial,\n [TutorialVideoType.SearchAndDiscover]: settings.hasDismissedSearchAndDiscoverTutorial,\n [TutorialVideoType.CreateClassroom]: settings.hasDismissedClassroomsTutorial,\n [TutorialVideoType.Playlist]: settings.hasDismissedPlaylistsTutorial,\n [TutorialVideoType.ShareVideo]: settings.hasDismissedMySharesTutorial,\n [TutorialVideoType.UploadVideo]: settings.hasDismissedMyVideosTutorial\n };\n \n const settingName = dismissibleTutorialVideoTypeSettingsMapping[type as TutorialVideoType];\n\n const dismissVideoHighlight = async () => {\n if (!Object.keys(tutorialSettingsMap).includes(type) || !settingName) return;\n await settings.updateUserSettingAsync({\n name: settingName,\n value: true,\n kind: SettingKind.Setting\n });\n };\n\n const hasDismissedVideoHighlight = tutorialSettingsMap[type as keyof typeof tutorialSettingsMap] ?? null;\n\n return {\n shouldShowVideo,\n tutorialVideo,\n videoIds,\n playlistIds,\n hasDismissedVideoHighlight,\n dismissVideoHighlight\n };\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nexport const VideoRequests = {\n video(\n id: string,\n shareId?: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: 'thumbnail',\n shareId\n }),\n key: `video:${id}`\n };\n }\n};\n","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopSearch } from 'shared/interfaces';\n\nexport const SearchRequests = {\n topSearches(\n filter: AnalyticsRequestFilter,\n success?: (data: TopSearch[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/search/top', filter),\n key: getAnalyticsRequestKey('top:searches', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topSearchesCardEmptyStateV2';\n\nexport function TopSearchesCardEmptyStateV2() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTopSearchesCardV2() {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-50'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-75'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { SearchRequests } from 'shared/flight-requests/SearchRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopSearch } from 'shared/interfaces';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\n\nimport { TopSearchesCardEmptyStateV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2';\nimport { PartialTopSearchesCardV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2';\n\nconst namespace = 'reportsDashboard.topSearchesCardV2';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopSearchesCardV2View() {\n const requestFilter = useGetRequestFilter('search');\n\n const searches = Flight.useBasicFetch<TopSearch[]>(SearchRequests.topSearches(requestFilter));\n\n const getSearchUrl = useGetExternalUrl(ExternalRouteHelper.getPrimarySearchUrl);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {searches.data ? (\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='topSearches' /></h2>\n\n {searches.data.length ?\n <>\n <Scrollbars className='position-relative'>\n <ol className='position-absolute w-100 ps-4'>\n {searches.data.map((s, idx) => {\n return (\n <li\n key={idx}\n className='mb-3'\n >\n <a\n href={getSearchUrl(s.query)}\n target='_blank'\n className='position-relative d-flex justify-content-between align-items-center pe-5'\n >\n <span>\n {s.query}\n </span>\n <div className='position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3'>\n <SvgContainer svg={NewWindowSvg} />\n </div>\n </a>\n </li>\n );\n })}\n </ol>\n </Scrollbars>\n </> :\n <TopSearchesCardEmptyStateV2 />\n }\n </>\n ) : <PartialTopSearchesCardV2 />}\n </div>\n );\n}\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topStreamsCardEmptyState';\n\nexport function TopStreamsCardEmptyState() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTopStreamsCard(): JSX.Element {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='position-relative'>\n <ul className='list-unstyled position-absolute top-0 start-0 w-100 h-100'>\n {Array(10).fill(null).map((_, i) => (\n <li key={i} className='mb-3'>\n <div className='row g-0'>\n <div className='col-5'>\n <div className='ratio ratio-16x9 rounded partial-loading-background' />\n </div>\n <div className='col-7 d-flex align-items-center'>\n <div className='mx-2 w-100'>\n <div className='w-100 partial-loading-background mb-1'> </div>\n <div className='w-75 partial-loading-background'> </div>\n </div>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopVideoV2 } from 'shared/interfaces';\nimport { getSchoolVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { TopStreamsCardEmptyState } from 'apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState';\nimport { PartialTopStreamsCard } from 'apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard';\n\nconst namespace = 'reportsDashboard.topStreamsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 10;\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopStreamsCardView() {\n const filterQueryParams = useGetAppLinkFilterParams();\n const requestFilter = useGetRequestFilter('video-views');\n\n const topStreams = Flight.useBasicFetch<TopVideoV2[]>(VideoViewsV2Requests.topStreams(LIMIT, requestFilter));\n\n const videos = useBatchFetch<VideoTypes>(\n topStreams.data?.map(v => v.objectId) ?? [],\n VideoRequests.videos\n );\n\n const hasLoaded = (\n topStreams.hasCompleted &&\n !videos.isFetching\n );\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3'>\n {hasLoaded ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{getPhrase('topVideos')}</h2>\n <AppLink\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n </div>\n\n {videos.itemsArr?.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <ul className='list-unstyled'>\n {topStreams.data.map(stream => {\n const video = videos.items[stream.objectId];\n\n if (!video)\n return;\n\n return (\n <li key={video.id} className='mb-3'>\n <AppLink appLink={getSchoolVideoAppLink(video, filterQueryParams)}>\n <div className='row g-0'>\n <div className='col-5'>\n <VideoThumbnail\n video={video}\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n size='sm'\n />\n </div>\n <div className='col-7'>\n <div className='d-flex flex-column mx-2'>\n {VideoHelper.isVideoType(video) && (\n <VideoSubText\n type='series'\n video={video}\n analyticsOptions={null}\n className='d-inline clamp-1'\n />\n )}\n <span className='clamp-2 fw-medium'>\n {video.name}\n </span>\n <Text namespace={namespace} phrase='views' options={{ smartCount: stream.combinedCount }} />\n </div>\n </div>\n </div>\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n </Scrollbars> :\n <TopStreamsCardEmptyState />\n }\n </> :\n <PartialTopStreamsCard />\n }\n </div>\n );\n}\n",".cogIcon {\n cursor: pointer;\n color: $gray-900;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { CogSvg } from 'libs/shared/images/svg/objects/CogSvg';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useClassroomViewsAlert } from 'shared/hooks/useClassroomViewsAlert';\n\nimport styles from './classroom-views-alert.module.scss';\n\nconst namespace = 'reportsDashboard.classroomViewsAlert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomViewsAlertProps {\n hasClassroomViews: boolean;\n}\n\nexport function ClassroomViewsAlert(props: ClassroomViewsAlertProps): JSX.Element | null {\n const { alertVariant, dismissAlert } = useClassroomViewsAlert(props.hasClassroomViews);\n\n if (alertVariant === 'none')\n return null;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2'>\n <div className='d-flex align-items-center gap-1 ms-1'>\n {alertVariant === 'info' ? <InfoBannerContent /> : <ReminderBannerContent />}\n </div>\n <IconButton svg={CloseSvg} className='text-blue' onClick={dismissAlert} />\n </div>\n );\n}\n\nfunction SettingsCog(): JSX.Element {\n return (\n <IconButton\n customSize\n svg={CogSvg}\n svgSize={SvgContainerSize.Standard}\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.CLASSROOM_VIEWS_POPUP }}\n className={styles.cogIcon}\n tooltip={getPhrase('settingsTitle')}\n tooltipTrigger={['hover']}\n ariaLabel={getPhrase('settingsTitle')}\n />\n );\n}\n\nfunction InfoBannerContent(): JSX.Element {\n return (\n <>\n <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\n <SettingsCog />\n <Text namespace={namespace} phrase='description' />\n <a className='text-info' href={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomViews)} target='_blank' rel='noopener noreferrer'>\n <Text namespace={namespace} phrase='link' />\n </a>\n </>\n );\n}\n\nfunction ReminderBannerContent(): JSX.Element {\n return (\n <>\n <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\n <SettingsCog />\n <Text namespace={namespace} phrase='reminderDescription' />\n <AppLink appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.CLASSROOM_VIEWS_POPUP }} className='text-info hover-text-underline'>\n <Text namespace={namespace} phrase='reminderLink' />\n </AppLink>\n </>\n );\n}\n",":local {\n .topRow {\n min-height: 25rem;\n }\n\n .barChart {\n flex: 1 0;\n min-width: 0;\n }\n\n .videoViews {\n flex: 2 0;\n min-width: 0;\n }\n\n .bottomRow {\n min-height: 27rem;\n }\n\n .bottomColumn {\n flex: 1 0;\n min-width: 0;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { VideoHighlight } from 'libs/shared/components/video-highlight/VideoHighlight';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { TutorialVideoType } from 'libs/shared/enums/TutorialVideoType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTutorialVideoHighlight } from 'libs/shared/hooks/useTutorialVideoHighlight';\nimport { Config } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\n\nimport { TopSearchesCardV2View } from 'apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View';\nimport { TopStreamsCardView } from 'apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView';\n\nimport { ClassroomViewsAlert } from './components/classroom-views-alert/ClassroomViewsAlert';\n\nimport styles from './school-analytics-dashboard.module.scss';\n\nconst TOP_CLASSIFICATIONS_LIMIT = 10;\n\nconst namespace = 'reportsDashboard.schoolAnalyticsDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolAnalyticsDashboardView(): JSX.Element {\n const isTertiary = useIsTertiary();\n const { hasStudentReach } =\n useSettings(LocationContext.VideoHighlight);\n\n const header = isTertiary ? getPhrase('tertiaryDashboard') : getPhrase('dashboard');\n const { shouldShowVideo, videoIds, playlistIds, hasDismissedVideoHighlight, dismissVideoHighlight } =\n useTutorialVideoHighlight(TutorialVideoType.Analytics);\n\n const tutorialVideo = Flight.useBasicFetch(\n shouldShowVideo &&\n VideoRequests.video(videoIds.VIDEO, videoIds.SHARE)\n );\n const getObjectUrl = useGetExternalUrl(ExternalRouteHelper.getPrimaryObjectUrl);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const playlistUrl = ExternalRouteHelper.getSharePlaylistUrl({\n id: ProductId.Primary,\n order: 0,\n name: '',\n url: config.data?.liteUrl,\n imageUrl: ''\n }, playlistIds?.SHARE);\n\n useSetPageMetadata({ title: header });\n useSetHeaderTitle(header);\n\n return (\n <div className='d-flex flex-column gap-3'>\n <ClassroomViewsAlert hasClassroomViews={hasStudentReach} />\n {tutorialVideo?.data && !hasDismissedVideoHighlight &&\n <VideoHighlight\n video={tutorialVideo?.data}\n subtitle={getPhrase('videoHighlightSubtitle')}\n description={getPhrase('videoHighlightDescription')}\n bgColorClassName='bg-light-blue'\n supportArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomAnalytics)}\n onDismiss={dismissVideoHighlight}\n redirectUrl={getObjectUrl(tutorialVideo?.data)}\n redirectPlaylistUrl={playlistUrl}\n locationContext={LocationContext.VideoHighlight}\n />\n }\n <div className={`d-flex gap-3 ${styles.topRow}`}>\n <div className={styles.barChart}>\n <StreamsBarChartCardView\n type='year_group'\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n />\n </div>\n <div className={styles.videoViews}>\n <StreamsChartCardView type='user_type' />\n </div>\n </div>\n <div className={`d-flex gap-3 ${styles.bottomRow}`}>\n <div className={styles.bottomColumn}>\n <TopStreamsCardView />\n </div>\n <div className={styles.bottomColumn}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('subjects')}\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.bottomColumn}>\n <TopSearchesCardV2View />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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ACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACD,KAAM,CACJ,QAAS,EACN,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACF,CACD,uBAAwB,CACtB,UAAW,CACT,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,kBAAmB,CACjB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,cAAe,CACb,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,gBAAiB,CACf,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,YAAa,CACX,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,SAAU,CACR,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,WAAY,CACV,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT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"}
|
|
1
|
+
{"version":3,"file":"CRlhqtL_.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-highlight/partial-loading/partial-video-highlight.module.scss","../../../../libs/shared/src/components/video-highlight/partial-loading/PartialVideoHighlight.tsx","../../../../libs/shared/src/components/video-highlight/thumbnail/VideoHighlightThumbnail.tsx","../../../../libs/shared/src/components/video-highlight/VideoHighlight.tsx","../../../../libs/shared/src/enums/TutorialVideoType.ts","../../../../libs/shared/src/constants/HardCoded.ts","../../../../libs/shared/src/hooks/useTutorialVideoHighlight.ts","../../src/shared/flight-requests/VideoRequests.ts","../../src/shared/flight-requests/SearchRequests.ts","../../src/apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView.tsx","../../src/apps/dashboard/views/school-analytics-dashboard/components/classroom-views-alert/classroom-views-alert.module.scss","../../src/apps/dashboard/views/school-analytics-dashboard/components/classroom-views-alert/ClassroomViewsAlert.tsx","../../src/apps/dashboard/views/school-analytics-dashboard/school-analytics-dashboard.module.scss","../../src/apps/dashboard/views/school-analytics-dashboard/SchoolAnalyticsDashboardView.tsx"],"sourcesContent":[":local {\n .video {\n width: auto;\n height: 9rem;\n }\n\n .button {\n width: 6.25rem;\n height: 2.5rem;\n }\n\n .content {\n overflow: hidden;\n width: 49rem;\n height: 5rem;\n }\n\n .partialHighlight {\n overflow: hidden;\n width: 68.25rem;\n height: 9.2rem;\n }\n\n @media screen and (width <= 992px) {\n .video {\n overflow: hidden;\n width: auto;\n height: 100%;\n }\n\n .content {\n overflow: hidden;\n width: 20rem;\n height: 5rem;\n }\n }\n\n @media screen and (width <= 576px) {\n .partialHighlight {\n width: 23.875rem;\n height: 25.625rem;\n }\n\n .video {\n overflow: hidden;\n width: 22rem;\n height: 12.375rem;\n }\n\n .content {\n overflow: hidden;\n width: 20rem;\n height: 5rem;\n }\n }\n}\n","import React from 'react';\n\nimport styles from './partial-video-highlight.module.scss';\n\nexport function PartialVideoThumbnail() {\n return (\n <div className={`w-100 ${styles.partialHighlight}`}>\n <div className='row gx-3 h-100'>\n <div className='col-lg-3 col-sm-5 col-12 align-self-start'>\n <div className={`rounded-3 ${styles.video} partial-loading-background`}/>\n </div>\n <div className='col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between'>\n <div className={`${styles.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}></div>\n <div>\n <div className={`${styles.button} rounded-3 partial-loading-background me-2 d-inline-block`} />\n <div className={`${styles.button} rounded-3 partial-loading-background me-2 d-inline-block`} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { AppLink } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, LocationContext } from 'libs/analytics/interfaces';\n\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\ninterface VideoHighlightThumbnailProps {\n video?: VideoTypes;\n analyticsOptions?: AnalyticsOptions;\n appLink?: AppLink;\n redirectUrl?: string;\n commonVideoProps?: CommonVideoProps;\n locationContext?: LocationContext;\n}\n\nexport function VideoHighlightThumbnail(props: VideoHighlightThumbnailProps) {\n if (props.appLink) {\n return (\n <VideoThumbnail\n video={props.video}\n commonVideoProps={props.commonVideoProps}\n appLink={props.appLink}\n analyticsOptions={{\n ...props.analyticsOptions,\n location: props.locationContext\n }}\n imageOptions={{ size: ImageSize.Medium }}\n type='static'\n size='sm'\n hideDuration\n hideRating\n hideBottomBar\n alwaysShowIcon\n />\n );\n }\n\n return (\n <a\n href={props.redirectUrl}\n target='_blank'\n onClick={() => {\n AnalyticsHelper.logUserAction(\n { videoId: props.video?.id },\n { ...props.analyticsOptions, location: props.locationContext }\n );\n }}\n >\n <VideoThumbnail\n video={props.video}\n imageOptions={{ size: ImageSize.Medium }}\n type='cosmetic'\n size='sm'\n hideDuration\n hideRating\n hideBottomBar\n />\n </a>\n );\n}\n","import React from 'react';\nimport { ObjectHash } from 'backbone';\n\nimport { AppLinkHelper, LocationUtils } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, EventVersion, LocationContext, OnboardingDescriptor, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { PartialVideoThumbnail } from 'libs/shared/components/video-highlight/partial-loading/PartialVideoHighlight';\nimport { VideoHighlightThumbnail } from 'libs/shared/components/video-highlight/thumbnail/VideoHighlightThumbnail';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\ninterface VideoHighlightProps {\n video: VideoTypes;\n subtitle?: string;\n description?: string;\n supportArticle: string;\n appLink?: Core.AppLink;\n locationContext?: LocationContext;\n commonVideoProps?: CommonVideoProps;\n redirectUrl?: string;\n sharedPlaylistAppLink?: Core.AppLink;\n redirectPlaylistUrl?: string;\n bgColorClassName?: string;\n onDismiss?: () => void;\n}\n\nconst namespace = 'shared.videoHighlight';\n\nconst dismissAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: OnboardingDescriptor.DismissWidget,\n entity: EntityType.Widget,\n eventVersion: EventVersion.V1,\n location: LocationContext.VideoHighlight,\n workflowPhase: WorkflowPhase.Complete\n};\n\nconst videoAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: VideoActionDescriptor.ViewOriginalVideo,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Thumbnail,\n location: LocationContext.VideoHighlight,\n eventVersion: EventVersion.V1\n};\n\nconst subtitleAnalyticOptions = {\n actionType: UserAction.Click,\n location: LocationContext.VideoHighlight,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: VideoActionDescriptor.OpenInClickView,\n eventVersion: EventVersion.V1\n};\n\nconst helpArticleAnalyticsOptions = {\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.SeeMore,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.AppLink,\n eventVersion: EventVersion.V1\n};\n\nexport function VideoHighlight(props: VideoHighlightProps) {\n if (!props.video) return <></>;\n\n function onDismissWithAnalytics() {\n AnalyticsHelper.logUserAction({ videoId: props.video?.id }, dismissAnalyticsOptions);\n props.onDismiss();\n }\n\n function onClick(\n link: Core.AppLink | string,\n analyticsOptions: AnalyticsOptions,\n analyticsData: ObjectHash = {}\n ) {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n if (typeof link === 'string') {\n LocationUtils.PageLoad(link, true);\n } else {\n AppLinkHelper.trigger(link);\n }\n }\n\n if (!props.video) {\n return (\n <div className={`position-relative p-3 rounded-3 ${props.bgColorClassName ?? ''}`}>\n <PartialVideoThumbnail/>\n </div>\n );\n }\n\n return (\n <div className={`position-relative p-3 rounded-3 ${props.bgColorClassName ?? ''}`}>\n <div className='row gx-3'>\n <div className='col-lg-3 col-sm-5 col-12 align-self-start'>\n <VideoHighlightThumbnail\n video={props.video}\n analyticsOptions={videoAnalyticsOptions}\n appLink={props.appLink}\n redirectUrl={props.redirectUrl}\n commonVideoProps={props.commonVideoProps}\n locationContext={props.locationContext}\n />\n </div>\n <div className='col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between'>\n <div className='overflow-hidden mt-lg-0 mt-2'>\n <TitleSubText>\n <span\n onClick={() =>\n onClick(props.sharedPlaylistAppLink ?? props.redirectPlaylistUrl, subtitleAnalyticOptions)\n }\n className='cursor-pointer'\n >{props.subtitle}</span>\n </TitleSubText>\n <div className='h5 mb-0 clamp-1 d-block'>\n <span\n onClick={() => onClick(props.appLink ?? props.redirectUrl, videoAnalyticsOptions)}\n className='cursor-pointer'\n >\n {props.video?.name}\n </span>\n </div>\n <div className='mt-1 mb-2'>{props.video?.description ?? props.description}</div>\n </div>\n <div>\n <button\n className='btn btn-dark me-2'\n onClick={() =>\n onClick(props.appLink ?? props.redirectUrl, videoAnalyticsOptions, { videoId: props.video?.id })}\n >\n <Text namespace={namespace} phrase='watch'/>\n </button>\n <button\n className='btn btn-outline-dark me-2'\n onClick={() => onClick(\n props.supportArticle,\n { ...helpArticleAnalyticsOptions, location: props.locationContext },\n { url: props.supportArticle }\n )}\n >\n <Text namespace={namespace} phrase='learnMore'/>\n </button>\n <div\n className='btn btn-outline-dark d-sm-none'\n onClick={onDismissWithAnalytics}\n >\n <Text namespace={namespace} phrase='dismiss'/>\n </div>\n </div>\n </div>\n </div>\n <div className='position-absolute top-0 end-0 p-2 d-sm-inline d-none'>\n <IconButton\n svg={CloseSvg}\n onClick={onDismissWithAnalytics}\n />\n </div>\n </div>\n );\n}\n","import { SettingName } from './SettingName';\n\nexport type TutorialVideosTarget = 'cv' | 'live';\n\n// tutorial videos should be added here if they are meant to be embedded into the product\nexport enum TutorialVideoType {\n SearchAndDiscover = 'searchAndDiscover',\n Analytics = 'analytics',\n OpenClassroom = 'openClassroom',\n CreateClassroom = 'createClassroom',\n UploadVideo = 'uploadVideo',\n Playlist = 'playlist',\n ShareVideo = 'shareVideo'\n}\n\n// link to the domain options that manage video highlight visibility\nexport const dismissibleTutorialVideoTypeSettingsMapping: {[key in TutorialVideoType]: SettingName } = {\n [TutorialVideoType.Analytics]: SettingName.HasDismissedAnalyticsTutorial,\n [TutorialVideoType.OpenClassroom]: SettingName.HasDismissedOpenClassroomsTutorial,\n [TutorialVideoType.SearchAndDiscover]: SettingName.HasDismissedSearchAndDiscoverTutorial,\n [TutorialVideoType.CreateClassroom]: SettingName.HasDismissedClassroomsTutorial,\n [TutorialVideoType.Playlist]: SettingName.HasDismissedPlaylistsTutorial,\n [TutorialVideoType.ShareVideo]: SettingName.HasDismissedMySharesTutorial,\n [TutorialVideoType.UploadVideo]: SettingName.HasDismissedMyVideosTutorial\n};\n","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nexport const HardCoded = {\n OlympicsTopics: {\n // AU_PRIMARY\n ['18']: {\n id: 'Oq9WnjA',\n name: '2026 Milano Cortina Winter Olympic Games'\n },\n // AU_SECONDARY\n ['9']: {\n id: 'EoAYjoR',\n name: '2026 Milano Cortina Winter Olympic Games'\n }\n },\n CommonwealthGameTopics: {\n // SCT_PRIMARY\n ['12']: {\n id: 'AO0j90j',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // SCT_SECONDARY\n ['24']: {\n id: 'ZJxKkg1',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // ENG_PRIMARY\n ['16']: {\n id: 'agD7d73',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // ENG_SECONDARY\n ['47']: {\n id: 'm6mpl27',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // AU_PRIMARY\n ['18']: {\n id: '3bRp6eA',\n name: 'Commonwealth Games Glasgow 2026'\n },\n // AU SECONDARY\n ['9']: {\n id: '7mjAxYR',\n name: 'Commonwealth Games Glasgow 2026'\n }\n },\n PublicTranscriptVideoIds: [\n '78902422',\n '8139055',\n '32102562',\n '36875667',\n '3713657',\n '9900524',\n '48278572',\n '39424302',\n '3712691',\n '54504550',\n '23852726',\n '3713563',\n '3714027',\n '51281358',\n '58785149',\n '7322586',\n '3716774',\n '36554689',\n '54192890',\n '6689791',\n '10749459',\n '3712691',\n '81764158',\n '43772092',\n '43974358',\n '48091365',\n '6430651',\n '3713735',\n '54096131',\n '57977558',\n '78840166',\n '57738254',\n '51666370',\n '49858722'\n ],\n SpecialEvents: {\n dlL00b3: {\n id: 'dlL00b3',\n iconUrl: 'https://img.clickviewapp.com/v2/covers/PGbNp0'\n }\n },\n Classifications: {\n Twig: {\n EnglandSecondary: {\n HUB: 'yrg5vYN'\n },\n ScotlandSecondary: {\n HUB: 'Y69j14M'\n },\n InternationalSecondary: {\n HUB: 'MYM6GGM'\n },\n NewZealandSecondary: {\n HUB: 'agNmRd9'\n },\n CanadaMiddle: {\n HUB: '3brl1mY'\n },\n CanadaHigh: {\n HUB: 'kZJ9vkz'\n }\n },\n Tigtag: {\n EnglandPrimary: {\n HUB: 'D1218zx',\n TIGTAG_HUB: 'odldxPJ',\n TIGTAG_JUNIOR_HUB: 'nENExnL'\n },\n ScotlandPrimary: {\n HUB: 'JjAONbj',\n TIGTAG_HUB: '3bNAGl1',\n TIGTAG_JUNIOR_HUB: 'K6GKp43'\n },\n InternationalPrimary: {\n HUB: 'W1xqbk2',\n TIGTAG_HUB: 'ek3dJr8',\n TIGTAG_JUNIOR_HUB: 'PGyKzpn'\n },\n NewZealandPrimary: {\n HUB: 'odnkREE',\n TIGTAG_HUB: 'kZJ4RPa',\n TIGTAG_JUNIOR_HUB: 'zMg80DR'\n },\n CanadaElementary: {\n HUB: 'JjabmDE',\n TIGTAG_HUB: 'dq9Ewje',\n TIGTAG_JUNIOR_HUB: 'bmElWrb'\n },\n CanadaMiddle: {\n HUB: 'dq9EwyZ',\n TIGTAG_HUB: 'K6abxjP',\n TIGTAG_JUNIOR_HUB: '7mwxLdR'\n }\n }\n },\n // Production values. For testing in development, change these to staging preso values\n PresentationIds: {\n DEFAULT: 1,\n DEFAULT_CURRICULUM: 10,\n\n AU_PRIMARY: 18,\n AU_SECONDARY: 9,\n AU_TERTIARY: 81,\n US_ELEMENTARY: 13,\n US_MIDDLE: 14,\n US_HIGH: 15,\n CA_ELEMENTARY: 100,\n CA_MIDDLE: 101,\n CA_HIGH: 102,\n STREAMABLE_LEARNING: 68,\n ENG_PRIMARY: 16,\n ENG_SECONDARY: 47,\n SCT_PRIMARY: 12,\n SCT_SECONDARY: 24,\n UK_TERTIARY: 82,\n INT_PRIMARY: 19,\n INT_SECONDARY: 21,\n NZ_PRIMARY: 96,\n NZ_SECONDARY: 97\n },\n Libraries: {\n LICENCED_CONTENT_COLLECTION: '3700633',\n\n AU_PRIMARY: '10066675',\n AU_SECONDARY: '59401330',\n AU_TERTIARY: '5836680',\n US_ELEMENTARY: '38693445',\n US_MIDDLE: '39642303',\n US_HIGH: '38693435',\n CA_ELEMENTARY: '92862332',\n CA_MIDDLE: '92862334',\n CA_HIGH: '92862344',\n STREAMABLE_LEARNING: '78688869',\n ENG_PRIMARY: '35340580',\n ENG_SECONDARY: '59889793',\n SCT_PRIMARY: '33386791',\n SCT_SECONDARY: '59856733',\n UK_TERTIARY: '5815036',\n INT_PRIMARY: '3706428',\n INT_SECONDARY: '3706459',\n NZ_PRIMARY: '3705693',\n NZ_SECONDARY: '3705710',\n NZ_MTV: '26989676',\n\n TWIG: '88117784',\n TIGTAG: '80333935'\n },\n Rostering: {\n sources: {\n 0: { name: 'Unknown', iconUrl: '' },\n 1: { name: 'Clever', iconUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd' },\n 2: { name: 'ClassLink', iconUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5' },\n 3: { name: 'Google', iconUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL' },\n 4: { name: 'Microsoft', iconUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP' },\n 5: { name: 'Schoology', iconUrl: 'https://img.clickviewapp.com/v2/logos/kZNEyz' },\n 6: { name: 'PowerSchool', iconUrl: 'https://img.clickviewapp.com/v2/logos/m6aDmR' }\n }\n },\n Images: {\n Level_1: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dlM73E',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/WAe8MP',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/raRm7E',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/3kzeZ2'\n },\n Level_2: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/WAeKvP',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/9DAZJv',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/eKG2bq',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/xyn5eP'\n },\n Level_3: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dl1d0g',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/R0Pz7A',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/8LYZ9R',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/nKDyRj'\n },\n Level_4: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/vYJPP5',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/PGPLLP'\n },\n TOPIC_DEFAULT_BANNER: 'https://img.clickviewapp.com/v2/banners/yKvoG0',\n STREAMABLE_TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/q6gnOn',\n STREAMABLE_TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/age95g'\n },\n Onboarding: {\n Playlist: {\n COVER_FILE_ID: 'G149g3',\n BANNER_FILE_ID: 'bmPLkn'\n },\n LOADING_THUMBNAILS: [\n 'https://img.clickviewapp.com/v2/thumbnails/7m34ne',\n 'https://img.clickviewapp.com/v2/thumbnails/W1bjqJ',\n 'https://img.clickviewapp.com/v2/thumbnails/G14M1e',\n 'https://img.clickviewapp.com/v2/thumbnails/2mnv5x',\n 'https://img.clickviewapp.com/v2/thumbnails/xAEG91',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbyg',\n 'https://img.clickviewapp.com/v2/thumbnails/W13emP',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6j2vy',\n 'https://img.clickviewapp.com/v2/thumbnails/W1MJGE',\n 'https://img.clickviewapp.com/v2/thumbnails/OqDJqG',\n 'https://img.clickviewapp.com/v2/thumbnails/1My9Wn',\n 'https://img.clickviewapp.com/v2/thumbnails/G14MRe',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgKpl',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbp9',\n 'https://img.clickviewapp.com/v2/thumbnails/G147R1',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgMz5',\n 'https://img.clickviewapp.com/v2/thumbnails/G14Me5',\n 'https://img.clickviewapp.com/v2/thumbnails/5bEovE',\n 'https://img.clickviewapp.com/v2/thumbnails/odY4oZ',\n 'https://img.clickviewapp.com/v2/thumbnails/yrqwqD',\n 'https://img.clickviewapp.com/v2/thumbnails/K6pOmR',\n 'https://img.clickviewapp.com/v2/thumbnails/vYK3w4',\n 'https://img.clickviewapp.com/v2/thumbnails/agnD88',\n 'https://img.clickviewapp.com/v2/thumbnails/4rKmp7',\n 'https://img.clickviewapp.com/v2/thumbnails/0wM4r3',\n 'https://img.clickviewapp.com/v2/thumbnails/69A2jO',\n 'https://img.clickviewapp.com/v2/thumbnails/7m3Z3e',\n 'https://img.clickviewapp.com/v2/thumbnails/3bGL94',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6jwLo',\n 'https://img.clickviewapp.com/v2/thumbnails/1MyPby'\n ]\n },\n Tutorial: {\n cv: {\n staging: {\n [InstanceRegion.AU]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '92095406',\n SHARE: 'bwXYNM'\n }\n },\n production: {\n [InstanceRegion.AU]: {\n PLAYLIST: '106743306',\n SHARE: 'DYXNQP'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '106743114',\n SHARE: 'DvwPAL'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '106735465',\n SHARE: 'D6VOJX'\n }\n }\n },\n live: {\n staging: {\n [InstanceRegion.AU]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '92210048',\n SHARE: 'DXvWdB'\n }\n },\n production: {\n [InstanceRegion.AU]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n },\n [InstanceRegion.US]: {\n PLAYLIST: '107404226',\n SHARE: 'bnp6en'\n }\n }\n }\n },\n TutorialVideoHighlight: {\n analytics: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107356113',\n SHARE: 'DNYxnm'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107239339',\n SHARE: 'GmQgWQ'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107324974',\n SHARE: 'bAKL6d'\n }\n }\n },\n searchAndDiscover: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107310200',\n SHARE: 'Gp92A7'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107219457',\n SHARE: 'GMY10v'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107418074',\n SHARE: 'GgwWvY'\n }\n }\n },\n openClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302736',\n SHARE: 'Dkrvan'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106898400',\n SHARE: 'Da9YRX'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898583',\n SHARE: 'G2Vxrk'\n }\n }\n },\n createClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633076',\n SHARE: 'G2Vxvp'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107239329',\n SHARE: 'b9dp00'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107232174',\n SHARE: 'DYgRdV'\n }\n }\n },\n uploadVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302713',\n SHARE: 'byNpd8'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106826031',\n SHARE: 'GmQgXQ'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898590',\n SHARE: 'D6AgER'\n }\n }\n },\n playlist: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107357318',\n SHARE: 'DKYdz7'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107221344',\n SHARE: 'Gp92ay'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107221972',\n SHARE: 'GR9RxO'\n }\n }\n },\n shareVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302709',\n SHARE: 'bwgdNk'\n },\n [InstanceRegion.AU]: {\n VIDEO: '106826023',\n SHARE: 'DvwPYO'\n },\n [InstanceRegion.UK]: {\n VIDEO: '106898587',\n SHARE: 'bzr05K'\n }\n }\n },\n welcomeToClickView: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095344',\n SHARE: 'DaalVQ'\n },\n [InstanceRegion.AU]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n },\n [InstanceRegion.UK]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '106302715',\n SHARE: 'DEleZo'\n },\n [InstanceRegion.AU]: {\n VIDEO: '107148652',\n SHARE: 'GR9RZL'\n },\n [InstanceRegion.UK]: {\n VIDEO: '107162361',\n SHARE: 'G084Qg'\n }\n }\n },\n welcomeToClickViewLive: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '107493452',\n SHARE: 'bnp63m'\n }\n }\n }\n },\n UpsellVideo: {\n CLICKVIEW: 'https://static.clickview.com.au/video-banners/clickview-banner.mp4'\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { dismissibleTutorialVideoTypeSettingsMapping, TutorialVideoType } from 'libs/shared/enums/TutorialVideoType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes } from 'libs/shared/interfaces';\n\ninterface PlaylistIdsProps {\n PLAYLIST: string;\n SHARE: string;\n}\n\ninterface VideoIdsProps {\n VIDEO: string;\n SHARE: string;\n}\n\nexport interface TutorialVideoHighlightContext {\n shouldShowVideo: boolean;\n tutorialVideo: Flight.Response<VideoTypes>;\n videoIds: VideoIdsProps;\n playlistIds: PlaylistIdsProps;\n hasDismissedVideoHighlight?: boolean;\n dismissVideoHighlight?: () => Promise<void>;\n}\n\nexport function useTutorialVideoHighlight(\n type: TutorialVideoType,\n requireDismissal: boolean = true\n): TutorialVideoHighlightContext {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const ids = config.data?.liteUrl.includes('staging') ?\n HardCoded.TutorialVideoHighlight[type].staging :\n HardCoded.TutorialVideoHighlight[type].production;\n const videoIds = ids[instanceRegion as keyof typeof ids];\n\n const playlistIds = (config.data?.liteUrl.includes('staging') ?\n HardCoded.Tutorial.cv.staging[instanceRegion] :\n HardCoded.Tutorial.cv.production[instanceRegion]) || { PLAYLIST: '', SHARE: '' };\n\n const { hasPermissions, isLoaded: isPermissionLoaded } = usePermissions();\n\n // if the user is not signed in or not a student, this should fetch the video\n const shouldShowVideo =\n instanceRegion && videoIds !== undefined &&\n isPermissionLoaded &&\n !hasPermissions(PermissionName.StudentExperience);\n\n const tutorialVideo = Flight.useBasicFetch<VideoTypes>(\n shouldShowVideo &&\n VideoRequests.sharedVideo(videoIds.VIDEO, videoIds.SHARE)\n );\n\n const settings = useSettings(LocationContext.VideoHighlight);\n\n if (!requireDismissal || !Object.keys(dismissibleTutorialVideoTypeSettingsMapping).includes(type)) {\n return {\n shouldShowVideo,\n tutorialVideo,\n videoIds,\n playlistIds\n };\n }\n\n const tutorialSettingsMap = {\n [TutorialVideoType.Analytics]: settings.hasDismissedAnalyticsTutorial,\n [TutorialVideoType.OpenClassroom]: settings.hasDismissedOpenClassroomsTutorial,\n [TutorialVideoType.SearchAndDiscover]: settings.hasDismissedSearchAndDiscoverTutorial,\n [TutorialVideoType.CreateClassroom]: settings.hasDismissedClassroomsTutorial,\n [TutorialVideoType.Playlist]: settings.hasDismissedPlaylistsTutorial,\n [TutorialVideoType.ShareVideo]: settings.hasDismissedMySharesTutorial,\n [TutorialVideoType.UploadVideo]: settings.hasDismissedMyVideosTutorial\n };\n \n const settingName = dismissibleTutorialVideoTypeSettingsMapping[type as TutorialVideoType];\n\n const dismissVideoHighlight = async () => {\n if (!Object.keys(tutorialSettingsMap).includes(type) || !settingName) return;\n await settings.updateUserSettingAsync({\n name: settingName,\n value: true,\n kind: SettingKind.Setting\n });\n };\n\n const hasDismissedVideoHighlight = tutorialSettingsMap[type as keyof typeof tutorialSettingsMap] ?? null;\n\n return {\n shouldShowVideo,\n tutorialVideo,\n videoIds,\n playlistIds,\n hasDismissedVideoHighlight,\n dismissVideoHighlight\n };\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nexport const VideoRequests = {\n video(\n id: string,\n shareId?: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: 'thumbnail',\n shareId\n }),\n key: `video:${id}`\n };\n }\n};\n","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopSearch } from 'shared/interfaces';\n\nexport const SearchRequests = {\n topSearches(\n filter: AnalyticsRequestFilter,\n success?: (data: TopSearch[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/search/top', filter),\n key: getAnalyticsRequestKey('top:searches', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topSearchesCardEmptyStateV2';\n\nexport function TopSearchesCardEmptyStateV2() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTopSearchesCardV2() {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-50'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-75'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { SearchRequests } from 'shared/flight-requests/SearchRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopSearch } from 'shared/interfaces';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\n\nimport { TopSearchesCardEmptyStateV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2';\nimport { PartialTopSearchesCardV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2';\n\nconst namespace = 'reportsDashboard.topSearchesCardV2';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopSearchesCardV2View() {\n const requestFilter = useGetRequestFilter('search');\n\n const searches = Flight.useBasicFetch<TopSearch[]>(SearchRequests.topSearches(requestFilter));\n\n const getSearchUrl = useGetExternalUrl(ExternalRouteHelper.getPrimarySearchUrl);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {searches.data ? (\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='topSearches' /></h2>\n\n {searches.data.length ?\n <>\n <Scrollbars className='position-relative'>\n <ol className='position-absolute w-100 ps-4'>\n {searches.data.map((s, idx) => {\n return (\n <li\n key={idx}\n className='mb-3'\n >\n <a\n href={getSearchUrl(s.query)}\n target='_blank'\n className='position-relative d-flex justify-content-between align-items-center pe-5'\n >\n <span>\n {s.query}\n </span>\n <div className='position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3'>\n <SvgContainer svg={NewWindowSvg} />\n </div>\n </a>\n </li>\n );\n })}\n </ol>\n </Scrollbars>\n </> :\n <TopSearchesCardEmptyStateV2 />\n }\n </>\n ) : <PartialTopSearchesCardV2 />}\n </div>\n );\n}\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topStreamsCardEmptyState';\n\nexport function TopStreamsCardEmptyState() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}\n","import React from 'react';\n\nexport function PartialTopStreamsCard(): JSX.Element {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='position-relative'>\n <ul className='list-unstyled position-absolute top-0 start-0 w-100 h-100'>\n {Array(10).fill(null).map((_, i) => (\n <li key={i} className='mb-3'>\n <div className='row g-0'>\n <div className='col-5'>\n <div className='ratio ratio-16x9 rounded partial-loading-background' />\n </div>\n <div className='col-7 d-flex align-items-center'>\n <div className='mx-2 w-100'>\n <div className='w-100 partial-loading-background mb-1'> </div>\n <div className='w-75 partial-loading-background'> </div>\n </div>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopVideoV2 } from 'shared/interfaces';\nimport { getSchoolVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { TopStreamsCardEmptyState } from 'apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState';\nimport { PartialTopStreamsCard } from 'apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard';\n\nconst namespace = 'reportsDashboard.topStreamsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 10;\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopStreamsCardView() {\n const filterQueryParams = useGetAppLinkFilterParams();\n const requestFilter = useGetRequestFilter('video-views');\n\n const topStreams = Flight.useBasicFetch<TopVideoV2[]>(VideoViewsV2Requests.topStreams(LIMIT, requestFilter));\n\n const videos = useBatchFetch<VideoTypes>(\n topStreams.data?.map(v => v.objectId) ?? [],\n VideoRequests.videos\n );\n\n const hasLoaded = (\n topStreams.hasCompleted &&\n !videos.isFetching\n );\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3'>\n {hasLoaded ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{getPhrase('topVideos')}</h2>\n <AppLink\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n </div>\n\n {videos.itemsArr?.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <ul className='list-unstyled'>\n {topStreams.data.map(stream => {\n const video = videos.items[stream.objectId];\n\n if (!video)\n return;\n\n return (\n <li key={video.id} className='mb-3'>\n <AppLink appLink={getSchoolVideoAppLink(video, filterQueryParams)}>\n <div className='row g-0'>\n <div className='col-5'>\n <VideoThumbnail\n video={video}\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n size='sm'\n />\n </div>\n <div className='col-7'>\n <div className='d-flex flex-column mx-2'>\n {VideoHelper.isVideoType(video) && (\n <VideoSubText\n type='series'\n video={video}\n analyticsOptions={null}\n className='d-inline clamp-1'\n />\n )}\n <span className='clamp-2 fw-medium'>\n {video.name}\n </span>\n <Text namespace={namespace} phrase='views' options={{ smartCount: stream.combinedCount }} />\n </div>\n </div>\n </div>\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n </Scrollbars> :\n <TopStreamsCardEmptyState />\n }\n </> :\n <PartialTopStreamsCard />\n }\n </div>\n );\n}\n",".cogIcon {\n cursor: pointer;\n color: $gray-900;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { CogSvg } from 'libs/shared/images/svg/objects/CogSvg';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useClassroomViewsAlert } from 'shared/hooks/useClassroomViewsAlert';\n\nimport styles from './classroom-views-alert.module.scss';\n\nconst namespace = 'reportsDashboard.classroomViewsAlert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomViewsAlertProps {\n hasClassroomViews: boolean;\n}\n\nexport function ClassroomViewsAlert(props: ClassroomViewsAlertProps): JSX.Element | null {\n const { alertVariant, dismissAlert } = useClassroomViewsAlert(props.hasClassroomViews);\n\n if (alertVariant === 'none')\n return null;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2'>\n <div className='d-flex align-items-center gap-1 ms-1'>\n {alertVariant === 'info' ? <InfoBannerContent /> : <ReminderBannerContent />}\n </div>\n <IconButton svg={CloseSvg} className='text-blue' onClick={dismissAlert} />\n </div>\n );\n}\n\nfunction SettingsCog(): JSX.Element {\n return (\n <IconButton\n customSize\n svg={CogSvg}\n svgSize={SvgContainerSize.Standard}\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.CLASSROOM_VIEWS_POPUP }}\n className={styles.cogIcon}\n tooltip={getPhrase('settingsTitle')}\n tooltipTrigger={['hover']}\n ariaLabel={getPhrase('settingsTitle')}\n />\n );\n}\n\nfunction InfoBannerContent(): JSX.Element {\n return (\n <>\n <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\n <SettingsCog />\n <Text namespace={namespace} phrase='description' />\n <a className='text-info' href={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomViews)} target='_blank' rel='noopener noreferrer'>\n <Text namespace={namespace} phrase='link' />\n </a>\n </>\n );\n}\n\nfunction ReminderBannerContent(): JSX.Element {\n return (\n <>\n <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\n <SettingsCog />\n <Text namespace={namespace} phrase='reminderDescription' />\n <AppLink appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.CLASSROOM_VIEWS_POPUP }} className='text-info hover-text-underline'>\n <Text namespace={namespace} phrase='reminderLink' />\n </AppLink>\n </>\n );\n}\n",":local {\n .topRow {\n min-height: 25rem;\n }\n\n .barChart {\n flex: 1 0;\n min-width: 0;\n }\n\n .videoViews {\n flex: 2 0;\n min-width: 0;\n }\n\n .bottomRow {\n min-height: 27rem;\n }\n\n .bottomColumn {\n flex: 1 0;\n min-width: 0;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { VideoHighlight } from 'libs/shared/components/video-highlight/VideoHighlight';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { TutorialVideoType } from 'libs/shared/enums/TutorialVideoType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTutorialVideoHighlight } from 'libs/shared/hooks/useTutorialVideoHighlight';\nimport { Config } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\n\nimport { TopSearchesCardV2View } from 'apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View';\nimport { TopStreamsCardView } from 'apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView';\n\nimport { ClassroomViewsAlert } from './components/classroom-views-alert/ClassroomViewsAlert';\n\nimport styles from './school-analytics-dashboard.module.scss';\n\nconst TOP_CLASSIFICATIONS_LIMIT = 10;\n\nconst namespace = 'reportsDashboard.schoolAnalyticsDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolAnalyticsDashboardView(): JSX.Element {\n const isTertiary = useIsTertiary();\n const { hasStudentReach } =\n useSettings(LocationContext.VideoHighlight);\n\n const header = isTertiary ? getPhrase('tertiaryDashboard') : getPhrase('dashboard');\n const { shouldShowVideo, videoIds, playlistIds, hasDismissedVideoHighlight, dismissVideoHighlight } =\n useTutorialVideoHighlight(TutorialVideoType.Analytics);\n\n const tutorialVideo = Flight.useBasicFetch(\n shouldShowVideo &&\n VideoRequests.video(videoIds.VIDEO, videoIds.SHARE)\n );\n const getObjectUrl = useGetExternalUrl(ExternalRouteHelper.getPrimaryObjectUrl);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const playlistUrl = ExternalRouteHelper.getSharePlaylistUrl({\n id: ProductId.Primary,\n order: 0,\n name: '',\n url: config.data?.liteUrl,\n imageUrl: ''\n }, playlistIds?.SHARE);\n\n useSetPageMetadata({ title: header });\n useSetHeaderTitle(header);\n\n return (\n <div className='d-flex flex-column gap-3'>\n <ClassroomViewsAlert hasClassroomViews={hasStudentReach} />\n {tutorialVideo?.data && !hasDismissedVideoHighlight &&\n <VideoHighlight\n video={tutorialVideo?.data}\n subtitle={getPhrase('videoHighlightSubtitle')}\n description={getPhrase('videoHighlightDescription')}\n bgColorClassName='bg-light-blue'\n supportArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomAnalytics)}\n onDismiss={dismissVideoHighlight}\n redirectUrl={getObjectUrl(tutorialVideo?.data)}\n redirectPlaylistUrl={playlistUrl}\n locationContext={LocationContext.VideoHighlight}\n />\n }\n <div className={`d-flex gap-3 ${styles.topRow}`}>\n <div className={styles.barChart}>\n <StreamsBarChartCardView\n type='year_group'\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n />\n </div>\n <div className={styles.videoViews}>\n <StreamsChartCardView type='user_type' />\n </div>\n </div>\n <div className={`d-flex gap-3 ${styles.bottomRow}`}>\n <div className={styles.bottomColumn}>\n <TopStreamsCardView />\n </div>\n <div className={styles.bottomColumn}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('subjects')}\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.bottomColumn}>\n <TopSearchesCardV2View />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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ACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACD,KAAM,CACJ,QAAS,EACN,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,WACV,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACF,CACD,uBAAwB,CACtB,UAAW,CACT,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,kBAAmB,CACjB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,cAAe,CACb,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,gBAAiB,CACf,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,YAAa,CACX,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,SAAU,CACR,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,WAAY,CACV,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,mBAAoB,CAClB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,EACA,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,uBAAwB,CACtB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACF,CACD,YAAa,CACX,UAAW,qEACZ,CACF,CC9jBD,SAAgB,GACd,EACA,EAA4B,GACG,CAE/B,IAAM,EADc,EAAkC,GAAa,aAAa,CAAC,CAC9C,MAAM,eACnC,EAAS,EAA6B,EAAe,QAAQ,CAAC,CAK9D,GAHM,EAAO,MAAM,QAAQ,SAAS,UAAU,CAClD,EAAU,uBAAuB,GAAM,QACvC,EAAU,uBAAuB,GAAM,YACpB,GAEf,GAAe,EAAO,MAAM,QAAQ,SAAS,UAAU,CAC3D,EAAU,SAAS,GAAG,QAAQ,GAC9B,EAAU,SAAS,GAAG,WAAW,KAAoB,CAAE,SAAU,GAAI,MAAO,GAAI,CAE5E,CAAE,iBAAgB,SAAU,GAAuB,IAAgB,CAGnE,EACJ,GAAkB,IAAa,IAAA,IAC/B,GACA,CAAC,EAAe,GAAe,kBAAkB,CAE7C,EAAgB,EACpB,GACA,EAAc,YAAY,EAAS,MAAO,EAAS,MAAM,CAC1D,CAEK,EAAW,EAAY,EAAgB,eAAe,CAE5D,GAAI,CAAC,GAAoB,CAAC,OAAO,KAAK,EAA4C,CAAC,SAAS,EAAK,CAC/F,MAAO,CACL,kBACA,gBACA,WACA,cACD,CAGH,IAAM,EAAsB,EACzB,EAAkB,WAAY,EAAS,+BACvC,EAAkB,eAAgB,EAAS,oCAC3C,EAAkB,mBAAoB,EAAS,uCAC/C,EAAkB,iBAAkB,EAAS,gCAC7C,EAAkB,UAAW,EAAS,+BACtC,EAAkB,YAAa,EAAS,8BACxC,EAAkB,aAAc,EAAS,6BAC3C,CAEK,EAAc,EAA4C,GAahE,MAAO,CACL,kBACA,gBACA,WACA,cACA,2BAPiC,EAAoB,IAA6C,KAQlG,sBAjB4B,SAAY,CACpC,CAAC,OAAO,KAAK,EAAoB,CAAC,SAAS,EAAK,EAAI,CAAC,GACzD,MAAM,EAAS,uBAAuB,CACpC,KAAM,EACN,MAAO,GACP,KAAM,GAAY,QACnB,CAAC,EAYH,CCtGH,IAAa,GAAgB,CAC3B,MACE,EACA,EACgB,CAChB,MAAO,CACL,IAAK,EAAU,WAAW,wBAAwB,IAAM,CACtD,MAAO,YACP,UACD,CAAC,CACF,IAAK,SAAS,IACf,EAEJ,QCPD,GAAA,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAOI,MAAA,6HCZE,GAAY,+CAElB,SAAgB,IAA8B,CAC5C,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+EACb,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,GAAW,OAAO,UAAY,CAAA,CAC3C,CAAA,CCRV,SAAgB,IAA2B,CACzC,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAElE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iDAAwC,OAAY,CAAA,EACnE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAClE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iDAAwC,OAAY,CAAA,CAClE,CAAA,CAAA,CCCP,IAAM,GAAY,qCAGlB,SAAgB,IAAwB,CACtC,IAAM,EAAgB,EAAoB,SAAS,CAE7C,EAAW,EAAkC,GAAe,YAAY,EAAc,CAAC,CAEvF,EAAe,EAAkB,EAAoB,oBAAoB,CAE/E,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+EACZ,EAAS,MACR,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,oBAAU,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,GAAW,OAAO,cAAgB,CAAA,CAAK,CAAA,CAE/E,EAAS,KAAK,QACb,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UACE,EAAA,EAAA,KAAC,EAAA,WAAD,CAAY,UAAU,8BACpB,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,wCACX,EAAS,KAAK,KAAK,EAAG,KAEnB,EAAA,EAAA,KAAC,KAAD,CAEE,UAAU,iBAEV,EAAA,EAAA,MAAC,IAAD,CACE,KAAM,EAAa,EAAE,MAAM,CAC3B,OAAO,SACP,UAAU,oFAHZ,EAKE,EAAA,EAAA,KAAC,OAAD,CAAA,SACG,EAAE,MACE,CAAA,EACP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8EACb,EAAA,EAAA,KAAC,GAAD,CAAc,IAAK,EAAgB,CAAA,CAC/B,CAAA,CACJ,GACD,CAfE,EAeF,CAEP,CACC,CAAA,CACM,CAAA,CACZ,CAAA,EACH,EAAA,EAAA,KAAC,GAAD,EAA+B,CAAA,CAEhC,CAAA,CAAA,EACD,EAAA,EAAA,KAAC,GAAD,EAA4B,CAAA,CAC5B,CAAA,CC9DV,IAAM,GAAY,4CAElB,SAAgB,IAA2B,CACzC,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+EACb,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,GAAW,OAAO,UAAY,CAAA,CAC3C,CAAA,CCRV,SAAgB,IAAqC,CACnD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDAAuC,OAAY,CAAA,EAElE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8BACb,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,qEACX,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,EAAG,KAC5B,EAAA,EAAA,KAAC,KAAD,CAAY,UAAU,iBACpB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sDAAwD,CAAA,CACnE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4CACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iDAAwC,OAAY,CAAA,EACnE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,2CAAkC,OAAY,CAAA,CACzD,GACF,CAAA,CACF,GACH,CAZI,EAYJ,CACL,CACC,CAAA,CACD,CAAA,CACL,CAAA,CAAA,CCCP,IAAM,EAAY,kCACZ,GAAY,EAAgB,iBAAiB,EAAU,CAEvD,EAAQ,GAGd,SAAgB,IAAqB,CACnC,IAAM,EAAoB,IAA2B,CAC/C,EAAgB,EAAoB,cAAc,CAElD,EAAa,EAAmC,GAAqB,WAAW,EAAO,EAAc,CAAC,CAEtG,EAAS,EACb,EAAW,MAAM,IAAI,GAAK,EAAE,SAAS,EAAI,EAAE,CAC3C,EAAc,OACf,CAOD,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,+EALf,EAAW,cACX,CAAC,EAAO,YAMJ,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0CAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,mBAAW,GAAU,YAAY,CAAM,CAAA,EACrD,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,CAAE,YAAa,EAAY,OAAQ,OAAQ,EAAQ,OAAO,WAAY,CAC/E,UAAU,sBAEV,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,SAAW,CAAA,CACtC,CAAA,CACN,GAEL,EAAO,UAAU,QAChB,EAAA,EAAA,KAAC,EAAA,WAAD,CAAY,UAAU,8BACpB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oCACb,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yBACX,EAAW,KAAK,IAAI,GAAU,CAC7B,IAAM,EAAQ,EAAO,MAAM,EAAO,UAE7B,KAGL,OACE,EAAA,EAAA,KAAC,KAAD,CAAmB,UAAU,iBAC3B,EAAA,EAAA,KAAC,EAAD,CAAS,QAAS,GAAsB,EAAO,EAAkB,WAC/D,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,EAAD,CACS,QACP,aAAc,CAAE,KAAM,EAAU,MAAO,CACvC,aAAc,GAAsB,YACpC,KAAK,WACL,SAAA,GACA,KAAK,KACL,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mCAAf,CACG,GAAY,YAAY,EAAM,GAC7B,EAAA,EAAA,KAAC,GAAD,CACE,KAAK,SACE,QACP,iBAAkB,KAClB,UAAU,mBACV,CAAA,EAEJ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,6BACb,EAAM,KACF,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,QAAQ,QAAS,CAAE,WAAY,EAAO,cAAe,CAAI,CAAA,CACxF,GACF,CAAA,CACF,GACE,CAAA,CACP,CA/BI,EAAM,GA+BV,EAEP,CACC,CAAA,CACD,CAAA,CACK,CAAA,EACb,EAAA,EAAA,KAAC,GAAD,EAA4B,CAAA,CAE7B,CAAA,CAAA,EACH,EAAA,EAAA,KAAC,GAAD,EAAyB,CAAA,CAEvB,CAAA,qCEjGJ,EAAY,uCACZ,EAAY,EAAgB,iBAAiB,EAAU,CAM7D,SAAgB,GAAoB,EAAqD,CACvF,GAAM,CAAE,eAAc,gBAAiB,GAAuB,EAAM,kBAAkB,CAKtF,OAHI,IAAiB,OACZ,MAGP,EAAA,EAAA,MAAC,MAAD,CAAK,KAAK,QAAQ,UAAU,+GAA5B,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDACZ,IAAiB,QAAS,EAAA,EAAA,KAAC,GAAD,EAAqB,CAAA,EAAG,EAAA,EAAA,KAAC,GAAD,EAAyB,CAAA,CACxE,CAAA,EACN,EAAA,EAAA,KAAC,EAAD,CAAY,IAAK,EAAU,UAAU,YAAY,QAAS,EAAgB,CAAA,CACtE,GAIV,SAAS,GAA2B,CAClC,OACE,EAAA,EAAA,KAAC,EAAD,CACE,WAAA,GACA,IAAK,GACL,QAAS,EAAiB,SAC1B,QAAS,CAAE,YAAa,EAAY,QAAS,OAAQ,EAAQ,QAAQ,sBAAuB,CAC5F,UAAW,GAAO,QAClB,QAAS,EAAU,gBAAgB,CACnC,eAAgB,CAAC,QAAQ,CACzB,UAAW,EAAU,gBAAgB,CACrC,CAAA,CAIN,SAAS,IAAiC,CACxC,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBACd,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,SAAW,CAAA,CACzC,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,EAAe,CAAA,EACf,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,cAAgB,CAAA,EACnD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,YAAY,KAAM,EAAc,eAAe,EAAmB,eAAe,CAAE,OAAO,SAAS,IAAI,gCAClH,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,OAAS,CAAA,CAC1C,CAAA,CACH,CAAA,CAAA,CAIP,SAAS,IAAqC,CAC5C,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oBACd,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,SAAW,CAAA,CACzC,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,EAAe,CAAA,EACf,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,sBAAwB,CAAA,EAC3D,EAAA,EAAA,KAAC,EAAD,CAAS,QAAS,CAAE,YAAa,EAAY,QAAS,OAAQ,EAAQ,QAAQ,sBAAuB,CAAE,UAAU,2CAC/G,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,eAAiB,CAAA,CAC5C,CAAA,CACT,CAAA,CAAA,sKE9CD,GAA4B,GAG5B,EAAY,EAAgB,iBADhB,4CAC2C,CAE7D,SAAgB,IAA4C,CAC1D,IAAM,EAAa,IAAe,CAC5B,CAAE,mBACN,EAAY,EAAgB,eAAe,CAEvC,EAAsB,EAAb,EAAuB,oBAAiC,YAAY,CAC7E,CAAE,kBAAiB,WAAU,cAAa,6BAA4B,yBAC1E,GAA0B,EAAkB,UAAU,CAElD,EAAgB,EACpB,GACA,GAAc,MAAM,EAAS,MAAO,EAAS,MAAM,CACpD,CACK,EAAe,EAAkB,EAAoB,oBAAoB,CAEzE,EAAS,EAA6B,EAAe,QAAQ,CAAC,CAC9D,EAAc,EAAoB,oBAAoB,CAC1D,GAAI,GAAU,QACd,MAAO,EACP,KAAM,GACN,IAAK,EAAO,MAAM,QAClB,SAAU,GACX,CAAE,GAAa,MAAM,CAKtB,OAHA,GAAmB,CAAE,MAAO,EAAQ,CAAC,CACrC,GAAkB,EAAO,EAGvB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oCAAf,EACE,EAAA,EAAA,KAAC,GAAD,CAAqB,kBAAmB,EAAmB,CAAA,CAC1D,GAAe,MAAQ,CAAC,IACvB,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,GAAe,KACtB,SAAU,EAAU,yBAAyB,CAC7C,YAAa,EAAU,4BAA4B,CACnD,iBAAiB,gBACjB,eAAgB,EAAc,eAAe,EAAmB,mBAAmB,CACnF,UAAW,EACX,YAAa,EAAa,GAAe,KAAK,CAC9C,oBAAqB,EACrB,gBAAiB,EAAgB,eACjC,CAAA,EAEJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,gBAAgB,EAAO,kBAAvC,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,mBACrB,EAAA,EAAA,KAAC,GAAD,CACE,KAAK,aACL,QAAS,CAAE,YAAa,EAAY,OAAQ,OAAQ,EAAQ,OAAO,KAAM,CACzE,YAAa,EAAU,cAAA,CACvB,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,qBACrB,EAAA,EAAA,KAAC,GAAD,CAAsB,KAAK,YAAc,CAAA,CACrC,CAAA,CAAA,IAER,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,gBAAgB,EAAO,qBAAvC,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,uBACrB,EAAA,EAAA,KAAC,GAAD,EAAsB,CAAA,CAClB,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,uBACrB,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAmB,UACzB,QAAS,EAAU,WAAW,CAC9B,QAAS,CAAE,YAAa,EAAY,OAAQ,OAAQ,EAAQ,OAAO,KAAM,CACzE,YAAa,EAAU,cAAc,CACrC,eAAgB,EAAU,gBAAgB,CAC1C,MAAO,GACP,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,uBACrB,EAAA,EAAA,KAAC,GAAD,EAAyB,CAAA,CACrB,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{P as e,en as t,st as n}from"./Db8SRTe2.chunk.js";import{m as r,n as i}from"./ClFr_vFf.chunk.js";import{r as a}from"./r5AG2PFt.chunk.js";import{t as o}from"./BpIQdoUJ.chunk.js";import{n as s,r as c,t as l}from"./Drne0tRP.chunk.js";import{t as u}from"./Clx0FzVV.chunk.js";import{r as d}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{P as e,en as t,st as n}from"./Db8SRTe2.chunk.js";import{m as r,n as i}from"./ClFr_vFf.chunk.js";import{r as a}from"./r5AG2PFt.chunk.js";import{t as o}from"./BpIQdoUJ.chunk.js";import{n as s,r as c,t as l}from"./Drne0tRP.chunk.js";import{t as u}from"./Clx0FzVV.chunk.js";import{r as d}from"./app-D4CCj7F-.js";import{t as f}from"./DrYB4Ro-2.chunk.js";import{a as p,d as m,i as h,l as g,o as _,u as v}from"./DYn78_772.chunk.js";n();var y=e(),b={chart:{spacing:[20,0,4,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null},endOnTick:!0,tickAmount:10},xAxis:{lineWidth:0,labels:{style:{...g,textOverflow:`none`,wordBreak:`break-word`}}},legend:{enabled:!1},plotOptions:{column:{borderRadius:4,dataLabels:{enabled:!0,style:g,inside:!1,crop:!1,overflow:`allow`},groupPadding:0,minPointLength:8}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}}}]},x=(e,t,n)=>({...b,xAxis:{...b.xAxis,categories:e,labels:{...b.xAxis.labels,useHTML:!0,formatter:function(){return m(this.value,n)}}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function S(e){return(0,y.jsx)(v,{options:x(e.data.map(e=>e.name),e.data,e.labelAnnotations),annotations:e.labelAnnotations,className:`h-100`,containerProps:{className:`h-100`}})}var C={image:`_image_1a110_1`},w=o.encloseNamespace(`reportsShared.totalViewsByRoleCardEmptyState`);function T(){return(0,y.jsxs)(u,{className:`flex-grow-1 justify-content-center`,children:[(0,y.jsx)(u.Image,{src:l.EmptyStates.Shared.Ticket,className:C.image}),(0,y.jsx)(u.Heading,{className:`h6`,children:w(`heading`)}),(0,y.jsx)(u.Info,{className:`w-100`,children:w(`description`)})]})}var E=`reportsShared.videoViewsByRoleCard`,D=o.encloseNamespace(E);function O(e){let n=d(`video-views`),o=r(e.videoId?f.videoAggregation(e.videoId,`user_type`,n):f.aggregation(`user_type`,n));function l(e){return e?e.reduce((e,t)=>{let n=[a.System,`255`].includes(t.name)?null:t.name,r=e.find(e=>e.name===n);return r?r.count+=t.count:e.push({name:n,count:t.count}),e},[]).map(e=>({name:p(e.name),y:e.count,color:h(e.name)})).sort((e,t)=>_(e.name,t.name)):null}let u=l(o.data);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:u?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:(0,y.jsx)(i,{namespace:E,phrase:`videoViews`})}),u.length?(0,y.jsx)(`div`,{className:`flex-grow-1 position-relative`,children:(0,y.jsx)(`div`,{className:`position-absolute w-100 h-100`,children:(0,y.jsx)(S,{data:u,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:c.DEFAULT,action:s.Default.CLASSROOM_VIEWS_POPUP})},tooltip:D(`classroomViewsSettings`)}}})})}):(0,y.jsx)(T,{})]}):(0,y.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{S as n,O as t};
|
|
2
|
+
//# sourceMappingURL=CXlTLbis.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BnzWs-z6.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </div> :\n <TotalViewsByRoleCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CXlTLbis.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </div> :\n <TotalViewsByRoleCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{F as e,N as t,P as n,Q as r,R as i,U as a,Wt as o,Yt as s,ct as c,qn as l,st as u,z as d}from"./Db8SRTe2.chunk.js";import{i as f,o as p,r as m,v as h,x as g,y as _}from"./B4CGL9yn.chunk.js";import{n as v}from"./ClFr_vFf.chunk.js";import{t as y}from"./W6_Zq9he.chunk.js";import{t as b}from"./DQnWJjP7.chunk.js";import{n as x}from"./r5AG2PFt.chunk.js";import{a as S,i as C,o as ee}from"./vy77iKWZ.chunk.js";import{t as w}from"./BpIQdoUJ.chunk.js";import{n as te,t as ne}from"./C9VmjKe5.chunk.js";import{t as re}from"./BXDAsWZv.chunk.js";import{b as ie,d as T,f as ae,m as oe,s as se,st as ce}from"./app-
|
|
1
|
+
import{F as e,N as t,P as n,Q as r,R as i,U as a,Wt as o,Yt as s,ct as c,qn as l,st as u,z as d}from"./Db8SRTe2.chunk.js";import{i as f,o as p,r as m,v as h,x as g,y as _}from"./B4CGL9yn.chunk.js";import{n as v}from"./ClFr_vFf.chunk.js";import{t as y}from"./W6_Zq9he.chunk.js";import{t as b}from"./DQnWJjP7.chunk.js";import{n as x}from"./r5AG2PFt.chunk.js";import{a as S,i as C,o as ee}from"./vy77iKWZ.chunk.js";import{t as w}from"./BpIQdoUJ.chunk.js";import{n as te,t as ne}from"./C9VmjKe5.chunk.js";import{t as re}from"./BXDAsWZv.chunk.js";import{b as ie,d as T,f as ae,m as oe,s as se,st as ce}from"./app-D4CCj7F-.js";import{t as le}from"./C04VdpOQ.chunk.js";import{n as E,r as ue,t as D}from"./dMkwhWzI2.chunk.js";import{t as de}from"./C2smR6gI2.chunk.js";import{n as fe,t as pe}from"./C8AYehpj2.chunk.js";import{a as O,i as me,n as he,r as ge,t as _e}from"./CbJtjZDt2.chunk.js";import{a as ve,i as ye,o as be,r as xe}from"./BBRRG8Mn2.chunk.js";var Se={subText:`_subText_5u663_1`,sm:`_sm_5u663_4`},k=l(u()),A=n();function Ce(e){let t=`text-uppercase text-truncate mb-0 ${Se.subText} ${e.className}`;return e.appLink?(0,A.jsx)(h,{className:t,appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,title:e.title,ariaLabel:e.ariaLabel,children:e.children}):(0,A.jsx)(`div`,{className:t,title:e.title,"aria-label":e.ariaLabel,children:e.children})}function we(e){return(0,A.jsx)(`svg`,{...e,children:(0,A.jsx)(`path`,{fill:`currentColor`,d:`M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805m.812-10.7.001-.004.007-.022.03-.097a5.83 5.83 0 0 1 .744-1.463c.565-.798 1.428-1.532 2.72-1.532 2.03 0 3.516 1.72 3.516 3.866 0 1.445-.713 2.686-2.089 4.119-.944.984-2.151 2.01-3.579 3.224-.575.49-1.187 1.01-1.832 1.57-.645-.56-1.257-1.08-1.832-1.57-1.428-1.214-2.635-2.24-3.58-3.224C5.214 12.11 4.5 10.869 4.5 9.423c0-2.146 1.487-3.865 3.517-3.865 1.29 0 2.154.734 2.719 1.532a5.8 5.8 0 0 1 .774 1.56l.007.022v.004a.5.5 0 0 0 .965 0`})})}function Te(e){return(0,A.jsx)(`svg`,{...e,children:(0,A.jsx)(`path`,{fill:`currentColor`,fillOpacity:.9,d:`M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805`})})}var j={isFavouritedByCurrentUser(e){return e?.favouritedBy?.data.length===1},isFavouritedByUser(e,t){return!!y.findWhere(e?.favouritedBy?.data,{id:t?.id})},updateVideoState(e,t,n){return{id:e.id,favouritedBy:{data:n?[{id:t.id}]:[],pagination:{limit:25,cursors:{next:``,previous:``}}}}},showFavouriteButton(e,t){return T.getCanBeConsumed(e)?.canConsume?!!(t||ce.isTabletOrMobile()||j.isFavouritedByCurrentUser(e)):!1}},M={favourited:`_favourited_19h9u_1`,favouriteButton:`_favouriteButton_19h9u_1`,heart:`_heart_19h9u_5`,heartOutline:`_heartOutline_19h9u_16`},Ee=w.encloseNamespace(`shared.favouriteButton`);function De(e){let t=de(),n=j.isFavouritedByCurrentUser(e.video),[r,i]=k.useState(n);k.useEffect(()=>{i(n)},[n]);let a=`d-flex align-items-center justify-content-center cursor-pointer ${M.favouriteButton} ${r?M.favourited:``}`;e.className&&(a+=` ${e.className}`);function o(){let n=!r;function a(){function r(){return T.isClip(e.video)?n?`favouriteClipError`:`unfavouriteClipError`:T.isInteractive(e.video)?n?`favouriteInteractiveError`:`unfavouriteInteractiveError`:n?`favouriteVideoError`:`unfavouriteVideoError`}t.error(Ee(r())),i(!n)}i(n),e.setFavourite(e.video,n,null,a,e.analyticsData,e.analyticsOptions)}return!g.isFunction(e.setFavourite)||!g.isFunction(e.canFavourite)||!e.canFavourite(e.video)?(0,A.jsx)(A.Fragment,{}):(0,A.jsxs)(_,{className:a,onClick:o,tabIndex:e.preventFocus?-1:void 0,children:[(0,A.jsx)(m,{svg:Te,className:`svg-container ${M.heart}`}),(0,A.jsx)(m,{svg:we,className:`svg-container ${M.heartOutline}`})]})}function Oe(e){let t=T.getVideoProgress(e.video),n=t&&e.video.duration&&t/e.video.duration*1e5;return n?(0,A.jsx)(`div`,{className:`bg-primary h-100`,style:{width:`${n}%`}}):(0,A.jsx)(A.Fragment,{})}var ke={bottomBar:`_bottomBar_575p1_1`};function Ae(e){return T.isVideo(e.video)?(0,A.jsx)(`div`,{className:ke.bottomBar,children:(0,A.jsx)(Oe,{video:e.video})}):(0,A.jsx)(A.Fragment,{})}var je=`d-inline-block svg-container`,Me=`span`;function Ne(e){let{children:t,className:n=je,tagName:r=Me,size:i=f.Standard,onClick:a,title:o,tooltipPlacement:s=`right`}=e,c=r,l={className:`${n} svg-container ${i}`,onClick:g.isFunction(a)?a:null};return o?(0,A.jsx)(p,{title:o,placement:s,children:(0,A.jsx)(c,{...l,children:t})}):(0,A.jsx)(c,{...l,children:t})}var N={std:`_std_hibpg_1`,sm:`_sm_hibpg_5`,stdIcon:`_stdIcon_hibpg_10`,smIcon:`_smIcon_hibpg_21`};function P(e){return!T.isInteractive(e.video)&&!T.isClip(e.video)||!e.video._liteOwner&&!e.video._curationTags?.value?.isClickViewCurated?(0,A.jsx)(A.Fragment,{}):e.video._curationTags?.value?.isClickViewCurated?(0,A.jsx)(`div`,{className:`${e.size===`sm`?N.sm:N.std} me-1 rounded-circle position-relative bg-white`,children:(0,A.jsx)(Ne,{className:e.size===`sm`?N.smIcon:N.stdIcon,children:(0,A.jsx)(se,{})})}):(0,A.jsx)(`div`,{className:`${e.size===`sm`?N.sm:N.std} me-1`,children:(0,A.jsx)(S,{imageCdnUrl:e.imageCdnUrl,initials:ee.getInitials(e.video._liteOwner.name,e.video._liteOwner.surname),imageUrl:e.video._liteOwner.avatar?.url})})}var Pe={pluginHover:`_pluginHover_wpoz0_1`},Fe=`shared.pluginHover`;function F(e){return!e.isPlugin||e.isPluginPopup?(0,A.jsx)(A.Fragment,{}):(0,A.jsx)(h,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,onClick:e.onClick,className:`
|
|
2
2
|
position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer
|
|
3
3
|
${Pe.pluginHover}
|
|
4
4
|
${e.className?e.className:``}
|
|
@@ -7,4 +7,4 @@ import{F as e,N as t,P as n,Q as r,R as i,U as a,Wt as o,Yt as s,ct as c,qn as l
|
|
|
7
7
|
p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer
|
|
8
8
|
text-decoration-none ${e.theme?.container} ${G.tag} ${e.active?G.active:``}
|
|
9
9
|
`,children:(0,A.jsx)(St,{...e})}):(0,A.jsx)(`div`,{className:`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${e.theme?.container} ${G.tag} ${G.disabled}`,children:(0,A.jsx)(St,{...e})})}function St(e){return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(m,{className:`${G.icon} rounded-circle bg-${e.iconVariant} text-white`,svg:e.svg}),(0,A.jsx)(`span`,{className:`ps-1 text-nowrap user-select-none ${e.theme?.tabLabel}`,children:e.text})]})}function Ct(e){return(0,A.jsx)(`svg`,{...e,children:(0,A.jsx)(`path`,{fill:`currentColor`,d:`M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024`})})}var wt=`shared.classroomGuideTag`;function Tt(e){return!e.video||T.isInteractive(e.video)||T.isClip(e.video)||!e.video._hasCurriculumLinks?.value?(0,A.jsx)(A.Fragment,{}):(0,A.jsx)(xt,{theme:{container:`classroom-guide-tag`,tabLabel:`classroom-guide-tag-label`},svg:Ct,iconVariant:`navy`,text:w.getPhrase(wt,`curriculum`),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:`curriculum`,...T.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:r.Click,entity:T.getAnalyticsEntity(e.video),...e.analyticsOptions}})}var Et=`shared.interactivesTag`;function Dt(e){if(!T.showInteractivesGuidance(e.video))return(0,A.jsx)(A.Fragment,{});let t=!T.isInteractive(e.video)&&(e.video.interactives?.data.length||0);return(0,A.jsx)(xt,{svg:qe,iconVariant:`green`,text:w.getPhrase(Et,`interactives`,{smartCount:t}),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:`interactive`,videoGuidanceTotalItems:t,...T.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:r.Click,entity:T.getAnalyticsEntity(e.video),...e.analyticsOptions}})}var Ot=`shared.resourcesTag`;function kt(e){return T.isInteractive(e)?0:(e.resources?.data.length||0)+(e.links?.data.length||0)}function At(e){if(!T.showResourcesGuidance(e.video))return(0,A.jsx)(A.Fragment,{});let t=kt(e.video);return(0,A.jsx)(xt,{svg:Je,iconVariant:`indigo`,text:w.getPhrase(Ot,`resources`,{smartCount:t}),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:`resource`,videoGuidanceTotalItems:t,...T.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:r.Click,entity:T.getAnalyticsEntity(e.video),...e.analyticsOptions}})}function jt(e){let t=T.showInteractivesGuidance(e.video)&&T.showResourcesGuidance(e.video),n=e.commonVideoProps.features.showClassroomGuide(e.video);return(0,A.jsxs)(`div`,{className:`${e.containerClassName} ${t?e.responsiveClassName:``}`,children:[n&&(0,A.jsx)(Tt,{appLink:e.commonVideoProps.getClassroomGuideAppLink?.(e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),(0,A.jsx)(At,{appLink:e.commonVideoProps.getResourceGuidanceAppLink?.(e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),(0,A.jsx)(Dt,{appLink:e.commonVideoProps.getInteractiveGuidanceAppLink?.(e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions})]})}var Mt={button:`_button_tlbos_1`},Nt=`shared.removeVideoButton`;function Pt(e){return(0,A.jsx)(`div`,{className:`me-2`,children:(0,A.jsx)(p,{title:e.removeButtonTooltip||w.getPhrase(Nt,`removeFromRow`),spanHack:!0,children:(0,A.jsx)(_,{onClick:e.onClickRemove,className:`d-flex align-items-center justify-content-center ${Mt.button}`,tabIndex:e.preventFocus?-1:void 0,children:(0,A.jsx)(m,{svg:C,className:`svg-container ${Mt.heart}`})})})})}var K={topLeftContainer:`_topLeftContainer_1t9d5_1`,details:`_details_1t9d5_7`,isHovering:`_isHovering_1t9d5_11`,videoGuidanceTags:`_videoGuidanceTags_1t9d5_14`,responsiveGuidance:`_responsiveGuidance_1t9d5_21`,dropdown:`_dropdown_1t9d5_27`,show:`_show_1t9d5_31`,topRightContainer:`_topRightContainer_1t9d5_35`},Ft=e=>{let{video:t,appLink:n,imageOptions:a,preload:o,isHovering:s}=e,{hoverToPlay:l}=e.commonVideoProps,u=c.isObject(n?.params)?n?.params:{},{canNavigate:d,canConsume:f}=T.getCanBeConsumed(t);k.useEffect(()=>()=>{e.cleanPortalNode?.()},[]);function m(t){t.preventDefault(),e.onClickRemove?.()}let h=`position-relative bg-white`;e.extraClasses&&(h+=` ${e.extraClasses}`),s&&(h+=` rounded-3 shadow-lg`);let _={...e.analyticsOptions,entity:T.getAnalyticsEntity(t)},v=e.isHovering&&f&&l,y=j.showFavouriteButton(e.video,s);function b(){return g.isFunction(e.onClickRemove)?ce.isTabletOrMobile()?!0:s:!1}let x={...e.analyticsData,id:t.id,name:t.name},S={..._,actionType:r.Click,descriptor:i.Thumbnail};return(0,A.jsxs)(`div`,{className:h,children:[(0,A.jsxs)(`div`,{className:K.topRightContainer,children:[b()&&(0,A.jsx)(Pt,{onClickRemove:m,removeButtonTooltip:e.removeButtonTooltip,preventFocus:!0}),y&&(0,A.jsx)(De,{setFavourite:e.commonVideoProps.setFavourite,canFavourite:e.commonVideoProps.canFavourite,video:t,analyticsData:e.analyticsData,analyticsOptions:_,preventFocus:!0}),!d&&(0,A.jsx)(p,{title:T.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:``,children:(0,A.jsx)(Le,{})})]}),(0,A.jsxs)(`div`,{className:`position-relative`,children:[(0,A.jsx)(F,{isPlugin:e.commonVideoProps.isPlugin,isPluginPopup:e.commonVideoProps.isPluginPopup,className:s?`rounded-top-3`:`rounded-3`,onClick:()=>e.cleanPortalNode?.(),appLink:d?n:null,analyticsData:x,analyticsOptions:S}),(0,A.jsxs)(O,{onClick:()=>e.cleanPortalNode?.(),data:T.getThumbnail(t),appLink:d?n:null,imageType:te.Thumbnails,imageOptions:a,preload:o,alt:(`series`in t&&t.series?.name?`${t.series.name}: `:``)+t.name,analyticsData:x,analyticsOptions:S,preventFocus:!e.hideTitle,appLinkClassName:`position-absolute top-0 start-0 h-100 w-100 overflow-hidden ${s?`rounded-top-3`:`rounded-3`}`,imageClassName:s?`rounded-top-3`:`rounded-3`,children:[(0,A.jsx)(_e,{type:he.Video}),(0,A.jsxs)(`div`,{className:`p-absolute w-100 h-100 text-white`,children:[(0,A.jsxs)(`div`,{className:`${K.topLeftContainer} d-flex flex-no-wrap`,children:[e.showOwner&&(0,A.jsx)(P,{video:t,imageCdnUrl:e.commonVideoProps.imageCdnUrl}),(0,A.jsx)(B,{video:t}),(0,A.jsx)(I,{video:t,companyLogoFallbackUrl:e.commonVideoProps.getCompanyLogoFallbackUrl?.(t)})]}),(0,A.jsx)(pt,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),(0,A.jsx)(Ae,{video:e.video})]})]}),v&&(0,A.jsx)(tt,{objectId:e.video.id,objectTypeId:e.video.typeId,mode:`hover`,shareId:e.shareId,context:u.context,contextId:u.contextId,moviesAndTv:u.mtv,location:`popout-video`,onRemoveVideo:e.onClickRemove,appLink:d?n:null},e.video.id)]}),!s&&!e.hideTitle&&(0,A.jsx)(bt,{...e}),(0,A.jsx)(`div`,{className:`${K.details} ${s?`${K.isHovering} box-shadow`:``}`,children:s&&(0,A.jsx)(A.Fragment,{children:(0,A.jsxs)(`div`,{className:`${s?K.videoGuidanceTags:``}`,children:[(0,A.jsx)(bt,{...e}),e.showVideoGuidance&&s&&(0,A.jsx)(jt,{commonVideoProps:e.commonVideoProps,video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,responsiveClassName:K.responsiveGuidance,containerClassName:`d-flex justify-content-start align-items-center pt-2`})]})})})]})};function It(e){return(0,A.jsx)(A.Fragment,{children:(0,A.jsx)(ut,{hoverableComponent:Ft,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:{...e.analyticsData,id:e.video.id,name:e.video.name},analyticsOptions:{...e.analyticsOptions,entity:T.getAnalyticsEntity(e.video)}})})}function Lt(e){return(0,A.jsx)(`svg`,{...e,children:(0,A.jsx)(`path`,{fillRule:`evenodd`,d:`M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12M9 7.498c0-.551.387-.756.847-.469l7.306 4.567c.468.292.46.77 0 1.058l-7.306 4.567c-.468.292-.847.074-.847-.47z`,fill:`currentColor`})})}var q={mask:`_mask_tn7nt_1`,small:`_small_tn7nt_10`,video:`_video_tn7nt_10`,playlist:`_playlist_tn7nt_18`,maskContainer:`_maskContainer_tn7nt_28`,constantIconMaskContainer:`_constantIconMaskContainer_tn7nt_35`},J=function(e){return e[e.Video=0]=`Video`,e[e.Playlist=1]=`Playlist`,e[e.Series=2]=`Series`,e}({});function Rt(e){return e===J.Video?q.video:e===J.Playlist?q.playlist:``}function zt(e,t=!1){return e===J.Video?t?Lt:nt:null}Bt.defaults={size:`md`};function Bt(e){let{type:t,size:n,alwaysShowIcon:r}=e,i=Rt(t),a=zt(t,r);return(0,A.jsxs)(`div`,{className:`${r?q.constantIconMaskContainer:q.maskContainer} ${n===`sm`?q.small:``}`,children:[(0,A.jsx)(`div`,{className:q.mask}),(0,A.jsx)(m,{svg:a,className:i})]})}function Vt(e){return(0,A.jsx)(`svg`,{...e,children:(0,A.jsx)(`path`,{d:`M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074`,fill:`currentColor`})})}var Y={unchecked:`_unchecked_1n862_1`,outline:`_outline_1n862_5`,checked:`_checked_1n862_20`,checkMark:`_checkMark_1n862_27`},X=function(e){return e.None=`None`,e.Complete=`Complete`,e.Incomplete=`Incomplete`,e}({});Ht.defaultProps={style:`filled`};function Ht(e){let[t,n]=k.useState(e.status===X.Complete);k.useEffect(()=>{n(e.status===X.Complete)},[e.status]);let r=`cursor-pointer rounded-circle ${t?Y.checked:Y.unchecked}`;e.className&&(r+=` ${e.className}`),e.style===`outline`&&(r+=` ${Y.outline}`);function i(){return!!e.status&&e.status!==X.None&&g.isFunction(e.setStatus)}function a(){let r=!t;n(r);let i=r?X.Complete:X.Incomplete;e.setStatus(i).catch(()=>{n(!r)})}return i()?(0,A.jsx)(_,{className:r,onClick:a,disabled:e.disabled,children:(0,A.jsx)(m,{svg:Vt,className:`svg-container ${Y.checkMark}`})}):(0,A.jsx)(A.Fragment,{})}var Z={container:`_container_mn7d4_1`,cvIcon:`_cvIcon_mn7d4_7`,action:`_action_mn7d4_10`};function Ut(e){return!!(!T.getCanBeConsumed(e.video)?.canConsume||g.isFunction(e.setFavourite)&&g.isFunction(e.canFavourite)||g.isFunction(e.setCheckMarkStatus))}function Wt(e){let{canNavigate:t}=T.getCanBeConsumed(e.video);return t?Ut(e)?(0,A.jsxs)(`div`,{className:`${Z.container} d-flex align-items-center`,children:[(0,A.jsx)(De,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:Z.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,preventFocus:!0}),(0,A.jsx)(Ht,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:Z.action})]}):(0,A.jsx)(A.Fragment,{}):(0,A.jsx)(`div`,{className:Z.container,children:(0,A.jsx)(Le,{size:e.size})})}var Q=function(e){return e[e.Below=1]=`Below`,e[e.Overlay=2]=`Overlay`,e[e.Independent=3]=`Independent`,e}({}),$={titleOverlay:`_titleOverlay_f9p1o_1`,clip:`_clip_f9p1o_11`,large:`_large_f9p1o_15`,interactive:`_interactive_f9p1o_18`,titleBelow:`_titleBelow_f9p1o_25`,overlayContainer:`_overlayContainer_f9p1o_29`,topLeftContainer:`_topLeftContainer_f9p1o_36`,gradient:`_gradient_f9p1o_42`},Gt=`shared.staticVideoThumbnail`;function Kt(e){let{type:t,video:n,textPosition:r}=e,i=t===`static`,o=r===Q.Overlay,{canNavigate:s}=T.getCanBeConsumed(e.video),c=``;return o?(c=$.titleOverlay,s&&(T.isClip(n)&&(c+=` `+$.clip),T.isInteractive(n)&&(c+=` `+$.interactive))):c=$.titleBelow,(0,A.jsxs)(`div`,{className:c,children:[T.isVideo(n)&&(0,A.jsx)(R,{type:i?e.commonVideoProps.getSubTextType?.(e.video):`series`,className:o?`text-shadow clamp-1`:`clamp-2`,video:n,appLink:i&&!o?e.commonVideoProps.getSubTextAppLink?.(e.video):null,analyticsOptions:{location:a.VideoThumbnail}}),o||!s||!i?(0,A.jsx)(`span`,{className:`h6 text-reset clamp-1`,children:(0,A.jsx)(W,{video:n,title:n.name??w.getPhrase(Gt,`videoUnavailable`),showNewVideoIndicator:i&&e.commonVideoProps.showNewVideoIndicator,showPadlock:i&&!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience})}):(0,A.jsx)(h,{className:`h6 text-reset clamp-2`,appLink:e.appLink,children:(0,A.jsx)(W,{video:n,showNewVideoIndicator:e.commonVideoProps.showNewVideoIndicator,showPadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience})})]})}function qt(e){let{type:t,video:n,textPosition:a,imageOptions:o,preload:s,alwaysShowIcon:l}=e,u=`commonVideoProps`in e?e.commonVideoProps?.hoverToPlay:!1,d=t===`static`,f=d&&c.isObject(e.appLink?.params)?e.appLink?.params:{},[m,h]=pe(),[g,_]=fe({delay:100}),{canNavigate:v,canConsume:y}=T.getCanBeConsumed(n);function b(e){m.current=e,g.current=e}let x=d&&_&&y&&u;function S(){if(d)return!e.disableFavourite&&e.commonVideoProps.canFavourite?.(e.video)&&j.showFavouriteButton(n,h)}function C(){let t=`position-relative`;return t+=d&&e.appLink&&v?` cursor-pointer`:``,e.extraClasses&&(t+=` ${e.extraClasses}`),a===Q.Overlay&&(t+=` rounded overflow-hidden`),t}function ee(){let t=`overflow-hidden ${e.size===`sm`?`rounded`:`rounded-3`}`;return e.imageClassName&&(t+=` ${e.imageClassName}`),a===Q.Overlay&&(t+=` ${$.gradient}`),t}let w=d?{...e.analyticsOptions,entity:T.getAnalyticsEntity(n)}:{},ne=d&&!!e.appLink&&!e.hideMask&&v,re=d?T.getPrivacyReasoning(e.video,e.showSignIn):``,ie=d?{...e.analyticsData,id:n.id,name:n.name}:{},ae={...w,actionType:r.Click,descriptor:i.Thumbnail};return(0,A.jsxs)(p,{title:re,spanHack:!0,spanHackClassName:``,children:[(0,A.jsxs)(`div`,{className:C(),ref:b,children:[d&&(0,A.jsx)(F,{isPlugin:e.commonVideoProps.isPlugin,isPluginPopup:e.commonVideoProps.isPluginPopup,className:e.size===`sm`?`rounded`:`rounded-3`,appLink:v?e.appLink:null,analyticsData:ie,analyticsOptions:ae}),(0,A.jsx)(Wt,{video:n,checkMarkStatus:!d&&e.checkMarkStatus,setCheckMarkStatus:!d&&e.setCheckMarkStatus,setFavourite:d&&e.commonVideoProps.setFavourite,canFavourite:S,analyticsData:d&&e.analyticsData,analyticsOptions:d&&w,size:e.size}),(0,A.jsxs)(O,{data:T.getThumbnail(n),appLink:d&&v?e.appLink:null,onClick:d&&v?e.onClick:void 0,imageType:te.Thumbnails,imageOptions:o,preload:s,className:ee(),alt:(`series`in n&&n.series?.name?`${n.series.name}: `:``)+n.name,analyticsData:ie,analyticsOptions:ae,preventFocus:!0,openInNewTab:e.openInNewTab,forcePageLoad:e.forcePageLoad,children:[ne&&(0,A.jsx)(Bt,{type:J.Video,size:e.size,alwaysShowIcon:l}),(0,A.jsx)(_e,{type:he.Video}),(0,A.jsxs)(`div`,{className:$.overlayContainer,children:[a===Q.Overlay&&(0,A.jsx)(Kt,{...e}),(0,A.jsxs)(`div`,{className:`${$.topLeftContainer} d-flex flex-no-wrap`,children:[d&&e.showOwner&&(0,A.jsx)(P,{video:n,imageCdnUrl:e.commonVideoProps.imageCdnUrl}),!e.hideVideoTypeBadge&&(0,A.jsx)(B,{video:n,size:e.size}),d&&(0,A.jsx)(I,{video:n,companyLogoFallbackUrl:e.commonVideoProps.getCompanyLogoFallbackUrl?.(n),size:e.size})]}),!e.hideBottomBar&&(0,A.jsx)(Ae,{video:n}),(0,A.jsx)(pt,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size})]})]}),x&&(0,A.jsx)(tt,{objectId:e.video.id,objectTypeId:e.video.typeId,mode:`hover`,shareId:d&&e.shareId,context:f.context,contextId:f.contextId,moviesAndTv:f.mtv,appLink:d&&v?e.appLink:null},e.video.id)]}),a===Q.Below&&(0,A.jsx)(Kt,{...e})]})}Jt.defaultProps={hideRating:!0,size:`md`,showOwner:!0};function Jt(e){switch(e.type){case`static`:return(0,A.jsx)(qt,{...e});case`cosmetic`:return(0,A.jsx)(qt,{...e});case`expandable`:return(0,A.jsx)(it,{...e});case`popout`:return(0,A.jsx)(It,{...e});default:return}}export{Ce as i,Q as n,R as r,Jt as t};
|
|
10
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=Cae9k2q12.chunk.js.map
|