@clickview/reports 0.85.0-rc.1 → 0.85.0-rc.2
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 +284 -284
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{DMI-Lxl02.chunk.js → BCcIdtcy2.chunk.js} +2 -2
- package/dist/scripts/{DMI-Lxl02.chunk.js.map → BCcIdtcy2.chunk.js.map} +1 -1
- package/dist/scripts/{ClOZ7MLV.chunk.js → BIlepbnA.chunk.js} +2 -2
- package/dist/scripts/{ClOZ7MLV.chunk.js.map → BIlepbnA.chunk.js.map} +1 -1
- package/dist/scripts/{3EzrYsbw2.chunk.js → BX5YDJVD2.chunk.js} +2 -2
- package/dist/scripts/{3EzrYsbw2.chunk.js.map → BX5YDJVD2.chunk.js.map} +1 -1
- package/dist/scripts/{Bua2prVk2.chunk.js → BY9ZIRoW2.chunk.js} +2 -2
- package/dist/scripts/{Bua2prVk2.chunk.js.map → BY9ZIRoW2.chunk.js.map} +1 -1
- package/dist/scripts/{CowZxgkl2.chunk.js → BkkPVinl2.chunk.js} +2 -2
- package/dist/scripts/{CowZxgkl2.chunk.js.map → BkkPVinl2.chunk.js.map} +1 -1
- package/dist/scripts/{Udxe63DQ.chunk.js → BsAss53i.chunk.js} +2 -2
- package/dist/scripts/{Udxe63DQ.chunk.js.map → BsAss53i.chunk.js.map} +1 -1
- package/dist/scripts/{CJIwkABI.chunk.js → BsTmrvS_.chunk.js} +2 -2
- package/dist/scripts/{CJIwkABI.chunk.js.map → BsTmrvS_.chunk.js.map} +1 -1
- package/dist/scripts/{1pdbKMyH.chunk.js → BzSZm3J1.chunk.js} +2 -2
- package/dist/scripts/{1pdbKMyH.chunk.js.map → BzSZm3J1.chunk.js.map} +1 -1
- package/dist/scripts/{c7dUmf3R.chunk.js → C5k6lVOP.chunk.js} +2 -2
- package/dist/scripts/{c7dUmf3R.chunk.js.map → C5k6lVOP.chunk.js.map} +1 -1
- package/dist/scripts/{DTy5e0Yv2.chunk.js → CPp4jaPB2.chunk.js} +2 -2
- package/dist/scripts/{DTy5e0Yv2.chunk.js.map → CPp4jaPB2.chunk.js.map} +1 -1
- package/dist/scripts/{r-dVoZ7W2.chunk.js → Cdlk0Qkj2.chunk.js} +2 -2
- package/dist/scripts/{r-dVoZ7W2.chunk.js.map → Cdlk0Qkj2.chunk.js.map} +1 -1
- package/dist/scripts/ClX2mOw_.chunk.js +1 -0
- package/dist/scripts/{CMKPCLR42.chunk.js → D0fFZDhm2.chunk.js} +2 -2
- package/dist/scripts/{CMKPCLR42.chunk.js.map → D0fFZDhm2.chunk.js.map} +1 -1
- package/dist/scripts/{B9S_LeFP.chunk.js → DMuXCE-z.chunk.js} +2 -2
- package/dist/scripts/{B9S_LeFP.chunk.js.map → DMuXCE-z.chunk.js.map} +1 -1
- package/dist/scripts/{3q7nyVif2.chunk.js → DNZvrGV22.chunk.js} +2 -2
- package/dist/scripts/{3q7nyVif2.chunk.js.map → DNZvrGV22.chunk.js.map} +1 -1
- package/dist/scripts/{2MxiB_er.chunk.js → DUzAx5n_.chunk.js} +2 -2
- package/dist/scripts/{2MxiB_er.chunk.js.map → DUzAx5n_.chunk.js.map} +1 -1
- package/dist/scripts/DaBzvZF9.chunk.js +1 -0
- package/dist/scripts/{Cpm-LpwK.chunk.js → DkhktXkG.chunk.js} +2 -2
- package/dist/scripts/{Cpm-LpwK.chunk.js.map → DkhktXkG.chunk.js.map} +1 -1
- package/dist/scripts/{Bx5qk-PZ.chunk.js → DtSAu9Xt.chunk.js} +3 -3
- package/dist/scripts/{Bx5qk-PZ.chunk.js.map → DtSAu9Xt.chunk.js.map} +1 -1
- package/dist/scripts/{ktNy7dHM2.chunk.js → DvxtrAxT2.chunk.js} +2 -2
- package/dist/scripts/{ktNy7dHM2.chunk.js.map → DvxtrAxT2.chunk.js.map} +1 -1
- package/dist/scripts/{BvNaANAO2.chunk.js → DxD2uVzf2.chunk.js} +2 -2
- package/dist/scripts/{BvNaANAO2.chunk.js.map → DxD2uVzf2.chunk.js.map} +1 -1
- package/dist/scripts/{DgPadkLi2.chunk.js → I9MVVxo82.chunk.js} +2 -2
- package/dist/scripts/{DgPadkLi2.chunk.js.map → I9MVVxo82.chunk.js.map} +1 -1
- package/dist/scripts/{BnfA2fln.chunk.js → IH7D3jLI.chunk.js} +2 -2
- package/dist/scripts/{BnfA2fln.chunk.js.map → IH7D3jLI.chunk.js.map} +1 -1
- package/dist/scripts/{CKRKdk5U.chunk.js → OU_kRJz_.chunk.js} +2 -2
- package/dist/scripts/{CKRKdk5U.chunk.js.map → OU_kRJz_.chunk.js.map} +1 -1
- package/dist/scripts/{n2iCrpxU.chunk.js → P4zTQoDZ.chunk.js} +2 -2
- package/dist/scripts/{n2iCrpxU.chunk.js.map → P4zTQoDZ.chunk.js.map} +1 -1
- package/dist/scripts/{CqCz1X85.chunk.js → PZOjj17O.chunk.js} +2 -2
- package/dist/scripts/{CqCz1X85.chunk.js.map → PZOjj17O.chunk.js.map} +1 -1
- package/dist/scripts/{CCLDpjnt2.chunk.js → XgwoBT6z2.chunk.js} +2 -2
- package/dist/scripts/{CCLDpjnt2.chunk.js.map → XgwoBT6z2.chunk.js.map} +1 -1
- package/dist/scripts/{app-BigOHyYp.js → app-m6P7KXE1.js} +3 -3
- package/dist/scripts/{app-BigOHyYp.js.map → app-m6P7KXE1.js.map} +1 -1
- package/dist/scripts/{BpzXy-5d.chunk.js → bNV2NeSi.chunk.js} +2 -2
- package/dist/scripts/{BpzXy-5d.chunk.js.map → bNV2NeSi.chunk.js.map} +1 -1
- package/dist/scripts/{BKW2JeVr.chunk.js → fIFpt-kC.chunk.js} +2 -2
- package/dist/scripts/{BKW2JeVr.chunk.js.map → fIFpt-kC.chunk.js.map} +1 -1
- package/dist/scripts/{CKVaLGJC.chunk.js → fOHWXn7-.chunk.js} +2 -2
- package/dist/scripts/{CKVaLGJC.chunk.js.map → fOHWXn7-.chunk.js.map} +1 -1
- package/dist/scripts/{BfhdSOSX2.chunk.js → jXHCFC1j2.chunk.js} +2 -2
- package/dist/scripts/{BfhdSOSX2.chunk.js.map → jXHCFC1j2.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/Bs1YLdQb.chunk.js +0 -1
- package/dist/scripts/Cah5ISd-.chunk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c7dUmf3R.chunk.js","names":[],"sources":["../../src/shared/flight-requests/LoginRequests.ts","../../src/apps/logins/views/cards/school-logins-by-group-card/empty-state/school-logins-by-group-card-card-empty-state.module.scss","../../src/apps/logins/views/cards/school-logins-by-group-card/empty-state/SchoolLoginsByGroupCardEmptyState.tsx","../../src/apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView.tsx","../../src/shared/utils/LineChartByMonthUtils.ts","../../src/apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView.tsx","../../src/apps/logins/views/school-login-overview/school-login-overview.module.scss","../../src/apps/logins/views/school-login-overview/SchoolLoginOverview.tsx"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const LoginRequests = {\n logins(\n filter: AnalyticsRequestFilter,\n success?: (data: LoginEventResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/logins', {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n }),\n key: getAnalyticsRequestKey('logins', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .image {\n width: 200px;\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\nconst namespace = 'reportsShared.schoolLoginsByGroupCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './school-logins-by-group-card-card-empty-state.module.scss';\n\nexport function SchoolLoginsByGroupCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.School}\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';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\n\nimport { SchoolLoginsByGroupCardEmptyState } from './empty-state/SchoolLoginsByGroupCardEmptyState';\n\nconst namespace = 'logins.schoolLoginsByGroupCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByGroupCardView() {\n const requestFilter = useGetRequestFilter('logins');\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n \n const isTertiary = useIsTertiary();\n\n const mapNameToGroup = (name: string) => (name === 'Unknown' || name === null) ? 'Staff' : name;\n const totalLoginsByGroupData = getCountByGroup(\n logins.data?.yearGroupCount?.map(group => ({\n name: mapNameToGroup(group.name),\n count: group.count\n }))\n );\n const totalLoginsCount = totalLoginsByGroupData?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {totalLoginsByGroupData ?\n <>\n <h2 className='h6 mb-1'>\n <Text\n namespace={namespace}\n phrase={isTertiary ? 'totalLoginsTertiary' : 'totalLogins'}\n options={{ logins: totalLoginsCount }}\n />\n </h2>\n\n {totalLoginsByGroupData.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <VerticalBarChart data={totalLoginsByGroupData} />\n </div>\n </Scrollbars> :\n <SchoolLoginsByGroupCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-50'> </div>\n }\n </div>\n );\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEvent } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { VideoViewEvent } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupedViewData = {\n [key in UserGroup]?: {\n [date: string]: number\n }\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: VideoViewEvent[] | LoginEvent[],\n requestFilter: AnalyticsRequestFilter\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped: GroupedViewData = {};\n\n events.forEach(ev => {\n if (!ev.userType)\n return;\n\n const eventDate = 'groupedDateWatched' in ev && ev.groupedDateWatched || 'groupedLoggedOn' in ev && ev.groupedLoggedOn;\n const eventDateFormatted = DateHelper.format(DateHelper.convertUTCToLocal(eventDate), DateFormats[groupBy]);\n\n grouped[ev.userType] = grouped[ev.userType] ?? {};\n grouped[ev.userType][eventDateFormatted] = grouped[ev.userType][eventDateFormatted] ?? 0;\n grouped[ev.userType][eventDateFormatted] += ev.count;\n });\n\n const roles = Object.keys(grouped) as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n ArrayHelper.sortBy(roles.map(r => ({\n name: mapUserTypeToChartLabel(r),\n type: 'line',\n data: fullDateRange.map(d => grouped[r][d] ?? 0),\n color: mapUserTypeToChartColour(r)\n })), 'name')\n };\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getChartData } from 'shared/utils/LineChartByMonthUtils';\n\nconst namespace = 'logins.schoolLoginsByMonthCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByMonthCardView() {\n const requestFilter = useGetRequestFilter('logins');\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n\n const chartData = getChartData(logins.data?.data, requestFilter);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='loginActivity' /></h2>\n\n <LineChart categories={chartData.categories} data={chartData.data} />\n </> :\n <div className='partial-loading-background w-25'> </div>}\n </div>\n );\n}\n",":local {\n %column {\n height: 30rem;\n }\n\n .column1 {\n @extend %column;\n flex: 3 0;\n }\n \n .column2 {\n @extend %column;\n flex: 4 0;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getLoginHeaderActions } from 'shared/utils/HeaderActionUtils';\n\nimport { SchoolLoginsByGroupCardView } from 'apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView';\nimport { SchoolLoginsByMonthCardView } from 'apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView';\n\nimport styles from './school-login-overview.module.scss';\n\nconst namespace = 'logins.schoolLoginOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolLoginOverview() {\n useSetPageMetadata({ title: getPhrase('title') });\n useSetHeaderTitle(getPhrase('title'));\n useSetHeaderActions(getLoginHeaderActions());\n\n return (\n <div>\n <div className='d-flex gap-3'>\n <div className={`${styles.column1}`}>\n <SchoolLoginsByGroupCardView />\n </div>\n <div className={`${styles.column2}`}>\n <SchoolLoginsByMonthCardView />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C5k6lVOP.chunk.js","names":[],"sources":["../../src/shared/flight-requests/LoginRequests.ts","../../src/apps/logins/views/cards/school-logins-by-group-card/empty-state/school-logins-by-group-card-card-empty-state.module.scss","../../src/apps/logins/views/cards/school-logins-by-group-card/empty-state/SchoolLoginsByGroupCardEmptyState.tsx","../../src/apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView.tsx","../../src/shared/utils/LineChartByMonthUtils.ts","../../src/apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView.tsx","../../src/apps/logins/views/school-login-overview/school-login-overview.module.scss","../../src/apps/logins/views/school-login-overview/SchoolLoginOverview.tsx"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const LoginRequests = {\n logins(\n filter: AnalyticsRequestFilter,\n success?: (data: LoginEventResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/logins', {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n }),\n key: getAnalyticsRequestKey('logins', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .image {\n width: 200px;\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\nconst namespace = 'reportsShared.schoolLoginsByGroupCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './school-logins-by-group-card-card-empty-state.module.scss';\n\nexport function SchoolLoginsByGroupCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.School}\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';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\n\nimport { SchoolLoginsByGroupCardEmptyState } from './empty-state/SchoolLoginsByGroupCardEmptyState';\n\nconst namespace = 'logins.schoolLoginsByGroupCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByGroupCardView() {\n const requestFilter = useGetRequestFilter('logins');\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n \n const isTertiary = useIsTertiary();\n\n const mapNameToGroup = (name: string) => (name === 'Unknown' || name === null) ? 'Staff' : name;\n const totalLoginsByGroupData = getCountByGroup(\n logins.data?.yearGroupCount?.map(group => ({\n name: mapNameToGroup(group.name),\n count: group.count\n }))\n );\n const totalLoginsCount = totalLoginsByGroupData?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {totalLoginsByGroupData ?\n <>\n <h2 className='h6 mb-1'>\n <Text\n namespace={namespace}\n phrase={isTertiary ? 'totalLoginsTertiary' : 'totalLogins'}\n options={{ logins: totalLoginsCount }}\n />\n </h2>\n\n {totalLoginsByGroupData.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <VerticalBarChart data={totalLoginsByGroupData} />\n </div>\n </Scrollbars> :\n <SchoolLoginsByGroupCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-50'> </div>\n }\n </div>\n );\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEvent } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { VideoViewEvent } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupedViewData = {\n [key in UserGroup]?: {\n [date: string]: number\n }\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: VideoViewEvent[] | LoginEvent[],\n requestFilter: AnalyticsRequestFilter\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped: GroupedViewData = {};\n\n events.forEach(ev => {\n if (!ev.userType)\n return;\n\n const eventDate = 'groupedDateWatched' in ev && ev.groupedDateWatched || 'groupedLoggedOn' in ev && ev.groupedLoggedOn;\n const eventDateFormatted = DateHelper.format(DateHelper.convertUTCToLocal(eventDate), DateFormats[groupBy]);\n\n grouped[ev.userType] = grouped[ev.userType] ?? {};\n grouped[ev.userType][eventDateFormatted] = grouped[ev.userType][eventDateFormatted] ?? 0;\n grouped[ev.userType][eventDateFormatted] += ev.count;\n });\n\n const roles = Object.keys(grouped) as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n ArrayHelper.sortBy(roles.map(r => ({\n name: mapUserTypeToChartLabel(r),\n type: 'line',\n data: fullDateRange.map(d => grouped[r][d] ?? 0),\n color: mapUserTypeToChartColour(r)\n })), 'name')\n };\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getChartData } from 'shared/utils/LineChartByMonthUtils';\n\nconst namespace = 'logins.schoolLoginsByMonthCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByMonthCardView() {\n const requestFilter = useGetRequestFilter('logins');\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n\n const chartData = getChartData(logins.data?.data, requestFilter);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='loginActivity' /></h2>\n\n <LineChart categories={chartData.categories} data={chartData.data} />\n </> :\n <div className='partial-loading-background w-25'> </div>}\n </div>\n );\n}\n",":local {\n %column {\n height: 30rem;\n }\n\n .column1 {\n @extend %column;\n flex: 3 0;\n }\n \n .column2 {\n @extend %column;\n flex: 4 0;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getLoginHeaderActions } from 'shared/utils/HeaderActionUtils';\n\nimport { SchoolLoginsByGroupCardView } from 'apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView';\nimport { SchoolLoginsByMonthCardView } from 'apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView';\n\nimport styles from './school-login-overview.module.scss';\n\nconst namespace = 'logins.schoolLoginOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolLoginOverview() {\n useSetPageMetadata({ title: getPhrase('title') });\n useSetHeaderTitle(getPhrase('title'));\n useSetHeaderActions(getLoginHeaderActions());\n\n return (\n <div>\n <div className='d-flex gap-3'>\n <div className={`${styles.column1}`}>\n <SchoolLoginsByGroupCardView />\n </div>\n <div className={`${styles.column2}`}>\n <SchoolLoginsByMonthCardView />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$ as e,N as t,P as n,Q as r,R as i,U as a,V as o,W as s,et as c,in as l,nn as u,st as d,z as f}from"./CM0wW4AE.chunk.js";import{i as ee,r as te,t as p,v as m}from"./B01-hGyk.chunk.js";import{i as ne}from"./S6AM6CLE.chunk.js";import{d as h,n as g}from"./dUFTODMz.chunk.js";import{n as re,s as ie}from"./KyOyA3o8.chunk.js";import{t as ae}from"./NaTUzw6f.chunk.js";import{n as _}from"./CNQKHXPY.chunk.js";import{i as v,o as oe}from"./DYHGbCb9.chunk.js";import{t as y}from"./BXBnJv6U.chunk.js";import{t as b}from"./I5Dnl_eN.chunk.js";import{n as x,t as S}from"./C7JDFkYU.chunk.js";import{n as C,r as w}from"./H5KLIhR_.chunk.js";import{t as se}from"./CO7H3BC5.chunk.js";import{t as ce}from"./C7xZhn-Q.chunk.js";import{t as T}from"./DHk1ZJ0C.chunk.js";import{$ as E,F as le,I as D,M as ue,N as O,P as k,a as de,at as A,b as fe,h as j,l as pe,n as me,r as M,u as he}from"./app-BigOHyYp.js";import{i as N,n as P,r as F,t as I}from"./3q7nyVif2.chunk.js";import{t as L}from"./ktNy7dHM2.chunk.js";import{t as R}from"./mApnhyGa2.chunk.js";import{m as z}from"./CCLDpjnt2.chunk.js";import{n as ge,t as _e}from"./CowZxgkl2.chunk.js";import{n as ve,t as ye}from"./DgPadkLi2.chunk.js";import{n as be,t as xe}from"./CMKPCLR42.chunk.js";import{t as Se}from"./Bua2prVk2.chunk.js";d();var B={video:`_video_x45yw_1`,button:`_button_x45yw_5`,content:`_content_x45yw_9`,partialHighlight:`_partialHighlight_x45yw_14`},V=n();function Ce(){return(0,V.jsx)(`div`,{className:`w-100 ${B.partialHighlight}`,children:(0,V.jsxs)(`div`,{className:`row gx-3 h-100`,children:[(0,V.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,V.jsx)(`div`,{className:`rounded-3 ${B.video} partial-loading-background`})}),(0,V.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,V.jsx)(`div`,{className:`${B.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`${B.button} rounded-3 partial-loading-background me-2 d-inline-block`}),(0,V.jsx)(`div`,{className:`${B.button} rounded-3 partial-loading-background me-2 d-inline-block`})]})]})]})})}function we(e){return e.appLink?(0,V.jsx)(I,{video:e.video,commonVideoProps:e.commonVideoProps,appLink:e.appLink,analyticsOptions:{...e.analyticsOptions,location:e.locationContext},imageOptions:{size:T.Medium},type:`static`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0,alwaysShowIcon:!0}):(0,V.jsx)(`a`,{href:e.redirectUrl,target:`_blank`,onClick:()=>{t.logUserAction({videoId:e.video?.id},{...e.analyticsOptions,location:e.locationContext})},children:(0,V.jsx)(I,{video:e.video,imageOptions:{size:T.Medium},type:`cosmetic`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0})})}var H=`shared.videoHighlight`,Te={actionType:r.Click,descriptor:s.DismissWidget,entity:f.Widget,eventVersion:o.V1,location:a.VideoHighlight,workflowPhase:c.Complete},U={actionType:r.Click,descriptor:e.ViewOriginalVideo,workflowPhase:c.Complete,entity:f.Thumbnail,location:a.VideoHighlight,eventVersion:o.V1},Ee={actionType:r.Click,location:a.VideoHighlight,entity:f.AppLink,workflowPhase:c.Complete,descriptor:e.OpenInClickView,eventVersion:o.V1},De={actionType:r.Click,descriptor:i.SeeMore,workflowPhase:c.Complete,entity:f.AppLink,eventVersion:o.V1};function Oe(e){if(!e.video)return(0,V.jsx)(V.Fragment,{});function n(){t.logUserAction({videoId:e.video?.id},Te),e.onDismiss()}function r(e,n,r={}){t.logUserAction(r,n),typeof e==`string`?l.PageLoad(e,!0):u.trigger(e)}return e.video?(0,V.jsxs)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:[(0,V.jsxs)(`div`,{className:`row gx-3`,children:[(0,V.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,V.jsx)(we,{video:e.video,analyticsOptions:U,appLink:e.appLink,redirectUrl:e.redirectUrl,commonVideoProps:e.commonVideoProps,locationContext:e.locationContext})}),(0,V.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,V.jsxs)(`div`,{className:`overflow-hidden mt-lg-0 mt-2`,children:[(0,V.jsx)(N,{children:(0,V.jsx)(`span`,{onClick:()=>r(e.sharedPlaylistAppLink??e.redirectPlaylistUrl,Ee),className:`cursor-pointer`,children:e.subtitle})}),(0,V.jsx)(`div`,{className:`h5 mb-0 clamp-1 d-block`,children:(0,V.jsx)(`span`,{onClick:()=>r(e.appLink??e.redirectUrl,U),className:`cursor-pointer`,children:e.video?.name})}),(0,V.jsx)(`div`,{className:`mt-1 mb-2`,children:e.video?.description??e.description})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`button`,{className:`btn btn-dark me-2`,onClick:()=>r(e.appLink??e.redirectUrl,U,{videoId:e.video?.id}),children:(0,V.jsx)(g,{namespace:H,phrase:`watch`})}),(0,V.jsx)(`button`,{className:`btn btn-outline-dark me-2`,onClick:()=>r(e.supportArticle,{...De,location:e.locationContext},{url:e.supportArticle}),children:(0,V.jsx)(g,{namespace:H,phrase:`learnMore`})}),(0,V.jsx)(`div`,{className:`btn btn-outline-dark d-sm-none`,onClick:n,children:(0,V.jsx)(g,{namespace:H,phrase:`dismiss`})})]})]})]}),(0,V.jsx)(`div`,{className:`position-absolute top-0 end-0 p-2 d-sm-inline d-none`,children:(0,V.jsx)(p,{svg:v,onClick:n})})]}):(0,V.jsx)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:(0,V.jsx)(Ce,{})})}var W=function(e){return e.SearchAndDiscover=`searchAndDiscover`,e.Analytics=`analytics`,e.OpenClassroom=`openClassroom`,e.CreateClassroom=`createClassroom`,e.UploadVideo=`uploadVideo`,e.Playlist=`playlist`,e.ShareVideo=`shareVideo`,e}({}),G={[W.Analytics]:x.HasDismissedAnalyticsTutorial,[W.OpenClassroom]:x.HasDismissedOpenClassroomsTutorial,[W.SearchAndDiscover]:x.HasDismissedSearchAndDiscoverTutorial,[W.CreateClassroom]:x.HasDismissedClassroomsTutorial,[W.Playlist]:x.HasDismissedPlaylistsTutorial,[W.ShareVideo]:x.HasDismissedMySharesTutorial,[W.UploadVideo]:x.HasDismissedMyVideosTutorial},K={OlympicsTopics:{18:{id:`Oq9WnjA`,name:`2026 Milano Cortina Winter Olympic Games`},9:{id:`EoAYjoR`,name:`2026 Milano Cortina Winter Olympic Games`}},CommonwealthGameTopics:{12:{id:`AO0j90j`,name:`Commonwealth Games Glasgow 2026`},24:{id:`ZJxKkg1`,name:`Commonwealth Games Glasgow 2026`},16:{id:`agD7d73`,name:`Commonwealth Games Glasgow 2026`},47:{id:`m6mpl27`,name:`Commonwealth Games Glasgow 2026`},18:{id:`3bRp6eA`,name:`Commonwealth Games Glasgow 2026`},9:{id:`7mjAxYR`,name:`Commonwealth Games Glasgow 2026`}},PublicTranscriptVideoIds:`78902422.8139055.32102562.36875667.3713657.9900524.48278572.39424302.3712691.54504550.23852726.3713563.3714027.51281358.58785149.7322586.3716774.36554689.54192890.6689791.10749459.3712691.81764158.43772092.43974358.48091365.6430651.3713735.54096131.57977558.78840166.57738254.51666370.49858722`.split(`.`),SpecialEvents:{dlL00b3:{id:`dlL00b3`,iconUrl:`https://img.clickviewapp.com/v2/covers/PGbNp0`}},Classifications:{Twig:{EnglandSecondary:{HUB:`yrg5vYN`},ScotlandSecondary:{HUB:`Y69j14M`},InternationalSecondary:{HUB:`MYM6GGM`},NewZealandSecondary:{HUB:`agNmRd9`},CanadaMiddle:{HUB:`3brl1mY`},CanadaHigh:{HUB:`kZJ9vkz`}},Tigtag:{EnglandPrimary:{HUB:`D1218zx`,TIGTAG_HUB:`odldxPJ`,TIGTAG_JUNIOR_HUB:`nENExnL`},ScotlandPrimary:{HUB:`JjAONbj`,TIGTAG_HUB:`3bNAGl1`,TIGTAG_JUNIOR_HUB:`K6GKp43`},InternationalPrimary:{HUB:`W1xqbk2`,TIGTAG_HUB:`ek3dJr8`,TIGTAG_JUNIOR_HUB:`PGyKzpn`},NewZealandPrimary:{HUB:`odnkREE`,TIGTAG_HUB:`kZJ4RPa`,TIGTAG_JUNIOR_HUB:`zMg80DR`},CanadaElementary:{HUB:`JjabmDE`,TIGTAG_HUB:`dq9Ewje`,TIGTAG_JUNIOR_HUB:`bmElWrb`},CanadaMiddle:{HUB:`dq9EwyZ`,TIGTAG_HUB:`K6abxjP`,TIGTAG_JUNIOR_HUB:`7mwxLdR`}}},PresentationIds:{DEFAULT:1,DEFAULT_CURRICULUM:10,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,US_MIDDLE:14,US_HIGH:15,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Libraries:{LICENCED_CONTENT_COLLECTION:`3700633`,AU_PRIMARY:`10066675`,AU_SECONDARY:`59401330`,AU_TERTIARY:`5836680`,US_ELEMENTARY:`38693445`,US_MIDDLE:`39642303`,US_HIGH:`38693435`,CA_ELEMENTARY:`92862332`,CA_MIDDLE:`92862334`,CA_HIGH:`92862344`,STREAMABLE_LEARNING:`78688869`,ENG_PRIMARY:`35340580`,ENG_SECONDARY:`59889793`,SCT_PRIMARY:`33386791`,SCT_SECONDARY:`59856733`,UK_TERTIARY:`5815036`,INT_PRIMARY:`3706428`,INT_SECONDARY:`3706459`,NZ_PRIMARY:`3705693`,NZ_SECONDARY:`3705710`,NZ_MTV:`26989676`,TWIG:`88117784`,TIGTAG:`80333935`},Rostering:{sources:{0:{name:`Unknown`,iconUrl:``},1:{name:`Clever`,iconUrl:`https://img.clickviewapp.com/v2/logos/LqlKgd`},2:{name:`ClassLink`,iconUrl:`https://img.clickviewapp.com/v2/logos/ZA2ew5`},3:{name:`Google`,iconUrl:`https://img.clickviewapp.com/v2/logos/l5x0jL`},4:{name:`Microsoft`,iconUrl:`https://img.clickviewapp.com/v2/logos/xAxGPP`},5:{name:`Schoology`,iconUrl:`https://img.clickviewapp.com/v2/logos/kZNEyz`},6:{name:`PowerSchool`,iconUrl:`https://img.clickviewapp.com/v2/logos/m6aDmR`}}},Images:{Level_1:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dlM73E`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/WAe8MP`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/raRm7E`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/3kzeZ2`},Level_2:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/WAeKvP`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/9DAZJv`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/eKG2bq`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/xyn5eP`},Level_3:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dl1d0g`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/R0Pz7A`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/8LYZ9R`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/nKDyRj`},Level_4:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/vYJPP5`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/PGPLLP`},TOPIC_DEFAULT_BANNER:`https://img.clickviewapp.com/v2/banners/yKvoG0`,STREAMABLE_TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/q6gnOn`,STREAMABLE_TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/age95g`},Onboarding:{Playlist:{COVER_FILE_ID:`G149g3`,BANNER_FILE_ID:`bmPLkn`},LOADING_THUMBNAILS:`https://img.clickviewapp.com/v2/thumbnails/7m34ne,https://img.clickviewapp.com/v2/thumbnails/W1bjqJ,https://img.clickviewapp.com/v2/thumbnails/G14M1e,https://img.clickviewapp.com/v2/thumbnails/2mnv5x,https://img.clickviewapp.com/v2/thumbnails/xAEG91,https://img.clickviewapp.com/v2/thumbnails/agnbyg,https://img.clickviewapp.com/v2/thumbnails/W13emP,https://img.clickviewapp.com/v2/thumbnails/Y6j2vy,https://img.clickviewapp.com/v2/thumbnails/W1MJGE,https://img.clickviewapp.com/v2/thumbnails/OqDJqG,https://img.clickviewapp.com/v2/thumbnails/1My9Wn,https://img.clickviewapp.com/v2/thumbnails/G14MRe,https://img.clickviewapp.com/v2/thumbnails/5bgKpl,https://img.clickviewapp.com/v2/thumbnails/agnbp9,https://img.clickviewapp.com/v2/thumbnails/G147R1,https://img.clickviewapp.com/v2/thumbnails/5bgMz5,https://img.clickviewapp.com/v2/thumbnails/G14Me5,https://img.clickviewapp.com/v2/thumbnails/5bEovE,https://img.clickviewapp.com/v2/thumbnails/odY4oZ,https://img.clickviewapp.com/v2/thumbnails/yrqwqD,https://img.clickviewapp.com/v2/thumbnails/K6pOmR,https://img.clickviewapp.com/v2/thumbnails/vYK3w4,https://img.clickviewapp.com/v2/thumbnails/agnD88,https://img.clickviewapp.com/v2/thumbnails/4rKmp7,https://img.clickviewapp.com/v2/thumbnails/0wM4r3,https://img.clickviewapp.com/v2/thumbnails/69A2jO,https://img.clickviewapp.com/v2/thumbnails/7m3Z3e,https://img.clickviewapp.com/v2/thumbnails/3bGL94,https://img.clickviewapp.com/v2/thumbnails/Y6jwLo,https://img.clickviewapp.com/v2/thumbnails/1MyPby`.split(`,`)},Tutorial:{staging:{[y.AU]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.NZ]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.UK]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.US]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`}},production:{[y.AU]:{PLAYLIST:``,SHARE:``},[y.NZ]:{PLAYLIST:``,SHARE:``},[y.UK]:{PLAYLIST:``,SHARE:``},[y.US]:{PLAYLIST:`103312110`,SHARE:`jWy8VY`}}},TutorialVideoHighlight:{analytics:{staging:{[y.US]:{VIDEO:`92095356`,SHARE:`DN8vMg`}},production:{[y.US]:{VIDEO:`102633825`,SHARE:`Ggg8mp`}}},searchAndDiscover:{staging:{[y.US]:{VIDEO:`92095348`,SHARE:`G2Ylra`}},production:{[y.US]:{VIDEO:`102633632`,SHARE:`Dem5BK`}}},openClassroom:{staging:{[y.US]:{VIDEO:`92095362`,SHARE:`bwXY5w`}},production:{[y.US]:{VIDEO:`100539257`,SHARE:`Dv7nnq`}}},createClassroom:{staging:{[y.US]:{VIDEO:`92095338`,SHARE:`Gm0kXY`}},production:{[y.US]:{VIDEO:`102633076`,SHARE:`bZR5OR`}}},uploadVideo:{staging:{[y.US]:{VIDEO:`92095354`,SHARE:`Dk90O8`}},production:{[y.US]:{VIDEO:`102633711`,SHARE:`GpE0e7`}}},playlist:{staging:{[y.US]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[y.US]:{VIDEO:`102630572`,SHARE:`b994n0`}}},shareVideo:{staging:{[y.US]:{VIDEO:`92095350`,SHARE:`DN8v4g`}},production:{[y.US]:{VIDEO:`100539256`,SHARE:`Ggvddm`}}}}};function ke(e,t=!0){let n=h(ne.currentUser()).data?.instanceRegion,r=h(A.config()),i=(r.data?.liteUrl.includes(`staging`)?K.TutorialVideoHighlight[e].staging:K.TutorialVideoHighlight[e].production)[n],o=r.data?.liteUrl.includes(`staging`)?K.Tutorial.staging[n]:K.Tutorial.production[n],{hasPermissions:s}=D(),c=i!==void 0&&!s(oe.StudentExperience),l=h(c&&j.sharedVideo(i.VIDEO,i.SHARE)),u=S(a.VideoHighlight);if(!t||!Object.keys(G).includes(e))return{shouldShowVideo:c,tutorialVideo:l,videoIds:i,playlistIds:o};let d={[W.Analytics]:u.hasDismissedAnalyticsTutorial,[W.OpenClassroom]:u.hasDismissedOpenClassroomsTutorial,[W.SearchAndDiscover]:u.hasDismissedSearchAndDiscoverTutorial,[W.CreateClassroom]:u.hasDismissedClassroomsTutorial,[W.Playlist]:u.hasDismissedPlaylistsTutorial,[W.ShareVideo]:u.hasDismissedMySharesTutorial,[W.UploadVideo]:u.hasDismissedMyVideosTutorial},f=G[e];return{shouldShowVideo:c,tutorialVideo:l,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:d[e]??null,dismissVideoHighlight:async()=>{!Object.keys(d).includes(e)||!f||await u.updateUserSettingAsync({name:f,value:!0,kind:de.Setting})}}}var Ae={video(e,t){return{url:_.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`thumbnail`,shareId:t}),key:`video:${e}`}}},q=ae(),je={topSearches(e,t,n,r){return{url:_.urlBuilder(`{gateway}/v1/analytics/search/top`,e),key:ye(`top:searches`,e),normalize:!1,success:t,error:n,always:r}}},Me=`reportsDashboard.topSearchesCardEmptyStateV2`;function Ne(){return(0,V.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,V.jsx)(g,{namespace:Me,phrase:`message`})})}function Pe(){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-50`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-75`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`})]})}var Fe=`reportsDashboard.topSearchesCardV2`;function Ie(){let e=M(`search`),t=h(je.topSearches(e)),n=z(E.getPrimarySearchUrl);return(0,V.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:t.data?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`h6 mb-3`,children:(0,V.jsx)(g,{namespace:Fe,phrase:`topSearches`})}),t.data.length?(0,V.jsx)(V.Fragment,{children:(0,V.jsx)(q.Scrollbars,{className:`position-relative`,children:(0,V.jsx)(`ol`,{className:`position-absolute w-100 ps-4`,children:t.data.map((e,t)=>(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsxs)(`a`,{href:n(e.query),target:`_blank`,className:`position-relative d-flex justify-content-between align-items-center pe-5`,children:[(0,V.jsx)(`span`,{children:e.query}),(0,V.jsx)(`div`,{className:`position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3`,children:(0,V.jsx)(te,{svg:le})})]})},t))})})}):(0,V.jsx)(Ne,{})]}):(0,V.jsx)(Pe,{})})}var Le=`reportsDashboard.topStreamsCardEmptyState`;function Re(){return(0,V.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,V.jsx)(g,{namespace:Le,phrase:`message`})})}function ze(){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`position-relative`,children:(0,V.jsx)(`ul`,{className:`list-unstyled position-absolute top-0 start-0 w-100 h-100`,children:Array(10).fill(null).map((e,t)=>(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsxs)(`div`,{className:`row g-0`,children:[(0,V.jsx)(`div`,{className:`col-5`,children:(0,V.jsx)(`div`,{className:`ratio ratio-16x9 rounded partial-loading-background`})}),(0,V.jsx)(`div`,{className:`col-7 d-flex align-items-center`,children:(0,V.jsxs)(`div`,{className:`mx-2 w-100`,children:[(0,V.jsx)(`div`,{className:`w-100 partial-loading-background mb-1`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`w-75 partial-loading-background`,children:`\xA0`})]})})]})},t))})})]})}var J=`reportsDashboard.topStreamsCard`,Be=b.encloseNamespace(J),Ve=10;function He(){let e=me(),t=M(`video-views`),n=h(L.topStreams(Ve,t)),r=R(n.data?.map(e=>e.objectId)??[],j.videos);return(0,V.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3`,children:n.hasCompleted&&!r.isFetching?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`h2`,{className:`h6 mb-3`,children:Be(`topVideos`)}),(0,V.jsx)(m,{appLink:{application:w.VIDEOS,action:C.Videos.TOP_VIDEOS},className:`text-info`,children:(0,V.jsx)(g,{namespace:J,phrase:`seeAll`})})]}),r.itemsArr?.length?(0,V.jsx)(q.Scrollbars,{className:`position-relative`,children:(0,V.jsx)(`div`,{className:`position-absolute w-100`,children:(0,V.jsx)(`ul`,{className:`list-unstyled`,children:n.data.map(t=>{let n=r.items[t.objectId];if(n)return(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsx)(m,{appLink:pe(n,e),children:(0,V.jsxs)(`div`,{className:`row g-0`,children:[(0,V.jsx)(`div`,{className:`col-5`,children:(0,V.jsx)(I,{video:n,imageOptions:{size:T.Small},textPosition:P.Independent,type:`cosmetic`,hideMask:!0,size:`sm`})}),(0,V.jsx)(`div`,{className:`col-7`,children:(0,V.jsxs)(`div`,{className:`d-flex flex-column mx-2`,children:[he.isVideoType(n)&&(0,V.jsx)(F,{type:`series`,video:n,analyticsOptions:null,className:`d-inline clamp-1`}),(0,V.jsx)(`span`,{className:`clamp-2 fw-medium`,children:n.name}),(0,V.jsx)(g,{namespace:J,phrase:`views`,options:{smartCount:t.combinedCount}})]})})]})})},n.id)})})})}):(0,V.jsx)(Re,{})]}):(0,V.jsx)(ze,{})})}var Ue={cogIcon:`_cogIcon_l8s08_1`},Y=`reportsDashboard.classroomViewsAlert`,X=b.encloseNamespace(Y);function Z(e){let[t,n]=re(ue.CLASSROOM_VIEWS_ALERT,!0,{storage:ie.LocalStorage});return!e.hasClassroomViews||!t?null:(0,V.jsxs)(`div`,{role:`alert`,className:`d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2`,children:[(0,V.jsxs)(`div`,{className:`d-flex align-items-center gap-1 ms-1`,children:[(0,V.jsx)(`span`,{className:`fw-bold`,children:(0,V.jsx)(g,{namespace:Y,phrase:`leadIn`})}),(0,V.jsx)(p,{customSize:!0,svg:Se,svgSize:ee.Standard,appLink:{application:w.DEFAULT,action:C.Default.CLASSROOM_VIEWS_POPUP},className:Ue.cogIcon,tooltip:X(`settingsTitle`),tooltipTrigger:[`hover`],ariaLabel:X(`settingsTitle`)}),(0,V.jsx)(g,{namespace:Y,phrase:`description`}),(0,V.jsx)(`a`,{className:`text-info`,href:O.getLiteArticle(k.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,children:(0,V.jsx)(g,{namespace:Y,phrase:`link`})})]}),(0,V.jsx)(p,{svg:v,className:`text-blue`,onClick:()=>n(!1)})]})}var Q={topRow:`_topRow_1oibi_1`,barChart:`_barChart_1oibi_4`,videoViews:`_videoViews_1oibi_8`,bottomRow:`_bottomRow_1oibi_12`,bottomColumn:`_bottomColumn_1oibi_15`},We=10,$=b.encloseNamespace(`reportsDashboard.schoolAnalyticsDashboard`);function Ge(){let e=fe(),{hasStudentReach:t}=S(a.VideoHighlight),n=$(e?`tertiaryDashboard`:`dashboard`),{shouldShowVideo:r,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=ke(W.Analytics),l=h(r&&Ae.video(i.VIDEO,i.SHARE)),u=z(E.getPrimaryObjectUrl),d=h(A.config()),f=E.getSharePlaylistUrl({id:se.Primary,order:0,name:``,url:d.data?.liteUrl,imageUrl:``},o?.SHARE);return ce({title:n}),ve(n),(0,V.jsxs)(`div`,{className:`d-flex flex-column gap-3`,children:[(0,V.jsx)(Z,{hasClassroomViews:t}),l?.data&&!s&&(0,V.jsx)(Oe,{video:l?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-blue`,supportArticle:O.getLiteArticle(k.ClassroomAnalytics),onDismiss:c,redirectUrl:u(l?.data),redirectPlaylistUrl:f,locationContext:a.VideoHighlight}),(0,V.jsxs)(`div`,{className:`d-flex gap-3 ${Q.topRow}`,children:[(0,V.jsx)(`div`,{className:Q.barChart,children:(0,V.jsx)(be,{type:`year_group`,appLink:{application:w.VIDEOS,action:C.Videos.HOME},appLinkText:$(`seeOverview`)})}),(0,V.jsx)(`div`,{className:Q.videoViews,children:(0,V.jsx)(xe,{type:`user_type`})})]}),(0,V.jsxs)(`div`,{className:`d-flex gap-3 ${Q.bottomRow}`,children:[(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(He,{})}),(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(_e,{type:ge.RootTopic,heading:$(`subjects`),appLink:{application:w.VIDEOS,action:C.Videos.HOME},appLinkText:$(`seeOverview`),emptyStateText:$(`emptySubjects`),limit:We})}),(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(Ie,{})})]})]})}export{Ge as SchoolAnalyticsDashboardView};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{$ as e,N as t,P as n,Q as r,R as i,U as a,V as o,W as s,et as c,in as l,nn as u,st as d,z as f}from"./CM0wW4AE.chunk.js";import{i as ee,r as te,t as p,v as m}from"./B01-hGyk.chunk.js";import{i as ne}from"./S6AM6CLE.chunk.js";import{d as h,n as g}from"./dUFTODMz.chunk.js";import{n as re,s as ie}from"./KyOyA3o8.chunk.js";import{t as ae}from"./NaTUzw6f.chunk.js";import{n as _}from"./CNQKHXPY.chunk.js";import{i as v,o as oe}from"./DYHGbCb9.chunk.js";import{t as y}from"./BXBnJv6U.chunk.js";import{t as b}from"./I5Dnl_eN.chunk.js";import{n as x,t as S}from"./C7JDFkYU.chunk.js";import{n as C,r as w}from"./H5KLIhR_.chunk.js";import{t as se}from"./CO7H3BC5.chunk.js";import{t as ce}from"./C7xZhn-Q.chunk.js";import{t as T}from"./DHk1ZJ0C.chunk.js";import{$ as E,F as le,I as D,M as ue,N as O,P as k,a as de,at as A,b as fe,h as j,l as pe,n as me,r as M,u as he}from"./app-m6P7KXE1.js";import{i as N,n as P,r as F,t as I}from"./DNZvrGV22.chunk.js";import{t as L}from"./DvxtrAxT2.chunk.js";import{t as R}from"./mApnhyGa2.chunk.js";import{m as z}from"./XgwoBT6z2.chunk.js";import{n as ge,t as _e}from"./BkkPVinl2.chunk.js";import{n as ve,t as ye}from"./I9MVVxo82.chunk.js";import{n as be,t as xe}from"./D0fFZDhm2.chunk.js";import{t as Se}from"./BY9ZIRoW2.chunk.js";d();var B={video:`_video_x45yw_1`,button:`_button_x45yw_5`,content:`_content_x45yw_9`,partialHighlight:`_partialHighlight_x45yw_14`},V=n();function Ce(){return(0,V.jsx)(`div`,{className:`w-100 ${B.partialHighlight}`,children:(0,V.jsxs)(`div`,{className:`row gx-3 h-100`,children:[(0,V.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,V.jsx)(`div`,{className:`rounded-3 ${B.video} partial-loading-background`})}),(0,V.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,V.jsx)(`div`,{className:`${B.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`${B.button} rounded-3 partial-loading-background me-2 d-inline-block`}),(0,V.jsx)(`div`,{className:`${B.button} rounded-3 partial-loading-background me-2 d-inline-block`})]})]})]})})}function we(e){return e.appLink?(0,V.jsx)(I,{video:e.video,commonVideoProps:e.commonVideoProps,appLink:e.appLink,analyticsOptions:{...e.analyticsOptions,location:e.locationContext},imageOptions:{size:T.Medium},type:`static`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0,alwaysShowIcon:!0}):(0,V.jsx)(`a`,{href:e.redirectUrl,target:`_blank`,onClick:()=>{t.logUserAction({videoId:e.video?.id},{...e.analyticsOptions,location:e.locationContext})},children:(0,V.jsx)(I,{video:e.video,imageOptions:{size:T.Medium},type:`cosmetic`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0})})}var H=`shared.videoHighlight`,Te={actionType:r.Click,descriptor:s.DismissWidget,entity:f.Widget,eventVersion:o.V1,location:a.VideoHighlight,workflowPhase:c.Complete},U={actionType:r.Click,descriptor:e.ViewOriginalVideo,workflowPhase:c.Complete,entity:f.Thumbnail,location:a.VideoHighlight,eventVersion:o.V1},Ee={actionType:r.Click,location:a.VideoHighlight,entity:f.AppLink,workflowPhase:c.Complete,descriptor:e.OpenInClickView,eventVersion:o.V1},De={actionType:r.Click,descriptor:i.SeeMore,workflowPhase:c.Complete,entity:f.AppLink,eventVersion:o.V1};function Oe(e){if(!e.video)return(0,V.jsx)(V.Fragment,{});function n(){t.logUserAction({videoId:e.video?.id},Te),e.onDismiss()}function r(e,n,r={}){t.logUserAction(r,n),typeof e==`string`?l.PageLoad(e,!0):u.trigger(e)}return e.video?(0,V.jsxs)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:[(0,V.jsxs)(`div`,{className:`row gx-3`,children:[(0,V.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,V.jsx)(we,{video:e.video,analyticsOptions:U,appLink:e.appLink,redirectUrl:e.redirectUrl,commonVideoProps:e.commonVideoProps,locationContext:e.locationContext})}),(0,V.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,V.jsxs)(`div`,{className:`overflow-hidden mt-lg-0 mt-2`,children:[(0,V.jsx)(N,{children:(0,V.jsx)(`span`,{onClick:()=>r(e.sharedPlaylistAppLink??e.redirectPlaylistUrl,Ee),className:`cursor-pointer`,children:e.subtitle})}),(0,V.jsx)(`div`,{className:`h5 mb-0 clamp-1 d-block`,children:(0,V.jsx)(`span`,{onClick:()=>r(e.appLink??e.redirectUrl,U),className:`cursor-pointer`,children:e.video?.name})}),(0,V.jsx)(`div`,{className:`mt-1 mb-2`,children:e.video?.description??e.description})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`button`,{className:`btn btn-dark me-2`,onClick:()=>r(e.appLink??e.redirectUrl,U,{videoId:e.video?.id}),children:(0,V.jsx)(g,{namespace:H,phrase:`watch`})}),(0,V.jsx)(`button`,{className:`btn btn-outline-dark me-2`,onClick:()=>r(e.supportArticle,{...De,location:e.locationContext},{url:e.supportArticle}),children:(0,V.jsx)(g,{namespace:H,phrase:`learnMore`})}),(0,V.jsx)(`div`,{className:`btn btn-outline-dark d-sm-none`,onClick:n,children:(0,V.jsx)(g,{namespace:H,phrase:`dismiss`})})]})]})]}),(0,V.jsx)(`div`,{className:`position-absolute top-0 end-0 p-2 d-sm-inline d-none`,children:(0,V.jsx)(p,{svg:v,onClick:n})})]}):(0,V.jsx)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:(0,V.jsx)(Ce,{})})}var W=function(e){return e.SearchAndDiscover=`searchAndDiscover`,e.Analytics=`analytics`,e.OpenClassroom=`openClassroom`,e.CreateClassroom=`createClassroom`,e.UploadVideo=`uploadVideo`,e.Playlist=`playlist`,e.ShareVideo=`shareVideo`,e}({}),G={[W.Analytics]:x.HasDismissedAnalyticsTutorial,[W.OpenClassroom]:x.HasDismissedOpenClassroomsTutorial,[W.SearchAndDiscover]:x.HasDismissedSearchAndDiscoverTutorial,[W.CreateClassroom]:x.HasDismissedClassroomsTutorial,[W.Playlist]:x.HasDismissedPlaylistsTutorial,[W.ShareVideo]:x.HasDismissedMySharesTutorial,[W.UploadVideo]:x.HasDismissedMyVideosTutorial},K={OlympicsTopics:{18:{id:`Oq9WnjA`,name:`2026 Milano Cortina Winter Olympic Games`},9:{id:`EoAYjoR`,name:`2026 Milano Cortina Winter Olympic Games`}},CommonwealthGameTopics:{12:{id:`AO0j90j`,name:`Commonwealth Games Glasgow 2026`},24:{id:`ZJxKkg1`,name:`Commonwealth Games Glasgow 2026`},16:{id:`agD7d73`,name:`Commonwealth Games Glasgow 2026`},47:{id:`m6mpl27`,name:`Commonwealth Games Glasgow 2026`},18:{id:`3bRp6eA`,name:`Commonwealth Games Glasgow 2026`},9:{id:`7mjAxYR`,name:`Commonwealth Games Glasgow 2026`}},PublicTranscriptVideoIds:`78902422.8139055.32102562.36875667.3713657.9900524.48278572.39424302.3712691.54504550.23852726.3713563.3714027.51281358.58785149.7322586.3716774.36554689.54192890.6689791.10749459.3712691.81764158.43772092.43974358.48091365.6430651.3713735.54096131.57977558.78840166.57738254.51666370.49858722`.split(`.`),SpecialEvents:{dlL00b3:{id:`dlL00b3`,iconUrl:`https://img.clickviewapp.com/v2/covers/PGbNp0`}},Classifications:{Twig:{EnglandSecondary:{HUB:`yrg5vYN`},ScotlandSecondary:{HUB:`Y69j14M`},InternationalSecondary:{HUB:`MYM6GGM`},NewZealandSecondary:{HUB:`agNmRd9`},CanadaMiddle:{HUB:`3brl1mY`},CanadaHigh:{HUB:`kZJ9vkz`}},Tigtag:{EnglandPrimary:{HUB:`D1218zx`,TIGTAG_HUB:`odldxPJ`,TIGTAG_JUNIOR_HUB:`nENExnL`},ScotlandPrimary:{HUB:`JjAONbj`,TIGTAG_HUB:`3bNAGl1`,TIGTAG_JUNIOR_HUB:`K6GKp43`},InternationalPrimary:{HUB:`W1xqbk2`,TIGTAG_HUB:`ek3dJr8`,TIGTAG_JUNIOR_HUB:`PGyKzpn`},NewZealandPrimary:{HUB:`odnkREE`,TIGTAG_HUB:`kZJ4RPa`,TIGTAG_JUNIOR_HUB:`zMg80DR`},CanadaElementary:{HUB:`JjabmDE`,TIGTAG_HUB:`dq9Ewje`,TIGTAG_JUNIOR_HUB:`bmElWrb`},CanadaMiddle:{HUB:`dq9EwyZ`,TIGTAG_HUB:`K6abxjP`,TIGTAG_JUNIOR_HUB:`7mwxLdR`}}},PresentationIds:{DEFAULT:1,DEFAULT_CURRICULUM:10,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,US_MIDDLE:14,US_HIGH:15,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Libraries:{LICENCED_CONTENT_COLLECTION:`3700633`,AU_PRIMARY:`10066675`,AU_SECONDARY:`59401330`,AU_TERTIARY:`5836680`,US_ELEMENTARY:`38693445`,US_MIDDLE:`39642303`,US_HIGH:`38693435`,CA_ELEMENTARY:`92862332`,CA_MIDDLE:`92862334`,CA_HIGH:`92862344`,STREAMABLE_LEARNING:`78688869`,ENG_PRIMARY:`35340580`,ENG_SECONDARY:`59889793`,SCT_PRIMARY:`33386791`,SCT_SECONDARY:`59856733`,UK_TERTIARY:`5815036`,INT_PRIMARY:`3706428`,INT_SECONDARY:`3706459`,NZ_PRIMARY:`3705693`,NZ_SECONDARY:`3705710`,NZ_MTV:`26989676`,TWIG:`88117784`,TIGTAG:`80333935`},Rostering:{sources:{0:{name:`Unknown`,iconUrl:``},1:{name:`Clever`,iconUrl:`https://img.clickviewapp.com/v2/logos/LqlKgd`},2:{name:`ClassLink`,iconUrl:`https://img.clickviewapp.com/v2/logos/ZA2ew5`},3:{name:`Google`,iconUrl:`https://img.clickviewapp.com/v2/logos/l5x0jL`},4:{name:`Microsoft`,iconUrl:`https://img.clickviewapp.com/v2/logos/xAxGPP`},5:{name:`Schoology`,iconUrl:`https://img.clickviewapp.com/v2/logos/kZNEyz`},6:{name:`PowerSchool`,iconUrl:`https://img.clickviewapp.com/v2/logos/m6aDmR`}}},Images:{Level_1:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dlM73E`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/WAe8MP`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/raRm7E`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/3kzeZ2`},Level_2:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/WAeKvP`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/9DAZJv`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/eKG2bq`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/xyn5eP`},Level_3:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dl1d0g`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/R0Pz7A`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/8LYZ9R`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/nKDyRj`},Level_4:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/vYJPP5`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/PGPLLP`},TOPIC_DEFAULT_BANNER:`https://img.clickviewapp.com/v2/banners/yKvoG0`,STREAMABLE_TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/q6gnOn`,STREAMABLE_TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/age95g`},Onboarding:{Playlist:{COVER_FILE_ID:`G149g3`,BANNER_FILE_ID:`bmPLkn`},LOADING_THUMBNAILS:`https://img.clickviewapp.com/v2/thumbnails/7m34ne,https://img.clickviewapp.com/v2/thumbnails/W1bjqJ,https://img.clickviewapp.com/v2/thumbnails/G14M1e,https://img.clickviewapp.com/v2/thumbnails/2mnv5x,https://img.clickviewapp.com/v2/thumbnails/xAEG91,https://img.clickviewapp.com/v2/thumbnails/agnbyg,https://img.clickviewapp.com/v2/thumbnails/W13emP,https://img.clickviewapp.com/v2/thumbnails/Y6j2vy,https://img.clickviewapp.com/v2/thumbnails/W1MJGE,https://img.clickviewapp.com/v2/thumbnails/OqDJqG,https://img.clickviewapp.com/v2/thumbnails/1My9Wn,https://img.clickviewapp.com/v2/thumbnails/G14MRe,https://img.clickviewapp.com/v2/thumbnails/5bgKpl,https://img.clickviewapp.com/v2/thumbnails/agnbp9,https://img.clickviewapp.com/v2/thumbnails/G147R1,https://img.clickviewapp.com/v2/thumbnails/5bgMz5,https://img.clickviewapp.com/v2/thumbnails/G14Me5,https://img.clickviewapp.com/v2/thumbnails/5bEovE,https://img.clickviewapp.com/v2/thumbnails/odY4oZ,https://img.clickviewapp.com/v2/thumbnails/yrqwqD,https://img.clickviewapp.com/v2/thumbnails/K6pOmR,https://img.clickviewapp.com/v2/thumbnails/vYK3w4,https://img.clickviewapp.com/v2/thumbnails/agnD88,https://img.clickviewapp.com/v2/thumbnails/4rKmp7,https://img.clickviewapp.com/v2/thumbnails/0wM4r3,https://img.clickviewapp.com/v2/thumbnails/69A2jO,https://img.clickviewapp.com/v2/thumbnails/7m3Z3e,https://img.clickviewapp.com/v2/thumbnails/3bGL94,https://img.clickviewapp.com/v2/thumbnails/Y6jwLo,https://img.clickviewapp.com/v2/thumbnails/1MyPby`.split(`,`)},Tutorial:{staging:{[y.AU]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.NZ]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.UK]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[y.US]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`}},production:{[y.AU]:{PLAYLIST:``,SHARE:``},[y.NZ]:{PLAYLIST:``,SHARE:``},[y.UK]:{PLAYLIST:``,SHARE:``},[y.US]:{PLAYLIST:`103312110`,SHARE:`jWy8VY`}}},TutorialVideoHighlight:{analytics:{staging:{[y.US]:{VIDEO:`92095356`,SHARE:`DN8vMg`}},production:{[y.US]:{VIDEO:`102633825`,SHARE:`Ggg8mp`}}},searchAndDiscover:{staging:{[y.US]:{VIDEO:`92095348`,SHARE:`G2Ylra`}},production:{[y.US]:{VIDEO:`102633632`,SHARE:`Dem5BK`}}},openClassroom:{staging:{[y.US]:{VIDEO:`92095362`,SHARE:`bwXY5w`}},production:{[y.US]:{VIDEO:`100539257`,SHARE:`Dv7nnq`}}},createClassroom:{staging:{[y.US]:{VIDEO:`92095338`,SHARE:`Gm0kXY`}},production:{[y.US]:{VIDEO:`102633076`,SHARE:`bZR5OR`}}},uploadVideo:{staging:{[y.US]:{VIDEO:`92095354`,SHARE:`Dk90O8`}},production:{[y.US]:{VIDEO:`102633711`,SHARE:`GpE0e7`}}},playlist:{staging:{[y.US]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[y.US]:{VIDEO:`102630572`,SHARE:`b994n0`}}},shareVideo:{staging:{[y.US]:{VIDEO:`92095350`,SHARE:`DN8v4g`}},production:{[y.US]:{VIDEO:`100539256`,SHARE:`Ggvddm`}}}}};function ke(e,t=!0){let n=h(ne.currentUser()).data?.instanceRegion,r=h(A.config()),i=(r.data?.liteUrl.includes(`staging`)?K.TutorialVideoHighlight[e].staging:K.TutorialVideoHighlight[e].production)[n],o=r.data?.liteUrl.includes(`staging`)?K.Tutorial.staging[n]:K.Tutorial.production[n],{hasPermissions:s}=D(),c=i!==void 0&&!s(oe.StudentExperience),l=h(c&&j.sharedVideo(i.VIDEO,i.SHARE)),u=S(a.VideoHighlight);if(!t||!Object.keys(G).includes(e))return{shouldShowVideo:c,tutorialVideo:l,videoIds:i,playlistIds:o};let d={[W.Analytics]:u.hasDismissedAnalyticsTutorial,[W.OpenClassroom]:u.hasDismissedOpenClassroomsTutorial,[W.SearchAndDiscover]:u.hasDismissedSearchAndDiscoverTutorial,[W.CreateClassroom]:u.hasDismissedClassroomsTutorial,[W.Playlist]:u.hasDismissedPlaylistsTutorial,[W.ShareVideo]:u.hasDismissedMySharesTutorial,[W.UploadVideo]:u.hasDismissedMyVideosTutorial},f=G[e];return{shouldShowVideo:c,tutorialVideo:l,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:d[e]??null,dismissVideoHighlight:async()=>{!Object.keys(d).includes(e)||!f||await u.updateUserSettingAsync({name:f,value:!0,kind:de.Setting})}}}var Ae={video(e,t){return{url:_.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`thumbnail`,shareId:t}),key:`video:${e}`}}},q=ae(),je={topSearches(e,t,n,r){return{url:_.urlBuilder(`{gateway}/v1/analytics/search/top`,e),key:ye(`top:searches`,e),normalize:!1,success:t,error:n,always:r}}},Me=`reportsDashboard.topSearchesCardEmptyStateV2`;function Ne(){return(0,V.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,V.jsx)(g,{namespace:Me,phrase:`message`})})}function Pe(){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-50`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-75`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`})]})}var Fe=`reportsDashboard.topSearchesCardV2`;function Ie(){let e=M(`search`),t=h(je.topSearches(e)),n=z(E.getPrimarySearchUrl);return(0,V.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:t.data?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`h6 mb-3`,children:(0,V.jsx)(g,{namespace:Fe,phrase:`topSearches`})}),t.data.length?(0,V.jsx)(V.Fragment,{children:(0,V.jsx)(q.Scrollbars,{className:`position-relative`,children:(0,V.jsx)(`ol`,{className:`position-absolute w-100 ps-4`,children:t.data.map((e,t)=>(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsxs)(`a`,{href:n(e.query),target:`_blank`,className:`position-relative d-flex justify-content-between align-items-center pe-5`,children:[(0,V.jsx)(`span`,{children:e.query}),(0,V.jsx)(`div`,{className:`position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3`,children:(0,V.jsx)(te,{svg:le})})]})},t))})})}):(0,V.jsx)(Ne,{})]}):(0,V.jsx)(Pe,{})})}var Le=`reportsDashboard.topStreamsCardEmptyState`;function Re(){return(0,V.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,V.jsx)(g,{namespace:Le,phrase:`message`})})}function ze(){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`position-relative`,children:(0,V.jsx)(`ul`,{className:`list-unstyled position-absolute top-0 start-0 w-100 h-100`,children:Array(10).fill(null).map((e,t)=>(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsxs)(`div`,{className:`row g-0`,children:[(0,V.jsx)(`div`,{className:`col-5`,children:(0,V.jsx)(`div`,{className:`ratio ratio-16x9 rounded partial-loading-background`})}),(0,V.jsx)(`div`,{className:`col-7 d-flex align-items-center`,children:(0,V.jsxs)(`div`,{className:`mx-2 w-100`,children:[(0,V.jsx)(`div`,{className:`w-100 partial-loading-background mb-1`,children:`\xA0`}),(0,V.jsx)(`div`,{className:`w-75 partial-loading-background`,children:`\xA0`})]})})]})},t))})})]})}var J=`reportsDashboard.topStreamsCard`,Be=b.encloseNamespace(J),Ve=10;function He(){let e=me(),t=M(`video-views`),n=h(L.topStreams(Ve,t)),r=R(n.data?.map(e=>e.objectId)??[],j.videos);return(0,V.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3`,children:n.hasCompleted&&!r.isFetching?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,V.jsx)(`h2`,{className:`h6 mb-3`,children:Be(`topVideos`)}),(0,V.jsx)(m,{appLink:{application:w.VIDEOS,action:C.Videos.TOP_VIDEOS},className:`text-info`,children:(0,V.jsx)(g,{namespace:J,phrase:`seeAll`})})]}),r.itemsArr?.length?(0,V.jsx)(q.Scrollbars,{className:`position-relative`,children:(0,V.jsx)(`div`,{className:`position-absolute w-100`,children:(0,V.jsx)(`ul`,{className:`list-unstyled`,children:n.data.map(t=>{let n=r.items[t.objectId];if(n)return(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsx)(m,{appLink:pe(n,e),children:(0,V.jsxs)(`div`,{className:`row g-0`,children:[(0,V.jsx)(`div`,{className:`col-5`,children:(0,V.jsx)(I,{video:n,imageOptions:{size:T.Small},textPosition:P.Independent,type:`cosmetic`,hideMask:!0,size:`sm`})}),(0,V.jsx)(`div`,{className:`col-7`,children:(0,V.jsxs)(`div`,{className:`d-flex flex-column mx-2`,children:[he.isVideoType(n)&&(0,V.jsx)(F,{type:`series`,video:n,analyticsOptions:null,className:`d-inline clamp-1`}),(0,V.jsx)(`span`,{className:`clamp-2 fw-medium`,children:n.name}),(0,V.jsx)(g,{namespace:J,phrase:`views`,options:{smartCount:t.combinedCount}})]})})]})})},n.id)})})})}):(0,V.jsx)(Re,{})]}):(0,V.jsx)(ze,{})})}var Ue={cogIcon:`_cogIcon_l8s08_1`},Y=`reportsDashboard.classroomViewsAlert`,X=b.encloseNamespace(Y);function Z(e){let[t,n]=re(ue.CLASSROOM_VIEWS_ALERT,!0,{storage:ie.LocalStorage});return!e.hasClassroomViews||!t?null:(0,V.jsxs)(`div`,{role:`alert`,className:`d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2`,children:[(0,V.jsxs)(`div`,{className:`d-flex align-items-center gap-1 ms-1`,children:[(0,V.jsx)(`span`,{className:`fw-bold`,children:(0,V.jsx)(g,{namespace:Y,phrase:`leadIn`})}),(0,V.jsx)(p,{customSize:!0,svg:Se,svgSize:ee.Standard,appLink:{application:w.DEFAULT,action:C.Default.CLASSROOM_VIEWS_POPUP},className:Ue.cogIcon,tooltip:X(`settingsTitle`),tooltipTrigger:[`hover`],ariaLabel:X(`settingsTitle`)}),(0,V.jsx)(g,{namespace:Y,phrase:`description`}),(0,V.jsx)(`a`,{className:`text-info`,href:O.getLiteArticle(k.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,children:(0,V.jsx)(g,{namespace:Y,phrase:`link`})})]}),(0,V.jsx)(p,{svg:v,className:`text-blue`,onClick:()=>n(!1)})]})}var Q={topRow:`_topRow_1oibi_1`,barChart:`_barChart_1oibi_4`,videoViews:`_videoViews_1oibi_8`,bottomRow:`_bottomRow_1oibi_12`,bottomColumn:`_bottomColumn_1oibi_15`},We=10,$=b.encloseNamespace(`reportsDashboard.schoolAnalyticsDashboard`);function Ge(){let e=fe(),{hasStudentReach:t}=S(a.VideoHighlight),n=$(e?`tertiaryDashboard`:`dashboard`),{shouldShowVideo:r,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=ke(W.Analytics),l=h(r&&Ae.video(i.VIDEO,i.SHARE)),u=z(E.getPrimaryObjectUrl),d=h(A.config()),f=E.getSharePlaylistUrl({id:se.Primary,order:0,name:``,url:d.data?.liteUrl,imageUrl:``},o?.SHARE);return ce({title:n}),ve(n),(0,V.jsxs)(`div`,{className:`d-flex flex-column gap-3`,children:[(0,V.jsx)(Z,{hasClassroomViews:t}),l?.data&&!s&&(0,V.jsx)(Oe,{video:l?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-blue`,supportArticle:O.getLiteArticle(k.ClassroomAnalytics),onDismiss:c,redirectUrl:u(l?.data),redirectPlaylistUrl:f,locationContext:a.VideoHighlight}),(0,V.jsxs)(`div`,{className:`d-flex gap-3 ${Q.topRow}`,children:[(0,V.jsx)(`div`,{className:Q.barChart,children:(0,V.jsx)(be,{type:`year_group`,appLink:{application:w.VIDEOS,action:C.Videos.HOME},appLinkText:$(`seeOverview`)})}),(0,V.jsx)(`div`,{className:Q.videoViews,children:(0,V.jsx)(xe,{type:`user_type`})})]}),(0,V.jsxs)(`div`,{className:`d-flex gap-3 ${Q.bottomRow}`,children:[(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(He,{})}),(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(_e,{type:ge.RootTopic,heading:$(`subjects`),appLink:{application:w.VIDEOS,action:C.Videos.HOME},appLinkText:$(`seeOverview`),emptyStateText:$(`emptySubjects`),limit:We})}),(0,V.jsx)(`div`,{className:Q.bottomColumn,children:(0,V.jsx)(Ie,{})})]})]})}export{Ge as SchoolAnalyticsDashboardView};
|
|
2
|
+
//# sourceMappingURL=CPp4jaPB2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DTy5e0Yv2.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\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 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: '',\n SHARE: ''\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.US]: {\n PLAYLIST: '103312110',\n SHARE: 'jWy8VY'\n }\n }\n },\n TutorialVideoHighlight: {\n analytics: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633825',\n SHARE: 'Ggg8mp'\n }\n }\n },\n searchAndDiscover: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633632',\n SHARE: 'Dem5BK'\n }\n }\n },\n openClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '100539257',\n SHARE: 'Dv7nnq'\n }\n }\n },\n createClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633076',\n SHARE: 'bZR5OR'\n }\n }\n },\n uploadVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633711',\n SHARE: 'GpE0e7'\n }\n }\n },\n playlist: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102630572',\n SHARE: 'b994n0'\n }\n }\n },\n shareVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '100539256',\n SHARE: 'Ggvddm'\n }\n }\n }\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\nexport function useTutorialVideoHighlight(\n type: TutorialVideoType,\n requireDismissal: boolean = true\n) {\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.staging[instanceRegion] :\n HardCoded.Tutorial.production[instanceRegion];\n\n const { hasPermissions } = usePermissions();\n\n // if the user is not signed in or not a student, this should fetch the video\n const shouldShowVideo = videoIds !== undefined && !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';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\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 { ViewModelKeys } from 'shared/constants/ReportsViewModels';\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 [ show, setShow ] = useViewModel(\n ViewModelKeys.CLASSROOM_VIEWS_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n if (!props.hasClassroomViews || !show)\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 <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\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 <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 </div>\n <IconButton svg={CloseSvg} className='text-blue' onClick={() => setShow(false)} />\n </div>\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":"83CCIA,SAAgB,IAAwB,CACtC,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,SAAS,EAAO,6BAC9B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0BAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sDACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,aAAa,EAAO,MAAM,6BAA+B,CAAA,CACrE,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+EAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,QAAQ,oEAA2E,CAAA,EAC7G,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,OAAO,2DAA8D,CAAA,EAC/F,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,OAAO,2DAA8D,CAAA,CAC3F,CAAA,CAAA,CAAA,MAGN,CAAA,CCEV,SAAgB,GAAwB,EAAqC,CAsB3E,OArBI,EAAM,SAEN,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAM,MACb,iBAAkB,EAAM,iBACxB,QAAS,EAAM,QACf,iBAAkB,CAChB,GAAG,EAAM,iBACT,SAAU,EAAM,gBACjB,CACD,aAAc,CAAE,KAAM,EAAU,OAAQ,CACxC,KAAK,SACL,KAAK,KACL,aAAA,GACA,WAAA,GACA,cAAA,GACA,eAAA,GACA,CAAA,EAKJ,EAAA,EAAA,KAAC,IAAD,CACE,KAAM,EAAM,YACZ,OAAO,SACP,YAAe,CACb,EAAgB,cACd,CAAE,QAAS,EAAM,OAAO,GAAI,CAC5B,CAAE,GAAG,EAAM,iBAAkB,SAAU,EAAM,gBAAiB,CAC/D,YAGH,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EAAM,MACb,aAAc,CAAE,KAAM,EAAU,OAAQ,CACxC,KAAK,WACL,KAAK,KACL,aAAA,GACA,WAAA,GACA,cAAA,GACA,CAAA,CACA,CAAA,CC9BR,IAAM,EAAY,wBAEZ,GAA0B,CAC9B,WAAY,EAAW,MACvB,WAAY,EAAqB,cACjC,OAAQ,EAAW,OACnB,aAAc,EAAa,GAC3B,SAAU,EAAgB,eAC1B,cAAe,EAAc,SAC9B,CAEK,EAAwB,CAC5B,WAAY,EAAW,MACvB,WAAY,EAAsB,kBAClC,cAAe,EAAc,SAC7B,OAAQ,EAAW,UACnB,SAAU,EAAgB,eAC1B,aAAc,EAAa,GAC5B,CAEK,GAA0B,CAC9B,WAAY,EAAW,MACvB,SAAU,EAAgB,eAC1B,OAAQ,EAAW,QACnB,cAAe,EAAc,SAC7B,WAAY,EAAsB,gBAClC,aAAc,EAAa,GAC5B,CAEK,GAA8B,CAClC,WAAY,EAAW,MACvB,WAAY,EAAgB,QAC5B,cAAe,EAAc,SAC7B,OAAQ,EAAW,QACnB,aAAc,EAAa,GAC5B,CAED,SAAgB,GAAe,EAA4B,CACzD,GAAI,CAAC,EAAM,MAAO,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CAE9B,SAAS,GAAyB,CAChC,EAAgB,cAAc,CAAE,QAAS,EAAM,OAAO,GAAI,CAAE,GAAwB,CACpF,EAAM,WAAW,CAGnB,SAAS,EACP,EACA,EACA,EAA4B,EAAE,CAC9B,CACA,EAAgB,cAAc,EAAe,EAAiB,CAC1D,OAAO,GAAS,SAClB,EAAc,SAAS,EAAM,GAAK,CAElC,EAAc,QAAQ,EAAK,CAY/B,OARK,EAAM,OAST,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,mCAAmC,EAAM,kBAAoB,cAA7E,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sDACb,EAAA,EAAA,KAAC,GAAD,CACE,MAAO,EAAM,MACb,iBAAkB,EAClB,QAAS,EAAM,QACf,YAAa,EAAM,YACnB,iBAAkB,EAAM,iBACxB,gBAAiB,EAAM,gBACvB,CAAA,CACE,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+EAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,wCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,OAAD,CACE,YACE,EAAQ,EAAM,uBAAyB,EAAM,oBAAqB,GAAwB,CAE5F,UAAU,0BACV,EAAM,SAAgB,CAAA,CACX,CAAA,EACf,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oCACb,EAAA,EAAA,KAAC,OAAD,CACE,YAAe,EAAQ,EAAM,SAAW,EAAM,YAAa,EAAsB,CACjF,UAAU,0BAET,EAAM,OAAO,KACT,CAAA,CACH,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qBAAa,EAAM,OAAO,aAAe,EAAM,YAAkB,CAAA,KAElF,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,SAAD,CACE,UAAU,oBACV,YACE,EAAQ,EAAM,SAAW,EAAM,YAAa,EAAuB,CAAE,QAAS,EAAM,OAAO,GAAI,CAAC,WAElG,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,QAAS,CAAA,CACrC,CAAA,EACT,EAAA,EAAA,KAAC,SAAD,CACE,UAAU,4BACV,YAAe,EACb,EAAM,eACN,CAAE,GAAG,GAA6B,SAAU,EAAM,gBAAiB,CACnE,CAAE,IAAK,EAAM,eAAgB,CAC9B,WAED,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,YAAa,CAAA,CACzC,CAAA,EACT,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,iCACV,QAAS,YAET,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,EAAW,OAAO,UAAW,CAAA,CAC1C,CAAA,CACF,CAAA,CAAA,CAAA,OAGV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iEACb,EAAA,EAAA,KAAC,EAAD,CACE,IAAK,EACL,QAAS,EACT,CAAA,CACE,CAAA,CAAA,IAvEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,mCAAmC,EAAM,kBAAoB,eAC3E,EAAA,EAAA,KAAC,GAAD,EAAwB,CAAA,CACpB,CAAA,CC5FZ,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,kBAAA,oBACA,EAAA,UAAA,YACA,EAAA,cAAA,gBACA,EAAA,gBAAA,kBACA,EAAA,YAAA,cACA,EAAA,SAAA,WACA,EAAA,WAAA,mBACD,CAGY,EAA0F,EACpG,EAAkB,WAAY,EAAY,+BAC1C,EAAkB,eAAgB,EAAY,oCAC9C,EAAkB,mBAAoB,EAAY,uCAClD,EAAkB,iBAAkB,EAAY,gCAChD,EAAkB,UAAW,EAAY,+BACzC,EAAkB,YAAa,EAAY,8BAC3C,EAAkB,aAAc,EAAY,6BAC9C,CCpBY,EAAY,CACvB,eAAgB,CAEb,GAAO,CACN,GAAI,UACJ,KAAM,2CACP,CAEA,EAAM,CACL,GAAI,UACJ,KAAM,2CACP,CACF,CACD,uBAAwB,CAErB,GAAO,CACN,GAAI,UACJ,KAAM,kCACP,CAEA,GAAO,CACN,GAAI,UACJ,KAAM,kCACP,CAEA,GAAO,CACN,GAAI,UACJ,KAAM,kCACP,CAEA,GAAO,CACN,GAAI,UACJ,KAAM,kCACP,CAEA,GAAO,CACN,GAAI,UACJ,KAAM,kCACP,CAEA,EAAM,CACL,GAAI,UACJ,KAAM,kCACP,CACF,CACD,yBAA0B,kTAmCzB,CACD,cAAe,CACb,QAAS,CACP,GAAI,UACJ,QAAS,gDACV,CACF,CACD,gBAAiB,CACf,KAAM,CACJ,iBAAkB,CAChB,IAAK,UACN,CACD,kBAAmB,CACjB,IAAK,UACN,CACD,uBAAwB,CACtB,IAAK,UACN,CACD,oBAAqB,CACnB,IAAK,UACN,CACD,aAAc,CACZ,IAAK,UACN,CACD,WAAY,CACV,IAAK,UACN,CACF,CACD,OAAQ,CACN,eAAgB,CACd,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACD,gBAAiB,CACf,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACD,qBAAsB,CACpB,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACD,kBAAmB,CACjB,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACD,iBAAkB,CAChB,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACD,aAAc,CACZ,IAAK,UACL,WAAY,UACZ,kBAAmB,UACpB,CACF,CACF,CAED,gBAAiB,CACf,QAAS,EACT,mBAAoB,GAEpB,WAAY,GACZ,aAAc,EACd,YAAa,GACb,cAAe,GACf,UAAW,GACX,QAAS,GACT,cAAe,IACf,UAAW,IACX,QAAS,IACT,oBAAqB,GACrB,YAAa,GACb,cAAe,GACf,YAAa,GACb,cAAe,GACf,YAAa,GACb,YAAa,GACb,cAAe,GACf,WAAY,GACZ,aAAc,GACf,CACD,UAAW,CACT,4BAA6B,UAE7B,WAAY,WACZ,aAAc,WACd,YAAa,UACb,cAAe,WACf,UAAW,WACX,QAAS,WACT,cAAe,WACf,UAAW,WACX,QAAS,WACT,oBAAqB,WACrB,YAAa,WACb,cAAe,WACf,YAAa,WACb,cAAe,WACf,YAAa,UACb,YAAa,UACb,cAAe,UACf,WAAY,UACZ,aAAc,UACd,OAAQ,WAER,KAAM,WACN,OAAQ,WACT,CACD,UAAW,CACT,QAAS,CACP,EAAG,CAAE,KAAM,UAAW,QAAS,GAAI,CACnC,EAAG,CAAE,KAAM,SAAU,QAAS,+CAAgD,CAC9E,EAAG,CAAE,KAAM,YAAa,QAAS,+CAAgD,CACjF,EAAG,CAAE,KAAM,SAAU,QAAS,+CAAgD,CAC9E,EAAG,CAAE,KAAM,YAAa,QAAS,+CAAgD,CACjF,EAAG,CAAE,KAAM,YAAa,QAAS,+CAAgD,CACjF,EAAG,CAAE,KAAM,cAAe,QAAS,+CAAgD,CACpF,CACF,CACD,OAAQ,CACN,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,iDACtB,CACD,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,iDACtB,CACD,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,iDACtB,CACD,QAAS,CACP,aAAc,iDACd,YAAa,gDACd,CACD,qBAAsB,iDACtB,wBAAyB,iDACzB,uBAAwB,gDACzB,CACD,WAAY,CACV,SAAU,CACR,cAAe,SACf,eAAgB,SACjB,CACD,mBAAoB,w+CA+BnB,CACF,CACD,SAAU,CACR,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,GACV,MAAO,GACR,EACA,EAAe,IAAK,CACnB,SAAU,GACV,MAAO,GACR,EACA,EAAe,IAAK,CACnB,SAAU,GACV,MAAO,GACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACD,uBAAwB,CACtB,UAAW,CACT,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,kBAAmB,CACjB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,cAAe,CACb,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,gBAAiB,CACf,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,YAAa,CACX,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,SAAU,CACR,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,WAAY,CACV,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACF,CACF,CC1YD,SAAgB,GACd,EACA,EAA4B,GAC5B,CAEA,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,YA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"}
|
|
1
|
+
{"version":3,"file":"CPp4jaPB2.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\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 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: '',\n SHARE: ''\n },\n [InstanceRegion.NZ]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.UK]: {\n PLAYLIST: '',\n SHARE: ''\n },\n [InstanceRegion.US]: {\n PLAYLIST: '103312110',\n SHARE: 'jWy8VY'\n }\n }\n },\n TutorialVideoHighlight: {\n analytics: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095356',\n SHARE: 'DN8vMg'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633825',\n SHARE: 'Ggg8mp'\n }\n }\n },\n searchAndDiscover: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095348',\n SHARE: 'G2Ylra'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633632',\n SHARE: 'Dem5BK'\n }\n }\n },\n openClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095362',\n SHARE: 'bwXY5w'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '100539257',\n SHARE: 'Dv7nnq'\n }\n }\n },\n createClassroom: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095338',\n SHARE: 'Gm0kXY'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633076',\n SHARE: 'bZR5OR'\n }\n }\n },\n uploadVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095354',\n SHARE: 'Dk90O8'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102633711',\n SHARE: 'GpE0e7'\n }\n }\n },\n playlist: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095342',\n SHARE: 'b9P51m'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '102630572',\n SHARE: 'b994n0'\n }\n }\n },\n shareVideo: {\n staging: {\n [InstanceRegion.US]: {\n VIDEO: '92095350',\n SHARE: 'DN8v4g'\n }\n },\n production: {\n [InstanceRegion.US]: {\n VIDEO: '100539256',\n SHARE: 'Ggvddm'\n }\n }\n }\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\nexport function useTutorialVideoHighlight(\n type: TutorialVideoType,\n requireDismissal: boolean = true\n) {\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.staging[instanceRegion] :\n HardCoded.Tutorial.production[instanceRegion];\n\n const { hasPermissions } = usePermissions();\n\n // if the user is not signed in or not a student, this should fetch the video\n const shouldShowVideo = videoIds !== undefined && !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';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\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 { ViewModelKeys } from 'shared/constants/ReportsViewModels';\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 [ show, setShow ] = useViewModel(\n ViewModelKeys.CLASSROOM_VIEWS_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n if (!props.hasClassroomViews || !show)\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 <span className='fw-bold'>\n <Text namespace={namespace} phrase='leadIn' />\n </span>\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 <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 </div>\n <IconButton svg={CloseSvg} className='text-blue' onClick={() => setShow(false)} />\n </div>\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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AAe,IAAK,CACnB,SAAU,GACV,MAAO,GACR,EACA,EAAe,IAAK,CACnB,SAAU,YACV,MAAO,SACR,CACF,CACF,CACD,uBAAwB,CACtB,UAAW,CACT,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,kBAAmB,CACjB,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,cAAe,CACb,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,gBAAiB,CACf,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,YAAa,CACX,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,SAAU,CACR,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACD,WAAY,CACV,QAAS,EACN,EAAe,IAAK,CACnB,MAAO,WACP,MAAO,SACR,CACF,CACD,WAAY,EACT,EAAe,IAAK,CACnB,MAAO,YACP,MAAO,SACR,CACF,CACF,CACF,CACF,CC1YD,SAAgB,GACd,EACA,EAA4B,GAC5B,CAEA,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,YA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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Jn as e,P as t,ct as n,st as r}from"./CM0wW4AE.chunk.js";import{i,r as a,v as o}from"./B01-hGyk.chunk.js";import{n as s}from"./DHk1ZJ0C.chunk.js";import{t as c}from"./qnBOI0yM.chunk.js";import{n as l}from"./nTOBPrI-2.chunk.js";import{n as u}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{Jn as e,P as t,ct as n,st as r}from"./CM0wW4AE.chunk.js";import{i,r as a,v as o}from"./B01-hGyk.chunk.js";import{n as s}from"./DHk1ZJ0C.chunk.js";import{t as c}from"./qnBOI0yM.chunk.js";import{n as l}from"./nTOBPrI-2.chunk.js";import{n as u}from"./DvxtrAxT2.chunk.js";function d(e={}){let{prevent:t,rootMargin:n,triggerOnce:r=!0}=e,[i,a,o]=u({triggerOnce:r,rootMargin:n});return(t===!0||window.IntersectionObserver===void 0)&&(a=!0,i=null),{ref:i,inView:a,initialized:!!o}}var f={image:`_image_pp6me_1`},p=e(r()),m=t(),h=`500px`,g=`data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=`,_=p.memo(function(e){let{forceLoad:t,extraClasses:n=``,errorFallbackImageSrc:r,preventLoad:i=!1,errorFallbackImageClassName:a,src:o,alt:s,...c}=e,{ref:l,inView:u}=d({rootMargin:h}),[_,v]=p.useState(!1);p.useEffect(()=>{if(!t&&!u||i)return;let e=new Image;return e.onerror=()=>{v(!0),r&&(e.src=r)},e.src=o,()=>e.onerror=null},[u,i]);function y(){return _&&r?r:e.src}if(_&&!r)return(0,m.jsx)(m.Fragment,{});if(!l)return(0,m.jsx)(`img`,{className:`${f.image} ${n} ${_&&a||``}`,alt:s,src:y(),...c});let b={alt:s,...c,...(u||t)&&!i?{src:y()}:{src:g}};return t||(b.ref=l),(0,m.jsx)(`img`,{className:`${f.image} ${n} ${_&&a||``}`,...b})}),v={image:`_image_1himm_1`,thumbnail:`_thumbnail_1himm_13`,tallPoster:`_tallPoster_1himm_16`,cover:`_cover_1himm_19`,banner:`_banner_1himm_22`,poster:`_poster_1himm_25`,pdf:`_pdf_1himm_28`,link:`_link_1himm_31`};function y(e){let t=v.image,n=``;return e.imageType===s.Thumbnails&&(n=`thumbnail ${v.thumbnail}`),e.imageType===s.TallPosters&&(n=v.tallPoster),e.imageType===s.Covers&&(n=v.cover),e.imageType===s.Banners&&(n=v.banner),e.imageType===s.Posters&&(n=v.poster),e.imageType===s.Pdf&&(n=v.pdf),e.imageType===s.Link&&(n=v.link),n&&(t+=` ${n}`),e.className&&(t+=` ${e.className}`),t}function b(e){let{data:t,imageOptions:r,appLink:i,preload:a,preventLoad:s,analyticsOptions:l,analyticsData:u,imageClassName:d,alt:f}=e,p=``;typeof t==`string`?p=t:n.isObject(t)&&(p=t.url);let h=p&&r?c.createUrl(p,r):p;return(0,m.jsx)(`div`,{className:y(e),style:e.imageStyle,children:(0,m.jsxs)(o,{appLink:i,analyticsData:u,analyticsOptions:l,onClick:e.onClick,preventFocus:e.preventFocus,className:e.appLinkClassName,openInNewTab:e.openInNewTab,forcePageLoad:e.forcePageLoad,children:[e.children,h&&(0,m.jsx)(_,{src:h,alt:f,forceLoad:a,preventLoad:s,extraClasses:d,errorFallbackImageSrc:e.errorFallbackImageSrc,errorFallbackImageClassName:e.errorFallbackImageClassName,onLoad:e.onLoad})]})})}var x=[`bg-pink`,`bg-orange`,...[`bg-green`,`bg-cyan`,`bg-teal`,`bg-blue`,`bg-indigo`,`bg-purple`]];function S(e){return(0,m.jsx)(`svg`,{...e,children:(0,m.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z`,clipRule:`evenodd`})})}function C(e){return(0,m.jsx)(`svg`,{...e,viewBox:`0 0 24 21`,children:(0,m.jsx)(`path`,{d:`M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5`,fill:`currentColor`})})}function w(e){return(0,m.jsx)(`svg`,{...e,children:(0,m.jsx)(`path`,{fill:`currentColor`,d:`M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17`})})}function T(e,t){return t[e.charCodeAt(0)%t.length]}var E={baseFallbackContainer:`_baseFallbackContainer_14tjv_1`,svgFallbackContainer:`_svgFallbackContainer_14tjv_1`,subjectFallbackContainer:`_subjectFallbackContainer_14tjv_9`,subjectFallbackContainerSmall:`_subjectFallbackContainerSmall_14tjv_18`,subjectFallbackContainerLarge:`_subjectFallbackContainerLarge_14tjv_21`,seriesItemFallback:`_seriesItemFallback_14tjv_24`,playlistItemFallback:`_playlistItemFallback_14tjv_24`,playlistFallback:`_playlistFallback_14tjv_28`,posterFallback:`_posterFallback_14tjv_29`,subjectFallback:`_subjectFallback_14tjv_9`,fallbackThumbnailImage:`_fallbackThumbnailImage_14tjv_47`,videoFallback:`_videoFallback_14tjv_55`,folderFallback:`_folderFallback_14tjv_56`},D=function(e){return e[e.Playlist=0]=`Playlist`,e[e.PlaylistThumbnail=1]=`PlaylistThumbnail`,e[e.Series=2]=`Series`,e[e.SeriesThumbnail=3]=`SeriesThumbnail`,e[e.Subject=4]=`Subject`,e[e.TallSubject=5]=`TallSubject`,e[e.Video=6]=`Video`,e[e.Folder=7]=`Folder`,e}({}),O=function(e){return e[e.Svg=0]=`Svg`,e[e.Image=1]=`Image`,e}({}),k=function(e){return e[e.Large=0]=`Large`,e[e.Small=1]=`Small`,e}({});function A(e,t,n){if(t===D.Subject){let e=n===k.Large?E.subjectFallbackContainerLarge:E.subjectFallbackContainerSmall;return`${E.subjectFallbackContainer} ${e}`}return e===O.Svg?t===D.SeriesThumbnail||t===D.PlaylistThumbnail?`${E.svgFallbackContainer} rounded-3`:E.svgFallbackContainer:E.baseFallbackContainer}function j(e){return e===D.SeriesThumbnail?E.seriesItemFallback:e===D.PlaylistThumbnail?E.playlistItemFallback:e===D.Playlist?E.playlistFallback:e===D.Series||e===D.TallSubject?E.posterFallback:e===D.Subject?`${E.subjectFallback} svg-container d-inline-block`:``}function M(e){return e===D.SeriesThumbnail||e===D.PlaylistThumbnail?S:e===D.Playlist?C:e===D.Series?w:e===D.Subject||e===D.TallSubject?l:null}function N(e){return e===D.Subject?i.ExtraLarge:i.Standard}P.defaultProps={mediaType:O.Svg,containerClassSize:k.Large};function P(e){let{type:t,mediaType:n,extraClasses:r,containerClassSize:i}=e;if(t===D.Video)return(0,m.jsx)(`div`,{className:`${E.videoFallback} ${e.extraClasses} bg-light-blue`});if(t===D.Folder)return(0,m.jsx)(`div`,{className:`${E.folderFallback} ${e.extraClasses} ${T(e.name,x)}`});let o=j(t),s=M(t),c=N(t),l=`${A(n,t,i)}`;return r&&(l+=` ${e.extraClasses}`),(0,m.jsx)(`div`,{className:l,children:n===O.Svg?(0,m.jsx)(a,{svg:s,className:`${o} ${e.svgContainerClassName??``}`,tagName:`div`,size:c}):(0,m.jsx)(`div`,{className:E.fallbackThumbnailImage,style:{backgroundImage:`url('${s}')`}})})}export{b as a,x as i,D as n,T as r,P as t};
|
|
2
|
+
//# sourceMappingURL=Cdlk0Qkj2.chunk.js.map
|