@clickview/lite 0.64.0-rc.1 → 0.64.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/bundles.json +1 -1
- package/dist/css/{7153-lite-0cc5db0db7.chunk.css → 2962-lite-2002c62a24.chunk.css} +0 -1
- package/dist/css/{1857-lite-324255d395.chunk.css → 6173-lite-911f35513f.chunk.css} +0 -1
- package/dist/css/{2083-lite-6cb1775e12.chunk.css → 7324-lite-238bd550b7.chunk.css} +0 -1
- package/dist/css/{9013-lite-620f218839.chunk.css → 9013-lite-3c31b606c5.chunk.css} +2 -2
- package/dist/languages/en.json +1 -1
- package/dist/scripts/1216-899540dc73-lite.chunk.js +2 -0
- package/dist/scripts/1216-899540dc73-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js +2 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js.map +1 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js +2 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js.map +1 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js +2 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js.map +1 -0
- package/dist/scripts/{2788-eca70707c6-lite.chunk.js → 2788-c8ae3be73f-lite.chunk.js} +1 -1
- package/dist/scripts/2788-c8ae3be73f-lite.chunk.js.map +1 -0
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js → 2962-7f2e4412f0-lite.chunk.js} +2 -2
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js.map → 2962-7f2e4412f0-lite.chunk.js.map} +1 -1
- package/dist/scripts/2988-b602b64344-lite.chunk.js +2 -0
- package/dist/scripts/2988-b602b64344-lite.chunk.js.map +1 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js +2 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js.map +1 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js +2 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js.map +1 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js +2 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js.map +1 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js +2 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js.map +1 -0
- package/dist/scripts/{5056-6057435479-lite.chunk.js → 5056-65c739468f-lite.chunk.js} +1 -1
- package/dist/scripts/5056-65c739468f-lite.chunk.js.map +1 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js +2 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js.map +1 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js +2 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js.map +1 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js +3 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js.map +1 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js +3 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js.map +1 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js +3 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js.map +1 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js +2 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js.map +1 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js +3 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-0f2cef64e5-lite.chunk.js +2 -0
- package/dist/scripts/6919-0f2cef64e5-lite.chunk.js.map +1 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js +2 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js → 7324-ee20e73ac1-lite.chunk.js} +2 -2
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js.map → 7324-ee20e73ac1-lite.chunk.js.map} +1 -1
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js +2 -0
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js.map +1 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js +3 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js.map +1 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js +2 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js.map +1 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js +2 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js.map +1 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js +2 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js.map +1 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js +2 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js +3 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-2e839958ca.min.js +3 -0
- package/dist/scripts/bundle-2e839958ca.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js +0 -2
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js.map +0 -1
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js +0 -2
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js +0 -2
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js.map +0 -1
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js +0 -3
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js.map +0 -1
- package/dist/scripts/229-900e650427-lite.chunk.js +0 -2
- package/dist/scripts/229-900e650427-lite.chunk.js.map +0 -1
- package/dist/scripts/2788-eca70707c6-lite.chunk.js.map +0 -1
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js +0 -2
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js.map +0 -1
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js +0 -2
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js.map +0 -1
- package/dist/scripts/3776-0027340c98-lite.chunk.js +0 -2
- package/dist/scripts/3776-0027340c98-lite.chunk.js.map +0 -1
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js +0 -2
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js.map +0 -1
- package/dist/scripts/4667-f3882f2379-lite.chunk.js +0 -2
- package/dist/scripts/4667-f3882f2379-lite.chunk.js.map +0 -1
- package/dist/scripts/5056-6057435479-lite.chunk.js.map +0 -1
- package/dist/scripts/5201-7d3867d027-lite.chunk.js +0 -2
- package/dist/scripts/5201-7d3867d027-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-10e586779d-lite.chunk.js +0 -2
- package/dist/scripts/5595-10e586779d-lite.chunk.js.map +0 -1
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js +0 -3
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js.map +0 -1
- package/dist/scripts/6181-50a39979ec-lite.chunk.js +0 -3
- package/dist/scripts/6181-50a39979ec-lite.chunk.js.map +0 -1
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js +0 -2
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js.map +0 -1
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js +0 -3
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js.map +0 -1
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js +0 -2
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js.map +0 -1
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js +0 -2
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js.map +0 -1
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js +0 -2
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js.map +0 -1
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js +0 -3
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js.map +0 -1
- package/dist/scripts/8022-0656cce655-lite.chunk.js +0 -2
- package/dist/scripts/8022-0656cce655-lite.chunk.js.map +0 -1
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js +0 -2
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js.map +0 -1
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js +0 -2
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js.map +0 -1
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js +0 -2
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js +0 -3
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-e02b7c5d7f.min.js +0 -3
- package/dist/scripts/bundle-e02b7c5d7f.min.js.map +0 -1
- package/dist/css/{6455-lite-fe0bc6d95f.chunk.css → 6455-lite-c07987d46c.chunk.css} +1 -1
- /package/dist/css/{9155-lite-447d345417.chunk.css → 8465-lite-447d345417.chunk.css} +0 -0
- /package/dist/scripts/{1857-d3af9d98eb-lite.chunk.js.LICENSE.txt → 5896-60133bfdad-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5896-5d2f32c59e-lite.chunk.js.LICENSE.txt → 6173-7f9939c29e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6181-50a39979ec-lite.chunk.js.LICENSE.txt → 6181-9d7668c9e4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6623-ebbffb59b3-lite.chunk.js.LICENSE.txt → 6623-84b33c6856-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7443-7c72de0cb9-lite.chunk.js.LICENSE.txt → 7443-4866d0c9ab-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9894-bc34edcd67-lite.chunk.js.LICENSE.txt → 9894-0fba5cf702-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-e02b7c5d7f.min.js.LICENSE.txt → bundle-2e839958ca.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7434-c34ca23a21-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/components/video-sort-select/VideoSortSelect.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <> </>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n function getSpecialEventMonthText(specialEvent: CalendarEvent): string {\n if (!specialEvent.endDate)\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n if (DateHelper.isSame(specialEvent.startDate, specialEvent.endDate, 'month'))\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n return `${DateHelper.format(specialEvent.startDate, 'MMM')} - ${DateHelper.format(specialEvent.endDate, 'MMM')}`;\n }\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={getSpecialEventMonthText(specialEvent)}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3`}>\n {props.logo?.url &&\n <LazyImage src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Medium })} />}\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Small })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\n\nconst namespace = 'shared.videoSortSelect';\n\ntype SortTypes = {[sort: string]: { name: string }};\n\nconst getDefaultSortTypes: () => SortTypes = FunctionHelper.memoize(() => {\n return {\n [VideoSortType.RecentlyAdded]: {\n name: LanguageService.getPhrase(namespace, 'recentlyAdded')\n },\n [VideoSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [VideoSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [VideoSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [VideoSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n },\n [VideoSortType.Series]: {\n name: LanguageService.getPhrase(namespace, 'series')\n }\n };\n});\n\nfunction getSortTypes(productionYear: boolean): SortTypes {\n let defaultSortTypes = getDefaultSortTypes();\n\n if (productionYear) {\n defaultSortTypes = {\n [VideoSortType.ProductionYear]: {\n name: LanguageService.getPhrase(namespace, 'productionYear')\n },\n ...defaultSortTypes\n };\n }\n \n return defaultSortTypes;\n}\n\ninterface VideoSortSelectProps {\n type: VideoSortType;\n getSortAppLink: (sort: string) => Core.AppLink;\n variant?: ButtonProps['variant'];\n sortTypes?: SortTypes;\n analyticsOptions: AnalyticsOptions;\n includeProductionYear?: boolean;\n}\n\nVideoSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function VideoSortSelect(props: VideoSortSelectProps): JSX.Element {\n const sortTypes = props.sortTypes || getSortTypes(props.includeProductionYear);\n\n return (\n <div className='dropdown'>\n <button className={`btn btn-${props.variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[props.type].name}\n </button>\n <ul className='dropdown-menu dropdown-menu-end' aria-labelledby='sort-select'>\n {Object.keys(sortTypes).map(k => {\n let className = 'dropdown-item';\n\n if (k === props.type)\n className += ' active';\n\n return (\n <li key={k}>\n <AppLink\n className={className}\n appLink={props.getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={props.analyticsOptions}\n >\n {sortTypes[k].name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst CHUNK_SIZE = 50;\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [...r] ;\n\n ArrayHelper.chunk<string>(unhydratedVideos, CHUNK_SIZE).forEach(chunk => {\n newRequests.push(VideoRequests.videoMixinAssocs(chunk, options.flightNamespace));\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(chunk, null, options.flightNamespace));\n });\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","className","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","BackButton","textShadow","backToName","color","extraClasses","backPhrase","colorClass","textShadowClass","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","getSpecialEventMonthText","calendarTheme","Text","phrase","LazyImage","src","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","getPhrase","BreadcrumbItem","ref","breadcrumb","name","active","withBackIcon","trimmedName","slice","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","onClick","map","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","InfiniteScrollFooter","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","Spinner","as","animation","role","getDefaultSortTypes","VideoSortSelect","productionYear","defaultSortTypes","sortTypes","includeProductionYear","variant","id","Object","keys","k","getSortAppLink","sort","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useBreadcrumbs","match","useBuilder","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","opts","Math","max","floor","random","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","CHUNK_SIZE","useVideoMixin","objects","currentUser","hydratedVideos","Set","videos","filter","o","data","getValidObjects","videoIds","v","setRequest","hasCompleted","unhydratedVideos","has","push","add","r","newRequests","chunk","flightNamespace","isAuthenticated","Row","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 7443-7c72de0cb9-lite.chunk.js.LICENSE.txt */
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7443],{2192:(e,t,n)=>{n.d(t,{M:()=>y,Q:()=>b});var r=n(32735),a=n(45157),c=n(36848),o=n(60376),l=n(5465),i=n(83914),s=n(83345),u=n(54610),m=n(67453),d=n(45778),f=n(35223),h=n(92038),v="shared.subjectWidgetItem",p=function(e){var t=e.name,n=e.multiline,a=e.noUnderLine,c="".concat(h.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),o="";return n?o+=" ".concat(h.Z.clamped," clamp-2"):(c+=" text-nowrap",o+=" text-truncate"),r.createElement("div",{className:c},r.createElement("small",{className:"text-secondary"},r.createElement(s.x,{namespace:v,phrase:"comingSoon"})),r.createElement("p",{className:"".concat(a?"":h.Z.name," h6")},r.createElement("span",{className:o},t)))},g=function(e){var t=e.name,n=e.multiline,a=e.subtitle,c=e.noUnderLine,o=e.newVideosCount,l="px-3 d-flex flex-column justify-content-center",i="".concat(c?"":h.Z.name," h6");return n?i+=" ".concat(o?"clamp-2":"clamp-3"," text-start"):(l+=" text-nowrap text-truncate",i+=" text-truncate mb-0"),r.createElement("div",{className:l},a&&r.createElement("div",{className:"text-secondary clamp-1 ".concat(h.Z.text)},a),r.createElement("div",{className:i,title:t},t),!!o&&r.createElement("div",{className:"fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ".concat(h.Z.newVideos)},r.createElement(s.x,{namespace:v,phrase:"newVideos",options:{smartCount:o}})))};function y(e){var t,n=m.j.createUrl(e.coverUrl,{size:e.isLarge?u.h2.Medium:u.h2.Small}),c=void 0;d.G.isClassification(e.data)&&(c=e.data);var s={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?null===(t=null==c?void 0:c.externalMetadata)||void 0===t?void 0:t.childDashboardNewVideoCount:0};return r.createElement("div",{className:"".concat(e.themeColor?h.Z.hasThemeColor:"border"," d-flex position-relative ").concat(e.className," ").concat(h.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""," ").concat(e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""),style:e.themeColor?{"--themeColor":e.themeColor}:{},id:"".concat(e.data.id,"-").concat(a.Y.getRandomInt())},e.isSelected&&r.createElement("div",{className:"".concat(h.Z.selectedMask," border-2")}),r.createElement("div",{className:"".concat(h.Z.imagePanel," ").concat(e.isLarge?h.Z.large:"")},e.isSelected&&!e.hideCheckmark&&r.createElement("div",{className:h.Z.selected},r.createElement(o.f,{svgName:f.vn.Check,svgSize:i.S.Large,textVariant:"white",variant:"green"})),r.createElement("div",{className:"".concat(h.Z.image," ").concat(e.imageClassName),style:e.coverUrl?{backgroundImage:"url('".concat(n,"')")}:{}}),!e.hideFallback&&r.createElement(l.oy,{type:l.mS.Subject,extraClasses:e.isLarge?h.Z.large:""})),e.isComingSoon?r.createElement(p,Object.assign({},s)):r.createElement(g,Object.assign({},s)))}function b(e){var t,n=e.getChildAppLink?e.getChildAppLink(e.data):null;return r.createElement(r.Fragment,null,n?r.createElement(c.F,{className:h.Z.appLink,appLink:n,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},r.createElement(y,Object.assign({},e))):r.createElement(y,Object.assign({},e)))}},75919:(e,t,n)=>{n.d(t,{N:()=>c});var r=n(32735);const a={annotation:"LkdHB",above:"ROdbm",below:"OzyHx",left:"W9EBF",right:"zhio2",divider:"cdR_p",imageContainer:"QZZMF"};function c(e){return r.createElement("div",{className:(t="d-flex align-items-center text-center position-relative w-100 ".concat(a.imageContainer),"center"===e.contentPosition&&(t+=" px-5 justify-content-center"),"right"===e.contentPosition&&(t+=" me-n5 justify-content-end"),t)},!!e.annotationUrl&&r.createElement("div",{className:function(){var t=a.annotation;switch(e.annotationPosition){case"top-left":t+=" ".concat(a.above," ").concat(a.left);break;case"top-right":t+=" ".concat(a.above," ").concat(a.right);break;case"bottom-left":t+=" ".concat(a.below," ").concat(a.left);break;case"bottom-right":t+=" ".concat(a.below," ").concat(a.right)}return e.annotationClassName&&(t+=" ".concat(e.annotationClassName)),t}()},r.createElement("img",{className:"img-fluid",src:e.annotationUrl})),e.children,"right"===e.contentPosition&&r.createElement("div",{className:a.divider}));var t}c.defaultProps={contentPosition:"center"}},39375:(e,t,n)=>{n.d(t,{Y:()=>u});var r=n(32735),a=n(54610),c=n(67453),o=n(2248);const l={magicTab:"H5jzm",subjectPlaceholder:"r1L6T",placeholderCover:"z9CFT",promotedTopicPlaceholder:"PbYs6",promotedTopicPlaceholderText:"hZ8Nf"};function i(e){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"d-flex border rounded-3 overflow-hidden ".concat(l.subjectPlaceholder)},e.coverUrl?r.createElement("div",{className:l.placeholderCover},r.createElement("img",{className:"img-fluid",src:c.j.createUrl(e.coverUrl,{size:a.h2.Small})})):r.createElement("div",{className:"".concat(l.placeholderCover," bg-light-blue")})))}function s(){return r.createElement("li",{className:"col-4"},r.createElement("div",{className:"bg-light-blue rounded-3 w-100 p-1 ".concat(l.promotedTopicPlaceholder)}))}function u(e){var t,n,a,c=Math.max(12-(null!==(n=null===(t=e.subjects)||void 0===t?void 0:t.length)&&void 0!==n?n:0),0);return r.createElement(o.L,{presentation:e.presentation,curriculum:e.curriculum,editingCurriculum:e.editingCurriculum},r.createElement("div",{className:"px-3 pt-3 w-100 d-flex flex-column align-items-center"},r.createElement("div",{className:"rounded-3 border overflow-hidden d-flex mb-2"},r.createElement("div",{className:"bg-light ".concat(l.magicTab)}),r.createElement("div",{className:"".concat(l.magicTab)})),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2"},null===(a=e.subjects)||void 0===a?void 0:a.map((function(e){var t;return r.createElement(i,{key:e.id,coverUrl:null===(t=e.cover)||void 0===t?void 0:t.url})})),new Array(c).fill(0).map((function(e,t){return r.createElement(i,{key:t})}))),r.createElement("ul",{className:"list-unstyled mb-0 row w-100 g-xl-2 g-lg-1"},r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null),r.createElement(s,null))))}},2248:(e,t,n)=>{n.d(t,{L:()=>g});var r=n(32735),a=n(60376),c=n(83914),o=n(2786),l=n(83345),i=n(54610),s=n(72639),u=n(79967),m=n(67453),d=n(35223),f=n(87114);const h={dot:"AlRQD",logo:"L42gR",blackBar:"ESCxm",topNav:"a3G_4",leftNav:"YxGVV",belowHeader:"jc_cg",leftNavIcon:"U6i6r",leftNavText:"LnYlW",presentationPlaceholderIcon:"Ljaju",presentationIcon:"QdwPq",presentationPlaceholderText:"af06V",curriculumIcon:"N7T4T",curriculumIconSmall:"_6xrUg",curriculumContainer:"Z65qX",iconPlaceholder:"CKOXL",shadow:"zygeJ",presentationName:"Oj7Dt"};var v="onboarding.mockLayout";function p(){return r.createElement("div",{className:"d-flex align-items-center justify-content-center mb-2 px-3"},r.createElement("div",{className:"".concat(h.leftNavIcon," rounded-circle")}),r.createElement("div",{className:"".concat(h.leftNavText," rounded-pill")}))}function g(e){var t,n,g=(0,u.k)();return r.createElement("div",{className:"border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100"},!!e.editingCurriculum&&r.createElement("div",{className:"w-100 h-100 position-absolute ".concat(h.shadow)},r.createElement("div",{className:"d-flex align-items-center h-100 w-50 ".concat(h.curriculumContainer)},r.createElement("div",{className:"bg-white rounded-3 border p-3 w-100"},r.createElement("h2",{className:"h6 text-start"},r.createElement(l.x,{namespace:v,phrase:"curriculum"})),e.curriculum?r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(h.curriculumIcon," rounded-circle me-2 border")},r.createElement(a.f,{imageUrl:m.j.createUrl(null===(t=e.curriculum.cover)||void 0===t?void 0:t.url,{size:i.h2.Small})})),r.createElement("div",{className:"text-start"},e.curriculum.name)):r.createElement("div",{className:"d-flex align-items-center text-secondary"},r.createElement("div",{className:"me-2 rounded-circle p-1 ".concat(h.iconPlaceholder)},r.createElement(a.f,{svgSize:c.S.Large,textVariant:"secondary",svgName:d.vn.GraduationCap})),r.createElement(l.x,{namespace:v,phrase:"selectCurriculum"}))))),r.createElement("div",{className:"bg-dark d-flex px-3 py-2 ".concat(h.blackBar)},r.createElement("div",{className:"rounded-circle me-2 ".concat(h.dot)}),r.createElement("div",{className:"rounded-circle me-2 ".concat(h.dot)}),r.createElement("div",{className:"rounded-circle ".concat(h.dot)})),r.createElement("div",{className:"border-bottom px-3 py-2 d-flex align-items-center ".concat(h.topNav)},r.createElement("div",{className:"".concat(h.logo," me-4")},g.xs?r.createElement(o.bc,null):r.createElement(o.$S,null)),r.createElement("div",{className:"form-control w-75 d-flex justify-content-start"},r.createElement(c.x,{svgName:d.vn.Search})),!!e.curriculum&&r.createElement("div",{className:"".concat(h.curriculumIconSmall," rounded-circle ms-2 me-n1 border")},r.createElement(a.f,{imageUrl:null===(n=e.curriculum.cover)||void 0===n?void 0:n.url}))),r.createElement("div",{className:"d-flex ".concat(h.belowHeader)},r.createElement("div",{className:"".concat(h.leftNav," border-end")},r.createElement("div",{className:"d-flex flex-column pt-3 h-100"},r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement(p,null),r.createElement("div",{className:"d-flex align-items-end h-100 w-100"},r.createElement("div",{className:"border-top p-3 w-100"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(function(){if(!e.presentation)return h.presentationPlaceholderIcon;switch(f.i.getMappedPresentationLevel(e.presentation.learningLevel)){case s.p.Level_1:return"bg-indigo ".concat(h.presentationIcon);case s.p.Level_3:return"bg-blue ".concat(h.presentationIcon);default:case s.p.Level_2:return"bg-green ".concat(h.presentationIcon)}}()," text-white rounded")},r.createElement(c.x,{svgName:d.vn.School,size:c.S.Large})),e.presentation?r.createElement("span",{className:"fw-semibold text-truncate ".concat(h.presentationName)},e.presentation.name):r.createElement("div",{className:"".concat(h.presentationPlaceholderText," fw-semibold")},r.createElement(l.x,{namespace:v,phrase:"schoolLevel"}))))))),r.createElement("div",{className:"w-100 h-100 overflow-hidden"},e.children)))}},90987:(e,t,n)=>{n.r(t),n.d(t,{OnboardingSelectCurriculumView:()=>P});var r=n(32735),a=n(20354),c=n(74254),o=n(45716),l=n(11607),i=n(83345),s=n(2192),u=n(19808),m=n(31949),d=n(79612),f=n(99742),h=n(82817),v=n(86698),p=n(75359),g=n(12058),y=n(56080),b=n(75919),E=n(39375),x=n(73190),N=n(90815);const w={annotation:"JX1ui"};function L(e){return L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},L(e)}function C(){C=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},c="function"==typeof Symbol?Symbol:{},o=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",i=c.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var c=t&&t.prototype instanceof g?t:g,o=Object.create(c.prototype),l=new T(r||[]);return a(o,"_invoke",{value:j(e,n,l)}),o}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",h="executing",v="completed",p={};function g(){}function y(){}function b(){}var E={};s(E,o,(function(){return this}));var x=Object.getPrototypeOf,N=x&&x(x(_([])));N&&N!==n&&r.call(N,o)&&(E=N);var w=b.prototype=g.prototype=Object.create(E);function k(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function n(a,c,o,l){var i=m(e[a],e,c);if("throw"!==i.type){var s=i.arg,u=s.value;return u&&"object"==L(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,l)}),(function(e){n("throw",e,o,l)})):t.resolve(u).then((function(e){s.value=e,o(s)}),(function(e){return n("throw",e,o,l)}))}l(i.arg)}var c;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return c=c?c.then(a,a):a()}})}function j(t,n,r){var a=d;return function(c,o){if(a===h)throw Error("Generator is already running");if(a===v){if("throw"===c)throw o;return{value:e,done:!0}}for(r.method=c,r.arg=o;;){var l=r.delegate;if(l){var i=P(l,r);if(i){if(i===p)continue;return i}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===p)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function P(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,P(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var c=m(a,t.iterator,n.arg);if("throw"===c.type)return n.method="throw",n.arg=c.arg,n.delegate=null,p;var o=c.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function _(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,c=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return c.next=c}}throw new TypeError(L(t)+" is not iterable")}return y.prototype=b,a(w,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=s(b,i,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,s(e,i,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},k(S.prototype),s(S.prototype,l,(function(){return this})),t.AsyncIterator=S,t.async=function(e,n,r,a,c){void 0===c&&(c=Promise);var o=new S(u(e,n,r,a),c);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},k(w),s(w,i,"Generator"),s(w,o,(function(){return this})),s(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=_,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return l.type="throw",l.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var c=this.tryEntries.length-1;c>=0;--c){var o=this.tryEntries[c],l=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var i=r.call(o,"catchLoc"),s=r.call(o,"finallyLoc");if(i&&s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(i){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var c=a;break}}c&&("break"===e||"continue"===e)&&c.tryLoc<=t&&t<=c.finallyLoc&&(c=null);var o=c?c.completion:{};return o.type=e,o.arg=t,c?(this.method="next",this.next=c.finallyLoc,p):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:_(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var S=function(e,t,n,r){return new(n||(n=Promise))((function(a,c){function o(e){try{i(r.next(e))}catch(e){c(e)}}function l(e){try{i(r.throw(e))}catch(e){c(e)}}function i(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,l)}i((r=r.apply(e,t||[])).next())}))},j="onboarding.selectCurriculum";function P(e){var t,n=(0,x.Q)(e.redirectUrl),L=n.onClickBack,P=n.exitOnboarding,O=n.completeStepAsync,I=n.onSaveError,T=(0,N.H)().logEvent,_=(0,v.y)().preferredPresentation,U=(0,h.M)(),Z=U.hasLoaded,A=U.preferredCurriculum,V=U.availableCurriculums,F=U.updateCurriculum;(0,d.M)({title:o.H["select-curriculum"].getPageTitle()});var z,G,M=a.a.useBasicFetch(m.N.currentUser()),H=(z=r.useState(A),G=2,function(e){if(Array.isArray(e))return e}(z)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c,o,l=[],i=!0,s=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=c.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(z,G)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}(z,G)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),B=H[0],R=H[1];return r.useEffect((function(){Z&&(null==A?void 0:A.id)&&R(A)}),[Z]),r.createElement(y.z,{namespace:j},r.createElement(y.z.Left,{className:"bg-ultramarine d-flex flex-column align-items-end justify-content-center"},r.createElement(b.N,{contentPosition:"right",annotationClassName:w.annotation,annotationUrl:(null===(t=M.data)||void 0===t?void 0:t.instanceRegion)===u.b.US?f.W.OnboardingV2.SelectCurriculum.ANNOTATION_US:f.W.OnboardingV2.SelectCurriculum.ANNOTATION,annotationPosition:"top-left"},r.createElement(E.Y,{presentation:_,curriculum:B,editingCurriculum:!0}))),r.createElement(y.z.Right,{hasCustomButtons:!1,onClickNext:function(){return S(this,void 0,void 0,C().mark((function e(){return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return T(c.Vw.Click,c.Ix.Next,{curriculumId:B.id,curriculumName:B.name}),e.prev=1,e.next=4,Promise.all([F(B),O()]);case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),I(),e.abrupt("return",Promise.reject());case 10:case"end":return e.stop()}}),e,null,[[1,6]])})))},onClickBack:L,onClickComeBackLater:P,disableNext:!B},r.createElement(p.W,null,r.createElement(i.x,{phrase:"heading"})),r.createElement(g.X,null,r.createElement(i.x,{phrase:"info"})),r.createElement("ul",{className:"list-unstyled mb-2 row g-2"},null==V?void 0:V.map((function(e){var t;return r.createElement("li",{key:e.id,className:"col-12 col-xl-12 col-lg-12 col-md-6 col-sm-6"},r.createElement(l.L,{onClick:function(){return function(e){T(c.Vw.Select,c.Ix.SelectCurriculum,{curriculumId:e.id,curriculumName:e.name}),R(e)}(e)}},r.createElement(s.M,{data:e,coverUrl:null===(t=e.cover)||void 0===t?void 0:t.url,imageClassName:"border-end",isSelected:e.id===(null==B?void 0:B.id),hideCheckmark:!0,multiline:!0,hideFallback:!0})))}))),r.createElement(g.X,null,r.createElement(i.x,{phrase:"dontWorry"}))))}},92038:(e,t,n)=>{n.d(t,{Z:()=>r});const r={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",hasThemeColor:"DX2ua",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",newVideos:"s61h8",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}}}]);
|
|
3
|
-
//# sourceMappingURL=7443-7c72de0cb9-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7443-7c72de0cb9-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/left-panel-item.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/LeftPanelItem.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/mock-discover.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/MockDiscover.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/mock-layout.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/MockLayout.tsx","file:///app/packages/projects/lite/src/apps/onboarding/views/select-curriculum/select-curriculum.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/select-curriculum/OnboardingSelectCurriculumView.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n <div\n className={`${styles.image} ${props.imageClassName}`}\n style={props.coverUrl ? { backgroundImage: `url('${coverUrl}')` } : {}}\n />\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"annotation\":\"LkdHB\",\"above\":\"ROdbm\",\"below\":\"OzyHx\",\"left\":\"W9EBF\",\"right\":\"zhio2\",\"divider\":\"cdR_p\",\"imageContainer\":\"QZZMF\"};","import React from 'react';\n\nimport styles from './left-panel-item.scss';\n\nexport interface LeftPanelItemProps {\n contentPosition?: 'center' | 'right';\n annotationUrl?: string;\n annotationPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n annotationClassName?: string;\n}\n\nLeftPanelItem.defaultProps = {\n contentPosition: 'center'\n};\n\nexport function LeftPanelItem(props: React.PropsWithChildren<LeftPanelItemProps>): JSX.Element {\n function getAnnotationClassName(): string {\n let className = styles.annotation;\n\n switch (props.annotationPosition) {\n case 'top-left': {\n className += ` ${styles.above} ${styles.left}`;\n break;\n }\n\n case 'top-right': {\n className += ` ${styles.above} ${styles.right}`;\n break;\n }\n\n case 'bottom-left': {\n className += ` ${styles.below} ${styles.left}`;\n break;\n }\n\n case 'bottom-right': {\n className += ` ${styles.below} ${styles.right}`;\n break;\n }\n }\n\n if (props.annotationClassName)\n className += ` ${props.annotationClassName}`;\n\n return className;\n }\n\n function getContainerClassName(): string {\n let className = `d-flex align-items-center text-center position-relative w-100 ${styles.imageContainer}`;\n\n if (props.contentPosition === 'center')\n className += ' px-5 justify-content-center';\n\n if (props.contentPosition === 'right')\n className += ' me-n5 justify-content-end';\n\n return className;\n }\n\n return (\n <div className={getContainerClassName()}>\n {!!props.annotationUrl && (\n <div className={getAnnotationClassName()}>\n <img className={`img-fluid`} src={props.annotationUrl} />\n </div>\n )}\n\n {props.children}\n {props.contentPosition === 'right' && (\n <div className={styles.divider} />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"magicTab\":\"H5jzm\",\"subjectPlaceholder\":\"r1L6T\",\"placeholderCover\":\"z9CFT\",\"promotedTopicPlaceholder\":\"PbYs6\",\"promotedTopicPlaceholderText\":\"hZ8Nf\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { MockLayout } from 'apps/onboarding/components/mock-views/layout/MockLayout';\n\nimport styles from './mock-discover.scss';\n\ninterface SubjectPlaceholderProps {\n coverUrl?: string;\n}\n\nfunction SubjectPlaceholder(props: SubjectPlaceholderProps): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`d-flex border rounded-3 overflow-hidden ${styles.subjectPlaceholder}`}>\n {props.coverUrl ? (\n <div className={styles.placeholderCover}>\n <img className='img-fluid' src={ImageHelper.createUrl(props.coverUrl, { size: ImageSize.Small })} />\n </div>\n ) : (\n <div className={`${styles.placeholderCover} bg-light-blue`} />\n )}\n </div>\n </li>\n );\n}\n\nfunction PromotedTopicPlaceholder(): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`bg-light-blue rounded-3 w-100 p-1 ${styles.promotedTopicPlaceholder}`} />\n </li>\n );\n}\n\ninterface MockDiscoverProps {\n subjects?: Classification[];\n presentation?: Presentation;\n curriculum?: Presentation;\n editingCurriculum?: boolean;\n}\n\nexport function MockDiscover(props: MockDiscoverProps): JSX.Element {\n const placeholderSubjects = Math.max(12 - (props.subjects?.length ?? 0), 0);\n\n return (\n <MockLayout\n presentation={props.presentation}\n curriculum={props.curriculum}\n editingCurriculum={props.editingCurriculum}\n >\n <div className='px-3 pt-3 w-100 d-flex flex-column align-items-center'>\n {/* Magic tabs */}\n <div className='rounded-3 border overflow-hidden d-flex mb-2'>\n <div className={`bg-light ${styles.magicTab}`} />\n <div className={`${styles.magicTab}`} />\n </div>\n\n {/* Subjects */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2'>\n {props.subjects?.map(subject => {\n return (\n <SubjectPlaceholder key={subject.id} coverUrl={subject.cover?.url} />\n );\n })}\n {new Array(placeholderSubjects).fill(0).map((_, index) => {\n return (\n <SubjectPlaceholder key={index} />\n );\n })}\n </ul>\n\n {/* Promoted topics */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1'>\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n </ul>\n </div>\n </MockLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"AlRQD\",\"logo\":\"L42gR\",\"blackBar\":\"ESCxm\",\"topNav\":\"a3G_4\",\"leftNav\":\"YxGVV\",\"belowHeader\":\"jc_cg\",\"leftNavIcon\":\"U6i6r\",\"leftNavText\":\"LnYlW\",\"presentationPlaceholderIcon\":\"Ljaju\",\"presentationIcon\":\"QdwPq\",\"presentationPlaceholderText\":\"af06V\",\"curriculumIcon\":\"N7T4T\",\"curriculumIconSmall\":\"_6xrUg\",\"curriculumContainer\":\"Z65qX\",\"iconPlaceholder\":\"CKOXL\",\"shadow\":\"zygeJ\",\"presentationName\":\"Oj7Dt\"};","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClickViewLogo, ClickViewPrimaryLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport styles from './mock-layout.scss';\n\nconst namespace = 'onboarding.mockLayout';\n\nfunction LeftNavItem(): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center mb-2 px-3'>\n <div className={`${styles.leftNavIcon} rounded-circle`} />\n <div className={`${styles.leftNavText} rounded-pill`} />\n </div>\n );\n}\n\ninterface MockLayoutProps {\n editingCurriculum?: boolean;\n curriculum?: Presentation;\n presentation?: Presentation;\n}\n\nexport function MockLayout(props: React.PropsWithChildren<MockLayoutProps>): JSX.Element {\n const breakpoints = useBreakpoints();\n \n function getPresentationClass(): string {\n if (!props.presentation)\n return styles.presentationPlaceholderIcon;\n\n switch (TopicsHelper.getMappedPresentationLevel(props.presentation.learningLevel)) {\n case PresentationLearningLevel.Level_1:\n return `bg-indigo ${styles.presentationIcon}`;\n\n case PresentationLearningLevel.Level_3:\n return `bg-blue ${styles.presentationIcon}`;\n\n default:\n case PresentationLearningLevel.Level_2:\n return `bg-green ${styles.presentationIcon}`;\n }\n }\n\n return (\n <div className={`border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100`}>\n {!!props.editingCurriculum && (\n <div className={`w-100 h-100 position-absolute ${styles.shadow}`}>\n <div className={`d-flex align-items-center h-100 w-50 ${styles.curriculumContainer}`}>\n <div className='bg-white rounded-3 border p-3 w-100'>\n <h2 className='h6 text-start'><Text namespace={namespace} phrase='curriculum' /></h2>\n\n {props.curriculum ? (\n <div className='d-flex align-items-center'>\n <div className={`${styles.curriculumIcon} rounded-circle me-2 border`}>\n <IconCircle\n imageUrl={ImageHelper.createUrl(props.curriculum.cover?.url, { size: ImageSize.Small })}\n />\n </div>\n <div className='text-start'>{props.curriculum.name}</div>\n </div>\n ) : (\n <div className='d-flex align-items-center text-secondary'>\n <div className={`me-2 rounded-circle p-1 ${styles.iconPlaceholder}`}>\n <IconCircle svgSize={SvgContainerSize.Large} textVariant='secondary' svgName={cvSvgLibrary.GraduationCap} />\n </div>\n <Text namespace={namespace} phrase='selectCurriculum' />\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Black bar */}\n <div className={`bg-dark d-flex px-3 py-2 ${styles.blackBar}`}>\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle ${styles.dot}`} />\n </div>\n\n {/* Header */}\n <div className={`border-bottom px-3 py-2 d-flex align-items-center ${styles.topNav}`}>\n <div className={`${styles.logo} me-4`}>\n {breakpoints.xs ? (\n <ClickViewPrimaryLogo />\n ) : (\n <ClickViewLogo />\n )}\n </div>\n <div className='form-control w-75 d-flex justify-content-start'>\n <SvgContainer svgName={cvSvgLibrary.Search} />\n </div>\n {!!props.curriculum && (\n <div className={`${styles.curriculumIconSmall} rounded-circle ms-2 me-n1 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n )}\n </div>\n\n <div className={`d-flex ${styles.belowHeader}`}>\n {/* Left nav */}\n <div className={`${styles.leftNav} border-end`}>\n <div className='d-flex flex-column pt-3 h-100'>\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n\n {/* Presentation */}\n <div className='d-flex align-items-end h-100 w-100'>\n <div className='border-top p-3 w-100'>\n <div className='d-flex align-items-center'>\n <div className={`${getPresentationClass()} text-white rounded`}>\n <SvgContainer svgName={cvSvgLibrary.School} size={SvgContainerSize.Large} />\n </div>\n\n {!props.presentation ? (\n <div className={`${styles.presentationPlaceholderText} fw-semibold`}>\n <Text namespace={namespace} phrase='schoolLevel' />\n </div>\n ) : (\n <span className={`fw-semibold text-truncate ${styles.presentationName}`}>{props.presentation.name}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Main content */}\n <div className={`w-100 h-100 overflow-hidden`}>\n {props.children}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"annotation\":\"JX1ui\"};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CoverPillWidgetContent } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Presentation } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport { OnboardingScreenHeading } from 'apps/onboarding/components/heading/OnboardingScreenHeading';\nimport { OnboardingScreenInfo } from 'apps/onboarding/components/info/OnboardingScreenInfo';\nimport { OnboardingLayout } from 'apps/onboarding/components/layout/OnboardingLayout';\nimport { LeftPanelItem } from 'apps/onboarding/components/left-panel-item/LeftPanelItem';\nimport { MockDiscover } from 'apps/onboarding/components/mock-views/discover/MockDiscover';\nimport { useOnboardingCallbacks } from 'apps/onboarding/hooks/useOnboardingCallbacks';\nimport { useOnboardingEventLogger } from 'apps/onboarding/hooks/useOnboardingEventLogger';\nimport { OnboardingViewProps } from 'apps/onboarding/interfaces/OnboardingViewProps';\n\nimport styles from './select-curriculum.scss';\n\nconst namespace = 'onboarding.selectCurriculum';\n\nexport function OnboardingSelectCurriculumView(props: OnboardingViewProps): JSX.Element {\n const {\n onClickBack,\n exitOnboarding,\n completeStepAsync,\n onSaveError\n } = useOnboardingCallbacks(props.redirectUrl);\n const { logEvent } = useOnboardingEventLogger();\n const { preferredPresentation } = usePresentation();\n const {\n hasLoaded: hasLoadedCurriculums,\n preferredCurriculum,\n availableCurriculums,\n updateCurriculum\n } = useCurriculums();\n useSetPageMetadata({ title: OnboardingScreenConfigs['select-curriculum'].getPageTitle() });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>(preferredCurriculum);\n\n React.useEffect(() => {\n if (!hasLoadedCurriculums)\n return;\n\n if (preferredCurriculum?.id)\n setSelectedCurriculum(preferredCurriculum);\n }, [hasLoadedCurriculums]);\n\n function onSelectCurriculum(curriculum: Presentation): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectCurriculum, {\n curriculumId: curriculum.id,\n curriculumName: curriculum.name\n });\n\n setSelectedCurriculum(curriculum);\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n curriculumId: selectedCurriculum.id,\n curriculumName: selectedCurriculum.name\n });\n\n try {\n await Promise.all([\n updateCurriculum(selectedCurriculum),\n completeStepAsync()\n ]);\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-ultramarine d-flex flex-column align-items-end justify-content-center'>\n <LeftPanelItem\n contentPosition='right'\n annotationClassName={styles.annotation}\n annotationUrl={currentUser.data?.instanceRegion === InstanceRegion.US\n ? ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION_US\n : ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION\n }\n annotationPosition='top-left'\n >\n <MockDiscover\n presentation={preferredPresentation}\n curriculum={selectedCurriculum}\n editingCurriculum\n />\n </LeftPanelItem>\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right\n hasCustomButtons={false}\n onClickNext={onClickNext}\n onClickBack={onClickBack}\n onClickComeBackLater={exitOnboarding}\n disableNext={!selectedCurriculum}\n >\n <OnboardingScreenHeading>\n <Text phrase='heading' />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <ul className={`list-unstyled mb-2 row g-2`}>\n {availableCurriculums?.map(curriculum => {\n return (\n <li key={curriculum.id} className={`col-12 col-xl-12 col-lg-12 col-md-6 col-sm-6`}>\n <DivButton\n onClick={() => onSelectCurriculum(curriculum)}\n >\n <CoverPillWidgetContent\n data={curriculum}\n coverUrl={curriculum.cover?.url}\n imageClassName='border-end'\n isSelected={curriculum.id === selectedCurriculum?.id}\n hideCheckmark\n multiline\n hideFallback\n />\n </DivButton>\n </li>\n );\n })}\n </ul>\n\n <OnboardingScreenInfo>\n <Text phrase='dontWorry' />\n </OnboardingScreenInfo>\n </OnboardingLayout.Right>\n </OnboardingLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"appLink\":\"fFjKN\",\"name\":\"A_by9\",\"selectedMask\":\"xSQtR\",\"widgetItem\":\"Ys9W_\",\"hasThemeColor\":\"DX2ua\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"newVideos\":\"s61h8\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","textClassName","className","phrase","NormalNamePanel","subtitle","newVideosCount","title","options","smartCount","CoverPillWidgetContent","props","coverUrl","size","isLarge","classification","undefined","data","childProps","highlightOnHover","showNewVideosCount","externalMetadata","childDashboardNewVideoCount","themeColor","isSelected","style","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","backgroundImage","hideFallback","type","extraClasses","isComingSoon","CoverPillWidgetContentWrapper","appLink","getChildAppLink","analyticsData","analyticsOptions","appLinkOptions","getChildAppLinkOptions","LeftPanelItem","contentPosition","annotationUrl","annotationPosition","annotationClassName","getAnnotationClassName","src","children","defaultProps","SubjectPlaceholder","ImageHelper","PromotedTopicPlaceholder","MockDiscover","placeholderSubjects","Math","max","subjects","length","MockLayout","presentation","curriculum","editingCurriculum","map","subject","key","cover","url","Array","fill","_","index","LeftNavItem","breakpoints","useBreakpoints","Text","IconCircle","imageUrl","SvgContainer","xs","ClickViewLogo","TopicsHelper","learningLevel","PresentationLearningLevel","getPresentationClass","OnboardingSelectCurriculumView","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","completeStepAsync","onSaveError","logEvent","useOnboardingEventLogger","preferredPresentation","usePresentation","useCurriculums","hasLoadedCurriculums","hasLoaded","preferredCurriculum","availableCurriculums","updateCurriculum","useSetPageMetadata","OnboardingScreenConfigs","currentUser","UserRequests","selectedCurriculum","setSelectedCurriculum","OnboardingLayout","instanceRegion","InstanceRegion","ImageUrls","hasCustomButtons","onClickNext","curriculumId","curriculumName","Promise","all","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","onSelectCurriculum","CoverPill"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8022],{53353:(e,t,a)=>{a.d(t,{c:()=>f,l:()=>v});var n=a(32735),r=a(232),s=a.n(r),i=a(8604),l=a(83345);const c={heatMap:"epapa",legend:"uhH4p"};function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var m="shared.engagementHeatMap",u="#f1f1f1",d=s().scale(["#daf07d","#08bd1a"]),p=[0,.01,.25,.5,.75,1];function g(e,t){return e?d(e/t).hex():u}function h(e,t){for(var a=[],n=0;n<e.length;n++){var r=n>0&&e[n-1],s=e[n],i=n<e.length-1&&e[n+1];s===r&&s===i||a.push("".concat(g(s,t)," ").concat(100/e.length*n,"%"))}return"linear-gradient(to right, ".concat(a.join(","),")")}function v(){var e=Math.max.apply(Math,p),t=100/p.length;return n.createElement("div",{className:"d-flex justify-content-between w-100"},n.createElement(l.x,{namespace:m,phrase:"less"}),n.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(c.legend)},p.map((function(a,r){return n.createElement("div",{key:r,style:{width:"".concat(t,"%"),backgroundColor:g(a,e)}})}))),n.createElement(l.x,{namespace:m,phrase:"more"}))}function f(e){var t,a,r,s=(0,i.O)(e.engagement),l=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return o(e)}(r=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?o(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());return n.createElement("div",{className:"border rounded ".concat(c.heatMap," ").concat(null!==(a=e.className)&&void 0!==a?a:""),style:{background:h(s,l)}})}},25216:(e,t,a)=>{a.d(t,{L:()=>i});var n=a(32735),r=a(83914);const s={icon:"sAmpy",count:"faDs4"};function i(e){return n.createElement("section",{className:"d-flex flex-column border border-light rounded p-3 h-100"},n.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},n.createElement("div",{className:"".concat(s.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},n.createElement(r.x,{svgName:e.svgName,size:r.S.Small})),n.createElement("div",{className:"d-flex flex-column ms-2"},n.createElement("h2",{className:"h6 mb-0"},e.title),e.subtitle&&n.createElement("p",{className:"text-secondary font-size-sm mb-0"},e.subtitle)),"number"==typeof e.count&&n.createElement("div",{className:"".concat(s.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},21976:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(32735),r=a(72306),s=a.n(r),i=a(70312),l=a.n(i),c=a(75896),o=a(70072),m=function(e){return{title:{text:null},credits:{enabled:!1},yAxis:{title:{text:null},labels:{enabled:!1},gridLineWidth:0,tickPixelInterval:1,startOnTick:!1,endOnTick:!1,min:-.2},xAxis:{title:{text:e,margin:8,style:o.d},labels:{style:o.d},lineWidth:0},legend:{enabled:!1},chart:{type:"column",backgroundColor:"transparent",height:"160px",spacingTop:20},plotOptions:{column:{dataLabels:{enabled:!1},enableMouseTracking:!1,minPointLength:8}}}};function u(e){return n.createElement(l(),{highcharts:s(),options:(a=e.chartData,r=m(e.label),i=null===(t=c.m.first(a.series))||void 0===t?void 0:t.data.some((function(e){return e.y>0})),Object.assign(Object.assign({},r),{yAxis:Object.assign(Object.assign({},r.yAxis),i?{min:-.2}:{min:0,max:1}),xAxis:Object.assign(Object.assign(Object.assign({},r.xAxis),e.xAxis),{categories:a.categories}),series:a.series}))});var t,a,r,i}},461:(e,t,a)=>{a.d(t,{y:()=>m});var n=a(32735),r=a(77640),s=a(36848),i=a(40782),l=a(2606);const c={avatar:"uMuZt",image:"WdKiU"};var o=3;function m(e){return n.createElement(n.Fragment,null,e.students.length?n.createElement("ul",{className:"list-unstyled mb-2"},e.students.slice(0,o).map((function(t,a){return n.createElement("li",{key:a,className:"d-flex align-items-center mb-2"},n.createElement(r.t,{user:t,imageCdnUrl:e.imageCdnUrl,avatarClassName:c.avatar,detailsClassName:"ms-2",showDisplayName:!0,showSubText:!1,anonymiseUsers:e.anonymiseUsers}),n.createElement("div",{className:"d-flex align-items-center ms-auto"},n.createElement("span",{className:"me-2"},void 0===t.percentage?"- ":Math.round(100*t.percentage),"%"),n.createElement(i.O,{percentage:t.percentage,size:l.Mk.ExtraSmall})))}))):n.createElement("div",{className:"text-center"},n.createElement("img",{className:"".concat(c.image," mb-2"),src:e.imageUrl}),n.createElement("p",{className:"text-secondary mb-0",dangerouslySetInnerHTML:{__html:e.description}})),!!e.students.length&&e.appLink&&n.createElement(s.F,{appLink:e.appLink,className:"text-info mt-auto"},e.appLinkText))}},42642:(e,t,a)=>{a.d(t,{i:()=>g});var n=a(32735),r=a(23481),s=a(25216),i=a(21976),l=a(70072),c=a(83345),o=a(35223);const m={purpleChart:"OPcvi",grayChart:"HlWj7"};function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d="shared.insightDevices",p=r.T.encloseNamespace(d);function g(e){var t,a,r=function(){var t,a={Phone:0,Computer:0};return(null===(t=e.osCount)||void 0===t?void 0:t.length)?e.osCount.reduce((function(e,t){if(!t.name)return e;var a=function(e){switch(e){case"Android":case"Windows Phone":case"iOS":case"BlackBerry":return"Phone";case"Linux":case"Unix":case"Macintosh":case"Windows":return"Computer"}}(t.name);return a?(e[a]=e[a]+t.count,e):e}),a):a}(),g=Math.max.apply(Math,function(e){if(Array.isArray(e))return u(e)}(a=Object.keys(r).map((function(e){return r[e]})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=Object.keys(r).filter((function(e){return r[e]===g})),v={categories:Object.keys(r),series:[{type:"column",borderRadius:4,dataLabels:{enabled:!0,style:l.d,inside:!1,overflow:"allow",crop:!1},data:Object.keys(r).map((function(e){var t=0!==g&&r[e]===g;return{className:"".concat(0===r[e]?m.grayChart:m.purpleChart," ").concat(t?"":"opacity-25"),borderWidth:t?2:0,borderColor:t?"black":"",y:r[e]}}))}]};return n.createElement(s.L,{title:p("title"),svgClassName:"bg-light-ultramarine text-ultramarine",svgName:o.vn.Monitor},n.createElement("p",{className:"mb-0"},(null===(t=e.osCount)||void 0===t?void 0:t.filter((function(e){return e.name})).length)?n.createElement(c.x,{namespace:d,phrase:"description",options:{smartCount:h.length,device:1===h.length?h[0].toLowerCase():null}}):n.createElement(c.x,{namespace:d,phrase:"notViewed"})),n.createElement("div",{className:"position-relative mt-auto"},n.createElement(i.x,{label:p("device"),chartData:v,xAxis:{labels:{useHTML:!0,formatter:function(){return'\n <div class="d-flex flex-column align-items-center">\n <span class="'.concat(m.font,' font-size-sm text-dark mb-1">').concat(this.value,"</span>\n ").concat(function(e){var t="";switch(e){case"Computer":t=o.vn.Monitor;break;case"Phone":t=o.vn.Mobile;break;case"Tablet":t=o.vn.Tablet;break;default:return}return o.Nj.getSvg(t).replace(/<svg[^>]*>/g,'<svg class="svg-container">')}(this.value),"\n </div>\n ")}}}})))}},94652:(e,t,a)=>{a.d(t,{b:()=>p});var n=a(32735),r=a(23481),s=a(53353),i=a(25216),l=a(36848),c=a(83345),o=a(35223);const m={heatMap:"Rfr9N",heatMapTimepointIndicator:"s6JbA",heatMapTimepointIndicatorVisible:"mgjWX"};var u="shared.insightHeatmap",d=r.T.encloseNamespace(u);function p(e){var t=e.engagement.engagementRate>0?Math.round(100*e.engagement.engagementRate):null;return n.createElement(i.L,{title:d("title"),svgName:o.vn.Timer,svgClassName:"bg-light-green text-green"},n.createElement("div",{className:"mb-2"},n.createElement("p",{className:"mb-0"},t?n.createElement(c.x,{namespace:u,phrase:"everyoneWatched",options:{engagementRate:t}}):n.createElement(c.x,{namespace:u,phrase:"notWatched"})),t&&n.createElement(l.F,{appLink:e.heatmapAppLink,className:"text-info"},n.createElement(c.x,{namespace:u,phrase:"viewHeatmap"}))),n.createElement("div",{className:"mb-2"},n.createElement(s.c,{engagement:e.engagement,className:m.heatMap})),n.createElement("p",{className:"h3 text-center mb-2"},t||"--","%"),n.createElement("p",{className:"text-center mb-0 font-size-sm"},n.createElement(c.x,{namespace:u,phrase:"amountWatched"})))}},70072:(e,t,a)=>{a.d(t,{d:()=>n});var n={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},8604:(e,t,a)=>{function n(e){return new Array(Math.ceil(e.videoDuration)).fill(null).map((function(t,a){return e.heatMap[a]||0}))}a.d(t,{O:()=>n})},77640:(e,t,a)=>{a.d(t,{t:()=>p});var n=a(32735),r=a(23481),s=a(26136),i=a(20789),l=a(83914),c=a(76881),o=a(86613),m=a(64818),u=a(94831),d=r.T.encloseNamespace("shared.userRecipientItemMetadata");function p(e){var t,a,r,p,g,h=(r=(t=e).user,p=t.anonymiseUsers,g=t.showDisplayName,"profileId"in r?{name:(0,s.B)(r,p),surname:"",avatarUrl:null}:{name:p?(0,s.B)(r,!0):g?m.l.getDisplayName(r):m.l.getFullName(r),surname:r.surname,avatarUrl:null===(a=r.avatar)||void 0===a?void 0:a.url}),v=h.name,f=h.surname,b=h.avatarUrl;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(u.Z.avatarContainer," ").concat(e.avatarClassName," d-inline-block")},n.createElement(i.q,{imageUrl:b,imageCdnUrl:e.imageCdnUrl,initials:m.l.getInitials(v,f),showAnonymousUser:"profileId"in e.user,anonymousSvgSize:l.S.Small})),n.createElement("div",{className:e.detailsClassName},n.createElement("h4",{className:"font-size-normal fw-normal m-0"},v),e.showSubText&&"id"in e.user&&n.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=m.l.getUserType(e),a=m.l.getUserRole(e);if(t===c.Y.Staff)return a===o.i.Admin?d("admin"):d("staff");var n=m.l.getYearGroup(e);return(null==n?void 0:n.name)&&"Learners"!==n.name?n.name:d("student")}(e.user))))}p.defaults={showSubText:!0}},94644:(e,t,a)=>{a.d(t,{r:()=>m});var n=a(50242),r=a(81886),s=a(67058),i=a(14553),l=a(49267),c=a(49075),o={notFound:s.d,forbidden:{rating:i.q,yearLevel:i.q,region:l.a,privacy:i.q},badRequest:c._,internalServerError:c._};function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var s;s="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},o),t);s&&r.Q.Ry.isStatusCodeError(s)&&(s!==n.o.InternalServer?s!==n.o.NotFound?s!==n.o.Forbidden?a.badRequest||r.Q.Ry.throw(new i.badRequest):a.forbidden||r.Q.Ry.throw(new i.forbidden.privacy):a.notFound||r.Q.Ry.throw(new i.notFound):a.internalServerError||r.Q.Ry.throw(new c._))}}},91286:(e,t,a)=>{a.d(t,{v:()=>i});var n=a(32735),r=a(94644);function s(e){return e.map((function(e){return e.statusCode})).join(":")}function i(e,t,a){var i=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){i.forEach((function(e){(0,r.r)(e.statusCode,t,a)}))}),[s(i),t,a])}},93322:(e,t,a)=>{a.d(t,{F:()=>s});var n=a(32735),r=a(13126);function s(){n.useEffect((function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}}),[])}},49673:(e,t,a)=>{a.d(t,{u:()=>u});var n=a(32735),r=a(10874),s=a(83345),i=a(35223),l=a(99742),c=a(86099),o=a(25419),m="lite.insightsMask";function u(e){return n.createElement("div",{className:"".concat(!e.hasShared&&o.Z.mask," position-relative")},n.createElement("div",{className:e.hasShared?"":"position-absolute"},e.children),n.createElement("div",{className:e.hasShared?"":"".concat(o.Z.backdrop," d-flex flex-column align-items-center justify-content-start py-5")},!e.hasShared&&n.createElement("div",{className:"text-center p-5 m-5 w-50"},n.createElement("img",{className:"mb-3",src:l.W.Insights.SEND_PAPER_PLANE,width:288}),n.createElement("h2",{className:"h3 mb-3"},n.createElement(s.x,{namespace:m,phrase:"shareHeading"})),n.createElement("p",{className:"mb-3"},n.createElement(s.x,{namespace:m,phrase:"shareDescription"})),n.createElement(r.h,{svgName:i.vn.Share,className:"btn btn-dark",appLink:(0,c.YK)(e.video)},n.createElement(s.x,{namespace:m,phrase:"share"})))))}},94831:(e,t,a)=>{a.d(t,{Z:()=>n});const n={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"}},25419:(e,t,a)=>{a.d(t,{Z:()=>n});const n={mask:"LVGFp",backdrop:"cpCjr"}}}]);
|
|
2
|
-
//# sourceMappingURL=8022-0656cce655-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8022-0656cce655-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/engagement-heat-map/engagement-heat-map.scss","file:///app/packages/libs/shared/src/apps/analytics/components/engagement-heat-map/EngagementHeatMap.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insight-card/insight-card.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insight-card/InsightCard.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insight-chart/InsightChart.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insight-student-list/insight-student-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insight-student-list/InsightStudentList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/devices/insight-devices.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/devices/InsightDevices.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/insight-heatmap.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/InsightHeatmap.tsx","file:///app/packages/libs/shared/src/apps/analytics/constants/ChartStyles.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/EngagementUtils.ts","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/insights/components/insights-mask/InsightsShareMask.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss","file:///app/packages/projects/lite/src/apps/insights/components/insights-mask/insights-mask.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"heatMap\":\"epapa\",\"legend\":\"uhH4p\"};","import React from 'react';\nimport chroma from 'chroma-js';\n\nimport { getFullHeatMap } from 'libs/shared/apps/analytics/utils/EngagementUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\n\nimport styles from './engagement-heat-map.scss';\n\nconst namespace = 'shared.engagementHeatMap';\n\nconst ZERO_COLOUR = '#f1f1f1';\nconst MIN_COLOUR = '#daf07d';\nconst MAX_COLOUR = '#08bd1a';\n\nconst COLOUR_SCALE = chroma.scale([ MIN_COLOUR, MAX_COLOUR ]);\n\nconst LEGEND_VALUES = [ 0, 0.01, 0.25, 0.5, 0.75, 1 ];\n\nfunction getBackgroundColor(value: number, max: number): string {\n if (!value)\n return ZERO_COLOUR;\n\n return COLOUR_SCALE(value / max).hex();\n}\n\nfunction getGradient(data: number[], max: number): string {\n const gradient: string[] = [];\n\n for (let i = 0; i < data.length; i++) {\n const previousValue = i > 0 && data[i - 1];\n const currentValue = data[i];\n const nextValue = i < data.length - 1 && data[i + 1];\n\n /**\n * We want to capture colour changes but if a value has the same value\n * of both of its neighbours, we can skip it.\n */\n if (currentValue === previousValue && currentValue === nextValue)\n continue;\n\n gradient.push(`${getBackgroundColor(currentValue, max)} ${100 / data.length * i}%`);\n }\n\n return `linear-gradient(to right, ${gradient.join(',')})`;\n}\n\nexport function EngagementHeatMapLegend(): JSX.Element {\n const max = Math.max(...LEGEND_VALUES);\n const legendSquareWidthPercentage = 100 / LEGEND_VALUES.length;\n\n return (\n <div className='d-flex justify-content-between w-100'>\n <Text namespace={namespace} phrase='less' />\n <div className={`d-flex mx-1 flex-grow-1 ${styles.legend}`}>\n {LEGEND_VALUES.map((val, idx) => (\n <div\n key={idx}\n style={{\n width: `${legendSquareWidthPercentage}%`,\n backgroundColor: getBackgroundColor(val, max)\n }}\n />\n ))}\n </div>\n <Text namespace={namespace} phrase='more' />\n </div>\n );\n}\n\ninterface EngagementHeatMapProps {\n engagement: Engagement;\n max?: number;\n className?: string;\n}\n\nexport function EngagementHeatMap(props: EngagementHeatMapProps): JSX.Element {\n const heatMap = getFullHeatMap(props.engagement);\n const max = props.max ?? Math.max(...heatMap);\n\n return (\n <div\n className={`border rounded ${styles.heatMap} ${props.className ?? ''}`}\n style={{\n background: getGradient(heatMap, max)\n }}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"sAmpy\",\"count\":\"faDs4\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport styles from './insight-card.scss';\n\ninterface InsightCardProps extends React.PropsWithChildren {\n svgName: string;\n svgClassName: string;\n title: string;\n subtitle?: string;\n count?: number;\n}\n\nexport function InsightCard(props: InsightCardProps) {\n return (\n <section className='d-flex flex-column border border-light rounded p-3 h-100'>\n <div className={`d-flex ${props.subtitle ? 'align-items-top' : 'align-items-center'} mb-2`}>\n <div className={`${styles.icon} ${props.svgClassName} rounded-circle d-flex justify-content-center align-items-center`}>\n <SvgContainer svgName={props.svgName} size={SvgContainerSize.Small} />\n </div>\n <div className='d-flex flex-column ms-2'>\n <h2 className='h6 mb-0'>{props.title}</h2>\n {props.subtitle && <p className='text-secondary font-size-sm mb-0'>{props.subtitle}</p>}\n </div>\n {typeof props.count === 'number' && (\n <div className={`${styles.count} d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto`}>\n {props.count}\n </div>\n )}\n </div>\n {props.children}\n </section>\n );\n}","import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\n\nconst getStaticChartOptions = (label: string): Highcharts.Options => {\n return {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n enabled: false\n },\n gridLineWidth: 0,\n tickPixelInterval: 1,\n startOnTick: false,\n endOnTick: false,\n min: -0.2\n },\n xAxis: {\n title: {\n text: label,\n margin: 8,\n style: CHART_FONT_STYLES\n },\n labels: {\n style: CHART_FONT_STYLES\n },\n lineWidth: 0\n },\n legend: {\n enabled: false\n },\n chart: {\n type: 'column',\n backgroundColor: 'transparent',\n height: '160px',\n spacingTop: 20\n },\n plotOptions: {\n column: {\n dataLabels: {\n enabled: false\n },\n enableMouseTracking: false,\n minPointLength: 8\n }\n }\n };\n};\n\ninterface InsightChartProps {\n label: string;\n chartData: ChartData;\n xAxis?: Highcharts.XAxisOptions;\n}\n\nexport function InsightChart(props: InsightChartProps) {\n function getChartOptions(): Highcharts.Options {\n const data = props.chartData;\n const staticChartOptions = getStaticChartOptions(props.label);\n\n const hasData = ArrayHelper.first(data.series)?.data.some((data: Highcharts.PointOptionsObject) => data.y > 0);\n\n return {\n ...staticChartOptions,\n yAxis: {\n ...staticChartOptions.yAxis,\n ...(hasData ? {\n min: -0.2\n } : {\n min: 0,\n max: 1\n })\n },\n xAxis: {\n ...staticChartOptions.xAxis,\n ...props.xAxis,\n categories: data.categories\n },\n series: data.series\n };\n }\n\n return (\n <HighchartsReact\n highcharts={Highcharts}\n options={getChartOptions()}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"uMuZt\",\"image\":\"WdKiU\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UserRecipientItemMetadata } from 'libs/shared/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { ProgressCircleSize } from 'libs/shared/components/percentage-indicator/PercentageIndicatorUtils';\nimport { User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport styles from './insight-student-list.scss';\n\ntype UserPercentage = (User | PublicInteractiveUser) & {\n percentage?: number;\n}\n\nconst MAX_ITEMS = 3;\n\ninterface InsightStudentListProps {\n students: UserPercentage[];\n imageUrl: string;\n imageCdnUrl: string;\n description: string;\n anonymiseUsers: boolean;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\nexport function InsightStudentList(props: InsightStudentListProps) {\n return (\n <>\n {props.students.length ? (\n <ul className='list-unstyled mb-2'>\n {props.students.slice(0, MAX_ITEMS).map((student, index) => (\n <li key={index} className='d-flex align-items-center mb-2'>\n <UserRecipientItemMetadata\n user={student}\n imageCdnUrl={props.imageCdnUrl}\n avatarClassName={styles.avatar}\n detailsClassName='ms-2'\n showDisplayName\n showSubText={false}\n anonymiseUsers={props.anonymiseUsers}\n />\n\n <div className='d-flex align-items-center ms-auto'>\n <span className='me-2'>{student.percentage === undefined ? '- ' : Math.round(student.percentage * 100)}%</span>\n <PercentageIndicator percentage={student.percentage} size={ProgressCircleSize.ExtraSmall} />\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <div className='text-center'>\n <img className={`${styles.image} mb-2`} src={props.imageUrl} />\n <p className='text-secondary mb-0' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n )}\n\n {!!props.students.length && props.appLink && (\n <AppLink appLink={props.appLink} className='text-info mt-auto'>\n {props.appLinkText}\n </AppLink>\n )}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"purpleChart\":\"OPcvi\",\"grayChart\":\"HlWj7\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightChart } from 'libs/shared/apps/analytics/components/insight-chart/InsightChart';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { ChartData } from 'libs/shared/apps/analytics/interfaces/ChartData';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-devices.scss';\n\nconst namespace = 'shared.insightDevices';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n// Names from UserAgentHelper.getOperatingSystem()\nfunction getDeviceType(name: string) {\n switch (name) {\n case 'Android':\n case 'Windows Phone':\n case 'iOS':\n case 'BlackBerry':\n return 'Phone';\n case 'Linux':\n case 'Unix':\n case 'Macintosh':\n case 'Windows':\n return 'Computer';\n }\n}\n\nfunction getDeviceIcon(name: string) {\n let svgName = '';\n \n switch (name) {\n case 'Computer':\n svgName = cvSvgLibrary.Monitor;\n break;\n case 'Phone':\n svgName = cvSvgLibrary.Mobile;\n break;\n case 'Tablet':\n svgName = cvSvgLibrary.Tablet;\n break;\n default: return;\n }\n \n // Default svg attributes causes Highcharts error\n return SvgHelper.getSvg(svgName).replace(/<svg[^>]*>/g, '<svg class=\"svg-container\">');\n}\n\ninterface InsightDevicesProps {\n osCount: GroupedAnalyticsCount[]\n}\n\nexport function InsightDevices(props: InsightDevicesProps) {\n const categoriesData = getCategoriesData();\n const topDeviceCount = getTopDeviceCount();\n const topDevices = getTopDevices();\n\n function getCategoriesData() {\n const defaultDevices: HashObject = { Phone: 0, Computer: 0 };\n\n if (!props.osCount?.length)\n return defaultDevices;\n\n return props.osCount.reduce((acc, group) => {\n if (!group.name) return acc;\n\n const deviceCategory = getDeviceType(group.name);\n\n if (!deviceCategory) return acc;\n\n acc[deviceCategory] = acc[deviceCategory] + group.count;\n\n return acc;\n }, defaultDevices);\n }\n\n function getTopDeviceCount() {\n return Math.max(...Object.keys(categoriesData).map(category => categoriesData[category]));\n }\n\n function getTopDevices() {\n return Object.keys(categoriesData).filter(category => categoriesData[category] === topDeviceCount);\n }\n\n function getXAxisLabelIcons(): any {\n return {\n labels: {\n useHTML: true,\n formatter: function () {\n return `\n <div class=\"d-flex flex-column align-items-center\">\n <span class=\"${styles.font} font-size-sm text-dark mb-1\">${this.value}</span>\n ${getDeviceIcon(this.value)}\n </div>\n `;\n }\n }\n };\n }\n\n function getChartData(): ChartData {\n return {\n categories: Object.keys(categoriesData),\n series: [{\n type: 'column',\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n overflow: 'allow',\n crop: false\n },\n data: Object.keys(categoriesData).map(category => {\n const highestCount =\n topDeviceCount !== 0 && categoriesData[category] === topDeviceCount;\n\n return {\n className: `${categoriesData[category] === 0 ? styles.grayChart : styles.purpleChart} ${!highestCount ? 'opacity-25' : ''}`,\n borderWidth: highestCount ? 2 : 0,\n borderColor: highestCount ? 'black' : '',\n y: categoriesData[category]\n };\n })\n }]\n };\n }\n\n const chartData = getChartData();\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgClassName='bg-light-ultramarine text-ultramarine'\n svgName={cvSvgLibrary.Monitor}\n >\n <p className='mb-0'>\n {props.osCount?.filter(group => group.name).length\n ? (\n <Text\n namespace={namespace}\n phrase='description'\n options={{\n smartCount: topDevices.length,\n device: topDevices.length === 1 ? topDevices[0].toLowerCase() : null\n }}\n />\n ) : (\n <Text\n namespace={namespace}\n phrase='notViewed'\n />\n )}\n </p>\n\n <div className='position-relative mt-auto'>\n <InsightChart label={getPhrase('device')} chartData={chartData} xAxis={getXAxisLabelIcons()} />\n </div>\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"heatMap\":\"Rfr9N\",\"heatMapTimepointIndicator\":\"s6JbA\",\"heatMapTimepointIndicatorVisible\":\"mgjWX\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EngagementHeatMap } from 'libs/shared/apps/analytics/components/engagement-heat-map/EngagementHeatMap';\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-heatmap.scss';\n\nconst namespace = 'shared.insightHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHeatmapProps {\n engagement: Engagement;\n heatmapAppLink: Core.AppLink;\n}\n\nexport function InsightHeatmap(props: InsightHeatmapProps) {\n const engagementRate = props.engagement.engagementRate > 0 ? Math.round(props.engagement.engagementRate * 100) : null;\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Timer}\n svgClassName='bg-light-green text-green'\n >\n <div className='mb-2'>\n <p className='mb-0'>\n {engagementRate\n ? (\n <Text namespace={namespace} phrase='everyoneWatched' options={{ engagementRate }} />\n )\n : <Text namespace={namespace} phrase='notWatched' />\n }\n </p>\n {engagementRate &&\n <AppLink appLink={props.heatmapAppLink} className='text-info'>\n <Text namespace={namespace} phrase='viewHeatmap' />\n </AppLink>\n }\n </div>\n\n <div className='mb-2'>\n <EngagementHeatMap\n engagement={props.engagement}\n className={styles.heatMap}\n />\n </div>\n\n <p className='h3 text-center mb-2'>{engagementRate || '--'}%</p>\n <p className='text-center mb-0 font-size-sm'><Text namespace={namespace} phrase='amountWatched' /></p>\n </InsightCard>\n );\n}","export const CHART_FONT_STYLES = {\n fontSize: '12px',\n fontFamily: `\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"`,\n fontWeight: '400',\n color: '#313543'\n};","import { Engagement } from 'libs/shared/interfaces';\n\n/**\n * The heat map in the API response won't contain trailing zeros so we need to add those\n * in manually.\n */\nexport function getFullHeatMap(engagement: Engagement): number[] {\n return (new Array(Math.ceil(engagement.videoDuration))).fill(null).map((t, idx) => engagement.heatMap[idx] || 0);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n \n /**\n * Tertiary puts all students into a single group called 'Learners'.\n * When a student is in the 'Learners' group, we don't want to display the group name,\n * but instead we want to just show \"Student\". - Sha\n */\n if (yearGroup?.name && yearGroup.name !== 'Learners')\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\nfunction getUserProps({\n user, anonymiseUsers, showDisplayName\n}: {\n user: User | PublicInteractiveUser,\n showDisplayName: boolean;\n anonymiseUsers?: boolean;\n}) {\n if ('profileId' in user) {\n return {\n name: anonymiseUserName(user, anonymiseUsers),\n surname: '',\n avatarUrl: null\n };\n }\n\n return {\n name: anonymiseUsers\n ? anonymiseUserName(user, true)\n : showDisplayName\n ? UserHelper.getDisplayName(user)\n : UserHelper.getFullName(user),\n surname: user.surname,\n avatarUrl: user.avatar?.url\n };\n}\n\nUserRecipientItemMetadata.defaults = {\n showSubText: true\n};\n\ninterface UserRecipientItemMetadataProps {\n user: User | PublicInteractiveUser;\n imageCdnUrl: string;\n detailsClassName?: string;\n avatarClassName?: string;\n showDisplayName: boolean;\n showSubText?: boolean;\n anonymiseUsers?: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n const { name, surname, avatarUrl } = getUserProps(props);\n\n return (\n <>\n <div className={`${styles.avatarContainer} ${props.avatarClassName} d-inline-block`}>\n <Avatar\n imageUrl={avatarUrl}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(name, surname)}\n showAnonymousUser={'profileId' in props.user}\n anonymousSvgSize={SvgContainerSize.Small}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {name}\n </h4>\n {props.showSubText && `id` in props.user && <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>}\n </div>\n </>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport styles from './insights-mask.scss';\n\nconst namespace = 'lite.insightsMask';\n\ninterface InsightsShareMaskProps extends React.PropsWithChildren {\n hasShared: boolean;\n video: VideoTypes;\n}\n\nexport function InsightsShareMask(props: InsightsShareMaskProps) {\n return (\n <div className={`${!props.hasShared && styles.mask} position-relative`}>\n <div className={!props.hasShared ? 'position-absolute' : ''}>{props.children}</div>\n <div\n className={!props.hasShared ? `${styles.backdrop} d-flex flex-column align-items-center justify-content-start py-5` : ''}\n >\n {!props.hasShared && (\n <div className='text-center p-5 m-5 w-50'>\n <img className='mb-3' src={ImageUrls.Insights.SEND_PAPER_PLANE} width={288} />\n <h2 className='h3 mb-3'><Text namespace={namespace} phrase='shareHeading' /></h2>\n <p className='mb-3'><Text namespace={namespace} phrase='shareDescription' /></p>\n <IconButton svgName={cvSvgLibrary.Share} className='btn btn-dark' appLink={getShareAppLink(props.video)}>\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n )}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"LVGFp\",\"backdrop\":\"cpCjr\"};"],"names":["namespace","ZERO_COLOUR","COLOUR_SCALE","LEGEND_VALUES","getBackgroundColor","value","max","hex","getGradient","data","gradient","i","length","previousValue","currentValue","nextValue","push","join","EngagementHeatMapLegend","Math","legendSquareWidthPercentage","className","Text","phrase","map","val","idx","key","style","width","backgroundColor","EngagementHeatMap","props","heatMap","engagement","background","InsightCard","subtitle","svgClassName","SvgContainer","svgName","size","S","title","count","children","getStaticChartOptions","label","text","credits","enabled","yAxis","labels","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","min","xAxis","margin","lineWidth","legend","chart","type","height","spacingTop","plotOptions","column","dataLabels","enableMouseTracking","minPointLength","InsightChart","highcharts","options","chartData","staticChartOptions","hasData","series","some","y","categories","MAX_ITEMS","InsightStudentList","students","slice","student","index","UserRecipientItemMetadata","user","imageCdnUrl","avatarClassName","detailsClassName","showDisplayName","showSubText","anonymiseUsers","undefined","percentage","round","PercentageIndicator","src","imageUrl","dangerouslySetInnerHTML","__html","description","appLink","AppLink","appLinkText","getPhrase","LanguageService","InsightDevices","categoriesData","defaultDevices","Phone","Computer","osCount","reduce","acc","group","name","deviceCategory","getDeviceType","getCategoriesData","topDeviceCount","Object","keys","category","topDevices","filter","borderRadius","inside","overflow","crop","highestCount","borderWidth","borderColor","smartCount","device","toLowerCase","useHTML","formatter","this","SvgHelper","replace","getDeviceIcon","InsightHeatmap","engagementRate","heatmapAppLink","CHART_FONT_STYLES","fontSize","fontFamily","fontWeight","color","getFullHeatMap","Array","ceil","videoDuration","fill","t","surname","avatarUrl","avatar","url","initials","showAnonymousUser","anonymousSvgSize","getSubText","userType","role","yearGroup","defaults","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","forEach","useLockContentWidth","InsightsShareMask","hasShared","video"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9013],{71553:(e,t,n)=>{n.d(t,{I:()=>l});var a=n(99940),r=n(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var l={interactiveResultSet:function(e,t,n,l,c,s,o,u){return{url:c?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),l),data:i(n,l),type:a.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:s,error:o,always:u}},mark:function(e,t,n,r,i,l,c){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(r.resultId),type:a.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:l,always:c}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:a.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:a.k.POST,normalize:!1}}}},83657:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),r=n(91967),i=n(10874),l=n(36532),c=n(42735),s=n(86509);function o(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],o=[];t.forEach((function(e){e.button?n.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:u},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(c.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var s=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(l.u,{title:t.tooltip,spanHack:!0},s):s}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,o.length?a.createElement(s.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},39902:(e,t,n)=>{n.d(t,{f:()=>s});var a=n(32735),r=n(70680),i=n(20354);function l(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function s(e,t){var n,s,o=(n=a.useState([]),s=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return c}}(n,s)||l(n,s)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],m=o[1];a.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),p=(0,r.v9)((function(e){return e}));if(a.useEffect((function(){u.forEach((function(e){var n=t(e);i.a.getResponse(p,n.key).shouldFetch&&i.a.fetch(d,n)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var f={},y={};return u.forEach((function(e,n){var a=t(e),r=i.a.getResponse(p,a.key);y[n]=r,r.data&&r.data.forEach((function(e){return f[e.id]=e}))})),{items:Object.keys(y).some((function(e){return!!y[e].data}))?f:null,isFetching:!!Object.keys(y).some((function(e){return y[e].isFetching}))}}},93322:(e,t,n)=>{n.d(t,{F:()=>i});var a=n(32735),r=n(13126);function i(){a.useEffect((function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}}),[])}},57302:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>ke});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),c=n(26025),s=n(88180),o=n(71020),u=n(83345),m=n(16714),d=n(39151),p=n(1666),f=n(31949),y=n(79967),h=n(93322),v=n(22902),g=n(79612),b=n(37802),E=n(14070),S=n(97291),I=n(64208),k=n(86099),w=n(34509),N=n(75896),O=n(36848),j=n(89965),C=n(4594);const A={noCaret:"TMpTN"};function x(e){return function(e){if(Array.isArray(e))return F(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||L(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return c}}(e,t)||L(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function L(e,t){if(e){if("string"==typeof e)return F(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?F(e,t):void 0}}function F(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var M="insights.insightsTypeFilters",P=i.T.encloseNamespace(M);function R(e){var t=[{label:P("playlists"),filter:C.E.Playlist},{label:P("series"),filter:C.E.Series}],n=e.typeIdParams.filter((function(e){return t.some((function(t){return e===t.filter}))})),i=T(a.useState(!1),2),l=i[0],c=i[1],s=T(a.useState(n),2),o=s[0],m=s[1];function d(){var n=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},n),{typeId:[].concat(x(e.typeIdParams.filter((function(e){return!t.find((function(t){return e===t.filter}))}))),x(o))})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"h6 mb-0"},a.createElement(u.x,{namespace:M,phrase:"filters"})),a.createElement("div",{className:"d-flex border-start border-light ps-3 ms-3 gap-2"},a.createElement(U,{typeId:C.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(U,{typeId:C.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(U,{typeId:C.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(w.Z,{onToggle:function(e){c(e),e||d()},show:l},a.createElement(w.Z.Toggle,{className:A.noCaret,variant:n.length?"dark":"outline-dark"},a.createElement("span",{className:"fw-semibold mb-0"},a.createElement(u.x,{namespace:M,phrase:"moreFilters"}),n.length?" - ".concat(n.length):"")),a.createElement(w.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(u.x,{namespace:M,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},t.map((function(e){return a.createElement("li",{key:"".concat(e.label,"-filter"),className:"my-1"},a.createElement(j.X,{id:"".concat(e.label,"-filter"),label:e.label,onChange:function(){return t=e.filter,void m(N.m.addOrRemoveImmutable(o,t));var t},checked:(t=e.filter,!!o.find((function(e){return e===t})))}));var t}))),a.createElement("button",{onClick:function(){return d(),void c(!1)},className:"btn btn-link text-info float-end p-0 mb-0"},a.createElement(u.x,{namespace:M,phrase:"apply"})))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:function(){m([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))},className:"btn btn-link ms-1"},a.createElement(u.x,{namespace:M,phrase:"resetAll"})))}function U(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=N.m.addOrRemoveImmutable(e.typeFilters,e.typeId),l=Object.assign(Object.assign({},n),{params:Object.assign(Object.assign({},r),{typeId:i})});function c(){return e.typeId===C.E.Video?"videos":e.typeId===C.E.Clip?"clips":e.typeId===C.E.Interactive?"interactives":void 0}return a.createElement(O.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(P("ariaFilterBy"),": ").concat(P(c()))},a.createElement(u.x,{namespace:M,phrase:c()}))}var D=n(11293),B=n(23232),H=n(99742),V=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function _(){return a.createElement(B.u,null,a.createElement(B.u.Image,{src:H.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(B.u.Heading,null,V("heading")),a.createElement(B.u.Info,null,V("info")),a.createElement(B.u.Cta,{appLink:{application:S.O.DASHBOARD,action:E.e.Dashboard.HOME},text:V("cta")}))}var z=n(82602),G=n(65858),q=n(29024),$=n(65853),Q=n(64249),W=n(83657),Z=n(60995),Y=n(11882),K=n(85063),X=n(31908),J=n(110),ee=n(31754);function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function ae(e,t,n){return(t=function(e){var t=function(e){if("object"!=te(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==te(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=i.T.encloseNamespace("myShares.mySharesTable");function ie(e){var t;if(e.type===K.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var n=e.recipients.map((function(e){return e.dateShared}));return n.sort((function(e,t){return J.O.isSame(e,t)?0:J.O.isAfter(e,t)?1:-2})),n.length?N.m.last(n):""}var le=n(24758);const ce={mySharesTable:"peXGl"};var se="myShares.mySharesTable";function oe(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(u.x,{namespace:se,phrase:"videoUnavailable"});if(X.M.isVideoType(n)&&!(null===(t=X.M.getCanBeConsumed(n))||void 0===t?void 0:t.canNavigate))return a.createElement("span",{className:"clamp-2"},n.name);var r=function(){switch(n.typeId){case C.E.Series:return"series";case C.E.Playlist:return"playlist"}}();return a.createElement("div",null,X.M.isVideoType(n)&&a.createElement(Y.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,k.Qh)(n.series):null,analyticsOptions:{location:G.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(Z.m,null,a.createElement(u.x,{namespace:se,phrase:r})),a.createElement(O.F,{appLink:(0,k.Qh)(n),className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:Q.I.getAnalyticsEntity(n.type),actionType:G.Vw.Click,location:G.LZ.MyShares}},n.name),!!e.requireMarking&&a.createElement("div",{className:"font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2"},a.createElement(u.x,{namespace:se,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function ue(e){var t,n,r,i,l,c,s,o=(t=e.sentShares,n=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,l=e.interactivesPendingReview,c=e.dependencies,a.useMemo((function(){var e=[],a=n.reduce((function(e,t){return Object.assign(ae({},t.id,t),e)}),{}),c=r.reduce((function(e,t){return Object.assign(ae({},t.id,t),e)}),{}),s=null==l?void 0:l.reduce((function(e,t){return Object.assign(ae({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===K.y.DirectShare&&(l=[],null===(n=t.recipients)||void 0===n||n.forEach((function(e){var t=c[e.id];t&&l.push(t)}))),i){var o=i.typeId===C.E.Interactive&&(null==s?void 0:s[i.interactiveId]);e.push(Object.assign({share:t,sharedObject:i,shareRecipients:l,dateShared:ie(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===K.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?ee.x.groupByDateShared(e):ae({},re("title"),e)}),function(e){if(Array.isArray(e))return ne(e)}(s=c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,t){if(e){if("string"==typeof e)return ne(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ne(e,t):void 0}}(s)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()));return a.createElement(a.Fragment,null,Object.keys(o).map((function(t,n){return a.createElement("div",{key:t},a.createElement("div",{className:"".concat(ce.mySharesTable," gap-3 px-3")},a.createElement("p",{className:"fw-semibold mb-2 ms-n3"},t),0===n&&a.createElement(a.Fragment,null,a.createElement("div",null),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:se,phrase:"sharedToHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:se,phrase:"dateSharedHeading"})),a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(u.x,{namespace:se,phrase:"viewsHeading"})))),a.createElement("div",{className:"d-flex flex-column rounded-3 border border-light mb-4"},o[t].map((function(t){var n=t.sharedObject,r=t.share.type===K.y.ShareLink&&$.R.getIconAndText({entity:n,entityTypeId:n.typeId,hasStudentExp:!1,isPasswordProtected:t.share.isPasswordProtected,linkExpireDate:t.share.linkExpireDate,privacy:{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions},status:t.share.status,yearGroups:e.yearGroup});return a.createElement("div",{key:t.share.id,className:"".concat(ce.mySharesTable," align-items-center p-3 gap-3 border-light")},a.createElement(q.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:G.LZ.MyShares,showCollectionMask:!0,showVideoCount:!0}),a.createElement(oe,{sharedObject:t.sharedObject,requireMarking:t.pendingReview}),a.createElement(le.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl}),a.createElement("p",{className:"mb-0"},(0,z.WU)(t.dateShared)),a.createElement("p",{className:"mb-0"},a.createElement(u.x,{namespace:se,phrase:"views",options:{count:t.viewCount}})),a.createElement(W.e,{className:"justify-content-end gap-2",actions:e.getObjectActions(n)}))}))))})))}const me={table:"elIjR",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function de(){return a.createElement("div",{className:"".concat(me.table," align-items-center striped-row rounded-3 gap-3 p-3")},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 ".concat(me.image)}),a.createElement("div",{className:"partial-loading-background w-75 ".concat(me.name)}," "),a.createElement("div",{className:"partial-loading-background w-75 rounded-pill ".concat(me.avatar)}),a.createElement("div",{className:"partial-loading-background ".concat(me.date)}," "),a.createElement("div",{className:"partial-loading-background ".concat(me.views)}," "),a.createElement("div",{className:"d-flex justify-content-end gap-2 p-3"},a.createElement("div",{className:"partial-loading-background rounded w-50 ".concat(me.actions)}),a.createElement("div",{className:"partial-loading-background rounded w-33 ".concat(me.actions)})))}function pe(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"striped-list no-full-width"},a.createElement("div",{className:"".concat(me.table," gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(me.date)}," "),a.createElement("div",null),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(me.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(me.date)}," "),a.createElement("div",{className:"partial-loading-background mb-2 ".concat(me.date)}," ")),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(me.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(me.date)}," "),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null),a.createElement(de,null))))}var fe="myShares.mySharesEmptyState",ye=i.T.encloseNamespace(fe);function he(){return a.createElement(B.u,null,a.createElement(B.u.Image,{src:H.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:ye("heading")}),a.createElement(B.u.Heading,null,a.createElement(u.x,{namespace:fe,phrase:"heading"})),a.createElement(B.u.Info,null,a.createElement(u.x,{namespace:fe,phrase:"info"})),a.createElement(B.u.Cta,{text:i.T.getPhrase(fe,"cta"),appLink:{application:S.O.SIGN_UP,action:E.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:G.Vw.Click,location:G.LZ.MySharesLanding,entity:G.py.AppLink,workflowPhase:G.eu.Start,descriptor:G.Yu.SignUp}}))}var ve=n(35223),ge=i.T.encloseNamespace("myShares.myShares");function be(e){return function(e){if(Array.isArray(e))return Ee(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Ee(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ee(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ee(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Se="myShares.myShares",Ie=i.T.encloseNamespace(Se);function ke(e){var t,n,i=(0,v.T)(),w=i.hasPermissions,N=i.hasLocalPermissions,O=(0,b.r)(null).hasInsights;(0,h.F)();var j,C,A=(0,y.k)(),x=(C=null==(j=e.queryParams)?void 0:j.typeId)?"string"==typeof C?[+C]:(null==j?void 0:j.typeId.map((function(e){return+e})))||[]:[],T=c.B.getAudienceAppLinkParams(),L={application:S.O.MY_SHARES,action:E.e.MyShares.HOME,params:Object.assign(Object.assign({},T),{typeId:x})},F={recipientUserId:null==T?void 0:T.users,recipientGroupId:[].concat(be((null==T?void 0:T.classroomGroups)||[]),be((null==T?void 0:T.classrooms)||[])),objectTypeId:x.length?x:void 0},M=!N(m.E.ViewMySharesLanding)||w(m.C.ViewMyShares)&&O,P=(0,I.aH)(F,!0,M),U=P.sentShares,B=P.sharedObjects,H=P.shareRecipients,V=P.interactivesPendingReview,z=P.isFetching,G=P.showPartialLoading,q=P.nextCursor,$=P.hasMore,Q=P.fetchNext,W=P.imageCdnUrl,Z=P.dependencies;(0,g.M)({title:Ie("myShares")});var Y,K,J=(0,b.r)(null).hasClassrooms,ee=l.a.useBasicFetch(d.L.config()),te=l.a.useBasicFetch(f.N.currentUser()),ne=l.a.useBasicFetch((null===(t=te.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(te.data.customerId)),ae=(Y=T,K=JSON.stringify(Y),a.useCallback((function(e){return function(e,t){var n=[],a={button:!0,className:"btn btn-outline-dark"};if(X.M.isVideoType(e)){if(!X.M.getCanBeConsumed(e).canConsume)return[];n.push(Object.assign({svgName:ve.vn.Analytics,label:ge("viewInsights"),appLink:Object.assign(Object.assign({},(0,k.Dw)(e)),{params:t}),group:"insights"},a))}return n.push(Object.assign({label:ge("share"),svgName:ve.vn.Share,appLink:(0,k.YK)(e),group:"share"},a)),n}(e,Y)}),[K]));return a.useEffect((function(){w(m.C.ViewMyShares)&&O||r.Q.Ab.PageLoad("/")}),[M]),M?a.createElement("div",{className:"px-3"},a.createElement(D.p,{analyticsUrl:null===(n=ee.data)||void 0===n?void 0:n.analyticsWebUrl,hasAnalytics:w(m.C.ViewCustomerAnalytics)}),a.createElement("div",{className:"d-flex justify-content-between border-bottom pb-3 mb-3"},a.createElement("h1",{className:"mb-1"},a.createElement(u.x,{namespace:Se,phrase:"myShares"})),a.createElement(s.B,{hasClassroomsFeature:J})),a.createElement("div",{className:"mb-3"},a.createElement(R,{appLink:L,typeIdParams:x})),G?a.createElement(pe,null):U.length?a.createElement(a.Fragment,null,a.createElement(ue,{sentShares:U,sharedObjects:B,shareRecipients:H,interactivesPendingReview:V,getObjectAppLink:k.Qh,getObjectActions:ae,imageCdnUrl:W,groupByDateShared:!0,dependencies:Z,breakpoints:A,yearGroup:ne.data}),($||z)&&a.createElement(o._,{isFetching:z,fetchNext:Q,nextCursor:q})):a.createElement(_,null)):a.createElement(he,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>b});var a=n(32735),r=n(20354),i=n(75896),l=n(71553),c=n(30439),s=n(4594),o=n(39151),u=n(31949),m=n(39902),d=n(60115),p=n(85063),f={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===p.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return i.m.uniq(i.m.flatten(f.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return c}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){if(e){if("string"==typeof e)return v(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function g(e){return e.items?Object.values(e.items):[]}function b(e,t){var n,p,b=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(u.N.currentUser()),I=function(t){return b&&c.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(I(e))},w=(0,d.K)(I,k),N=w.items,O=w.hasMore,j=w.isFetching,C=w.nextCursor,A=i.m.uniq(null!==(n=null==N?void 0:N.map((function(e){return e.objectId})))&&void 0!==n?n:[]),x=(0,m.f)(A,(function(e){return c.o.sharedObjectsById(e)})),T=f.getRecipientIds(N),L=(0,m.f)(T,(function(e){return c.o.getRecipientsById(e,S.data.customerId)})),F=r.a.useBasicFetch(o.L.config()),M=function(e,t,n,r,i){var l=y(a.useState(t),2),c=l[0],s=l[1],o=y(a.useState(r),2),u=o[0],m=o[1];return a.useEffect((function(){t&&s(!0)}),[t]),a.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!c||n.length&&!u||!i.data)}(N,!!x.items,T,!!L.items,F),P=JSON.stringify(e),R=j||x.isFetching||L.isFetching,U=g(x),D=g(L),B=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==s.E.Interactive)return e;var n,a=t;return[].concat(function(e){if(Array.isArray(e))return v(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||h(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{metadataId:a.id,interactiveId:a.interactiveId}])}),[]),H=r.a.useBasicFetch(t&&!!x.items&&S.data&&l.I.pendingReviews({interactives:B,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),V=[R,P,H.isFetching];return{sentShares:N,sharedObjects:U,shareRecipients:D,interactivesPendingReview:H.data,isFetching:R,showPartialLoading:M,nextCursor:C,hasMore:O,fetchNext:k,imageCdnUrl:null===(p=F.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:V}}}}]);
|
|
2
|
-
//# sourceMappingURL=9013-adc5d3517a-lite.chunk.js.map
|