@clickview/lite 0.50.0-rc.4 → 0.50.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/{1437-0db2164033-lite.chunk.js → 1437-2931819506-lite.chunk.js} +2 -2
- package/dist/scripts/{1437-0db2164033-lite.chunk.js.map → 1437-2931819506-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1820-006bcd8691-lite.chunk.js → 1820-818cf5a35d-lite.chunk.js} +2 -2
- package/dist/scripts/{1820-006bcd8691-lite.chunk.js.map → 1820-818cf5a35d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1895-933141db03-lite.chunk.js → 1895-a799be78c3-lite.chunk.js} +3 -3
- package/dist/scripts/{1895-933141db03-lite.chunk.js.map → 1895-a799be78c3-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js → 2446-acc94130ed-lite.chunk.js} +3 -3
- package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.map → 2446-acc94130ed-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js → 2724-ee3a51e0c9-lite.chunk.js} +2 -2
- package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js.map → 2724-ee3a51e0c9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5242-04c52713f2-lite.chunk.js → 5242-a2a5d89eee-lite.chunk.js} +2 -2
- package/dist/scripts/{5242-04c52713f2-lite.chunk.js.map → 5242-a2a5d89eee-lite.chunk.js.map} +1 -1
- package/dist/scripts/{537-92893a696e-lite.chunk.js → 537-850ad2ee25-lite.chunk.js} +3 -3
- package/dist/scripts/{537-92893a696e-lite.chunk.js.map → 537-850ad2ee25-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js → 6263-736bbd8641-lite.chunk.js} +2 -2
- package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js.map → 6263-736bbd8641-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6309-79092eb273-lite.chunk.js → 6309-dd3a8e7f21-lite.chunk.js} +3 -3
- package/dist/scripts/{6309-79092eb273-lite.chunk.js.map → 6309-dd3a8e7f21-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6489-51de20f6f6-lite.chunk.js → 6489-335e4d9396-lite.chunk.js} +3 -3
- package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map} +1 -1
- package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js +3 -0
- package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js.map +1 -0
- package/dist/scripts/{6846-5ae3efe823-lite.chunk.js → 6846-08b00decd8-lite.chunk.js} +2 -2
- package/dist/scripts/{6846-5ae3efe823-lite.chunk.js.map → 6846-08b00decd8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7187-814cd6f6db-lite.chunk.js → 7187-93d4aac9eb-lite.chunk.js} +2 -2
- package/dist/scripts/{7187-814cd6f6db-lite.chunk.js.map → 7187-93d4aac9eb-lite.chunk.js.map} +1 -1
- package/dist/scripts/8055-08b92f8ed7-lite.chunk.js +3 -0
- package/dist/scripts/8055-08b92f8ed7-lite.chunk.js.map +1 -0
- package/dist/scripts/8139-f0229a0806-lite.chunk.js +3 -0
- package/dist/scripts/8139-f0229a0806-lite.chunk.js.map +1 -0
- package/dist/scripts/{841-85a91a6576-lite.chunk.js → 841-a60ac16a8c-lite.chunk.js} +3 -3
- package/dist/scripts/{841-85a91a6576-lite.chunk.js.map → 841-a60ac16a8c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8987-07d38d2bab-lite.chunk.js → 8987-649a6a16f4-lite.chunk.js} +2 -2
- package/dist/scripts/{8987-07d38d2bab-lite.chunk.js.map → 8987-649a6a16f4-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9839-5347f31f8b-lite.chunk.js → 9839-d50dedfab8-lite.chunk.js} +3 -3
- package/dist/scripts/9839-d50dedfab8-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-90f71581a8.min.js → bundle-7cf309c41a.min.js} +3 -3
- package/dist/scripts/bundle-7cf309c41a.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/6741-6222c7b762-lite.chunk.js +0 -3
- package/dist/scripts/6741-6222c7b762-lite.chunk.js.map +0 -1
- package/dist/scripts/8055-9c259a30c4-lite.chunk.js +0 -3
- package/dist/scripts/8055-9c259a30c4-lite.chunk.js.map +0 -1
- package/dist/scripts/8139-ec264689fd-lite.chunk.js +0 -3
- package/dist/scripts/8139-ec264689fd-lite.chunk.js.map +0 -1
- package/dist/scripts/9839-5347f31f8b-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-90f71581a8.min.js.map +0 -1
- /package/dist/scripts/{1895-933141db03-lite.chunk.js.LICENSE.txt → 1895-a799be78c3-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.LICENSE.txt → 2446-acc94130ed-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{537-92893a696e-lite.chunk.js.LICENSE.txt → 537-850ad2ee25-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6309-79092eb273-lite.chunk.js.LICENSE.txt → 6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.LICENSE.txt → 6489-335e4d9396-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-6222c7b762-lite.chunk.js.LICENSE.txt → 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8055-9c259a30c4-lite.chunk.js.LICENSE.txt → 8055-08b92f8ed7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-ec264689fd-lite.chunk.js.LICENSE.txt → 8139-f0229a0806-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{841-85a91a6576-lite.chunk.js.LICENSE.txt → 841-a60ac16a8c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9839-5347f31f8b-lite.chunk.js.LICENSE.txt → 9839-d50dedfab8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-90f71581a8.min.js.LICENSE.txt → bundle-7cf309c41a.min.js.LICENSE.txt} +0 -0
package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6489-51de20f6f6-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, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\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}\n\nconst ComingSoonNamePanel = ({ name, multiline }: 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={`${styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0 pb-1';\n } else {\n textClassName += ' 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 </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}\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}\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 const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle\n };\n\n return (\n <div\n className={`border d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''}`}\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\ninterface 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 { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\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 imageUrl={props.curriculum.cover?.url} />\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 { 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 { 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\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-dark-blue 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_\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["ComingSoonNamePanel","name","multiline","wrapperClassName","textClassName","className","namespace","phrase","NormalNamePanel","subtitle","title","CoverPillWidgetContent","props","coverUrl","size","isLarge","childProps","data","isSelected","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","style","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","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
|
+
{"version":3,"file":"scripts/6489-335e4d9396-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, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\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}\n\nconst ComingSoonNamePanel = ({ name, multiline }: 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={`${styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0 pb-1';\n } else {\n textClassName += ' 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 </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}\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}\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 const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle\n };\n\n return (\n <div\n className={`border d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''}`}\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\ninterface 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 { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\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 imageUrl={props.curriculum.cover?.url} />\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 { 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 { 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\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-dark-blue 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_\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["ComingSoonNamePanel","name","multiline","wrapperClassName","textClassName","className","namespace","phrase","NormalNamePanel","subtitle","title","CoverPillWidgetContent","props","coverUrl","size","isLarge","childProps","data","isSelected","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","style","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","currentUser","UserRequests","selectedCurriculum","setSelectedCurriculum","OnboardingLayout","instanceRegion","InstanceRegion","ImageUrls","hasCustomButtons","onClickNext","curriculumId","curriculumName","Promise","all","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","onSelectCurriculum","CoverPill"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6741],{3278:(e,t,n)=>{n.d(t,{z:()=>p});var r=n(32735),a=n(39202),i=n(23481),o=n(65858),c=n(38502),s=n(83345),l=n(40424);const u={pillTab:"bMJM0"};var d="discover.header";function p(e){var t,n,p,f,m,h;if(!e.type)return r.createElement(r.Fragment,null);if(e.type===l.Yv.Learner||e.hasStudentExperience)return r.createElement("div",{className:"py-3"},r.createElement("h1",{className:"h2 mb-0"},r.createElement(s.x,{namespace:d,phrase:"heading"})));var v=[{name:i.T.getPhrase(d,"forYou"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.forYou,active:"forYou"===e.active,analyticsData:{name:i.T.getPhrase(d,"forYou"),url:a.C$.getHref(null===(n=e.appLinks)||void 0===n?void 0:n.forYou)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:i.T.getPhrase(d,"whatsNew"),appLink:null===(p=e.appLinks)||void 0===p?void 0:p.whatsNew,active:"whatsNew"===e.active,analyticsData:{name:i.T.getPhrase(d,"whatsNew"),url:a.C$.getHref(null===(f=e.appLinks)||void 0===f?void 0:f.whatsNew)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}];return e.showCalendar&&v.push({name:i.T.getPhrase(d,"calendar"),appLink:null===(m=e.appLinks)||void 0===m?void 0:m.calendar,active:"calendar"===e.active,analyticsData:{name:i.T.getPhrase(d,"calendar"),url:a.C$.getHref(null===(h=e.appLinks)||void 0===h?void 0:h.calendar)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}),r.createElement("div",{className:"py-3 text-center"},r.createElement(c.r,{tabs:v,className:u.pillTab}))}},28046:(e,t,n)=>{n.d(t,{l:()=>f,v:()=>m});var r=n(39479),a=["pdf"],i=["doc","docx","dotx","dot","rtf","docm","odt"],o=["csv","txt"],c=["xls","xlt","xlsx"],s=["jpg","tif","png","bmp","gif","jpeg"],l="video/*",u=["zip","rar"],d=["ppt","pot","pps","pptx"],p=["srt"],f={IMAGES:".".concat(s.join(",.")),VIDEO:l,MIXED_MEDIA:".".concat(s.join(",."),",").concat(l),RESOURCES:".".concat([].concat(i,c,d,a,o,s,u).join(",.")),SUBTITLES:".".concat(p.join(",."))},m={getResourceType:function(e){var t=e.toLowerCase();return r.contains(i,t)?"document":r.contains(c,t)?"excel":r.contains(d,t)?"powerpoint":r.contains(a,t)?"pdf":r.contains(o,t)?"text":r.contains(s,t)?"image":r.contains(u,t)?"archive":r.contains(p,t)?"subtitle":""}}},38502:(e,t,n)=>{n.d(t,{r:()=>d});var r=n(32735),a=n(49985),i=n(36848),o=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return r.createElement(r.Fragment,null,!!e.tab.svgName&&r.createElement("div",{className:e.tab.name?"pe-1":""},r.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&r.createElement("div",{className:"ps-2"},r.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function d(e){var t;return r.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},r.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return r.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?r.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},r.createElement(u,{tab:e})):r.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&a.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},r.createElement(u,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},17101:(e,t,n)=>{var r;n.d(t,{n:()=>r}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer",e[e.RequestLivestream=7]="RequestLivestream"}(r||(r={}))},7198:(e,t,n)=>{n.d(t,{f:()=>a});var r=n(99940),a={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:r.k.POST,data:Object.assign(Object.assign({},e),t)}}}},52167:(e,t,n)=>{n.d(t,{m:()=>l});var r=n(53301),a=n.n(r),i=n(28046),o=n(19808),c=n(86613);function s(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 l={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===c.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion}},mapInstanceRegionToTag:function(e){switch(e){case o.b.AU:return"au";case o.b.NZ:return"nz";case o.b.UK:return"uk";case o.b.US:return"us"}},getTags:function(e,t,n,r){var a,i=[t].concat(function(e){if(Array.isArray(e))return s(e)}(a=r)||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 s(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)?s(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.")}());i.push(n?"student":"staff"),e.role===c.i.Admin&&i.push("administrator");var o=l.mapInstanceRegionToTag(e.instanceRegion);return o&&i.push(o),i},categorizeFiles:function(e){return e.reduce((function(e,t){var n=t.get("fileInfo");return a().isValidFile(t.get("file"),i.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e}),{imageUrls:[],videoUrls:[]})}}},16741:(e,t,n)=>{n.r(t),n.d(t,{CuratedDiscoverView:()=>te});var r=n(32735),a=n(23481),i=n(57900),o=n(20354),c=n(2948),s=n(49985),l=n(65858),u=n(75896),d=n(3278),p=n(97717),f=n(16714),m=n(40424),h=n(21366),v=n(23232),g=n(83345),y=n(76177),b=n(35223),w="subjects.discoverDashboardEmptyState",E=a.T.encloseNamespace(w);function L(e){var t,n,i=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===m.GL.Archived;return r.createElement(v.u,null,r.createElement(v.u.Image,{src:e.imageUrl,altText:E("info")}),r.createElement(v.u.Heading,null,r.createElement(g.x,{namespace:w,phrase:"heading"})),r.createElement(v.u.Info,null,r.createElement(g.x,{namespace:w,phrase:"info"})),r.createElement(y.u,{title:i?a.T.getPhrase(w,"archivedCtaTooltip"):"",spanHack:!0},r.createElement(v.u.Cta,{text:a.T.getPhrase(w,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:b.vn.Plus,disabled:i})))}function S(e){var t,n,a=u.m.sortBy(null===(t=e.dashboard)||void 0===t?void 0:t.widgets,"index");function i(t,n,r){var a=h.S.getWidgetParams(n,r,h.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,e.presentation)}var o=e.isReadonly&&!(null==a?void 0:a.length);return r.createElement(r.Fragment,null,r.createElement(d.z,{type:null===(n=e.dashboard)||void 0===n?void 0:n.userType,appLinks:e.headerAppLinks,hasStudentExperience:e.hasPermissions(f.C.StudentExperience),showCalendar:e.showCalendar,active:"forYou"}),a.map((function(t,n){return r.createElement(p.L,{key:t.id,id:t.id,imageCdnUrl:e.imageCdnUrl,getContentRequest:i,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,setFavourite:e.setFavourite,canFavourite:e.canFavourite,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,onSubmitFeedback:e.onSubmitFeedback,updatePreferences:e.updatePreferences,yearGroups:e.yearGroups,lazyLoad:e.lazyLoad,dashboardTarget:m.ku.Discover,widgetIndex:n,jobTitle:e.jobTitle,isPreviewing:e.isReadonly,imageUrls:e.imageUrls,settings:e.settings,isPlugin:e.isPlugin})})),o&&r.createElement(L,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var T=n(38143),A=n(17101),k=n(72639),O=n(12754),C=n(39151),x=n(1666),N=n(80889),I=n(7198),P=n(98064),D=n(61699),U=n(31949),F=n(22902),R=n(79612),j=n(37802),_=n(69454),B=n(52167),G=n(76753),M=n(73417),W=n(99742),H=n(51855),V=n(27638),Z=n(85369),Y=n(23737),z=n(33192),q=n(48688),$=n(27051);function J(e){return J="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},J(e)}function K(){K=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof g?t:g,o=Object.create(i.prototype),c=new N(r||[]);return a(o,"_invoke",{value:k(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",m="executing",h="completed",v={};function g(){}function y(){}function b(){}var w={};l(w,o,(function(){return this}));var E=Object.getPrototypeOf,L=E&&E(E(I([])));L&&L!==n&&r.call(L,o)&&(w=L);var S=b.prototype=g.prototype=Object.create(w);function T(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(a,i,o,c){var s=d(e[a],e,i);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==J(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,c)}))}c(s.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function k(t,n,r){var a=p;return function(i,o){if(a===m)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var c=r.delegate;if(c){var s=O(c,r);if(s){if(s===v)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===p)throw a=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=m;var l=d(t,n,r);if("normal"===l.type){if(a=r.done?h:f,l.arg===v)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=h,r.method="throw",r.arg=l.arg)}}}function O(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,O(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var o=i.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,v):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function C(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 x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function I(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,i=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 i.next=i}}throw new TypeError(J(t)+" is not iterable")}return y.prototype=b,a(S,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=l(b,s,"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,l(e,s,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},T(A.prototype),l(A.prototype,c,(function(){return this})),t.AsyncIterator=A,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new A(u(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},T(S),l(S,s,"Generator"),l(S,o,(function(){return this})),l(S,"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=I,N.prototype={constructor:N,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(x),!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 c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),l=r.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!l)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 i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,v):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),v},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),x(n),v}},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;x(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function Q(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 X=function(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{s(r.next(e))}catch(e){i(e)}}function c(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((r=r.apply(e,t||[])).next())}))},ee=a.T.encloseNamespace("dashboard.dashboard");function te(e){var t,n,a,u,d,p,h,v,g=o.a.useBasicFetch(C.L.config()),y=o.a.useBasicFetch(U.N.currentUser()),b=o.a.useBasicFetch((null===(t=y.data)||void 0===t?void 0:t.isAuthenticated)&&U.N.user(y.data.id)),w=(0,F.T)(),E=w.hasLocalPermissions,L=w.hasPermissions,J=(0,H.G)().isPlugin,te=o.a.useBasicFetch(E(f.E.ManageDiscoverPreferences)&&y.data&&x.h.customer(y.data.customerId)),ne=o.a.useBasicFetch((null===(n=y.data)||void 0===n?void 0:n.isAuthenticated)&&x.h.yearGroups(y.data.customerId)),re=o.a.useBasicFetch((null===(a=y.data)||void 0===a?void 0:a.isAuthenticated)&&P.D.libraries()),ae=(0,Y.y)({targetType:m.ku.Discover,queryParams:e.queryParams,presentationSlug:e.presentationSlug}),ie=ae.dashboard,oe=ae.presentation,ce=ae.audiences,se=o.a.useGetFetchAsync(),le=(0,j.r)(null),ue=(0,V.u)(l.LZ.Dashboard),de=ue.setFavourite,pe=ue.canFavourite,fe=(h=(0,c.D)(T.g.AUDIENCE_FILTER,void 0,{storage:i.Z1.SessionStorage}),v=1,function(e){if(Array.isArray(e))return e}(h)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(h,v)||function(e,t){if(e){if("string"==typeof e)return Q(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)?Q(e,t):void 0}}(h,v)||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.")}())[0],me=(0,$.E)(_.T.getAudienceParams(fe)),he=function(e){return+k.p[null==e?void 0:e.learningLevel]===k.p.Level_1?"VariantOne":"VariantTwo"}(oe);(0,R.M)(G.CG.getDiscoverMetadata({content:oe,phraseContext:{phraseHandler:ee,titlePhrase:"pageTitle".concat(he),descriptionPhrase:"pageDescription".concat(he)},canonicalLink:z.f.getCanonicalLink(),allowIndexing:z.f.allowIndexing(),hrefLang:z.f.getStaticRouteHrefLang(null==oe?void 0:oe.learningLevel,me.discover)}));var ve=(0,Z.N)().showCalendar;return r.createElement("div",{className:"bg-white px-4"},r.createElement(M.T,null),r.createElement(S,{currentUser:y.data,dashboard:ie.data,widgetAppLinks:me,headerAppLinks:(0,$.u)(),presentation:oe,imageCdnUrl:g.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:W.W.Fallbacks.RESOURCE_THUMBNAIL,getWidgetContentRequest:function(){for(var e=q.g.hasTwig(re.data,y.data),t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return N._.discoverWidgetContent.apply(N._,[e].concat(n))},setFavourite:de,audiences:ce.data,canFavourite:pe,updatePreferences:function(e,t,n,r){return X(this,void 0,void 0,K().mark((function t(){var a,i;return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=r.filter((function(e){return!e.hidden&&n.find((function(t){return t.id===e.id})).hidden})),i=r.filter((function(e){return!!e.hidden&&!n.find((function(t){return t.id===e.id})).hidden})),!(null==a?void 0:a.length)){t.next=5;break}return t.next=5,se(D.o.followSubjects(a.map((function(e){return e.id}))));case 5:if(!(null==i?void 0:i.length)){t.next=8;break}return t.next=8,se(D.o.unfollowSubjects(i.map((function(e){return e.id}))));case 8:return t.abrupt("return",se(N._.updateWidgetPreferences(e,r.map((function(e){return{id:e.id,index:e.index}})),y.data)));case 9:case"end":return t.stop()}}),t)})))},hasPermissions:L,hasLocalPermissions:E,onSubmitFeedback:L(f.C.CanSubmitFeedback)&&function(e){return X(this,void 0,void 0,K().mark((function t(){var n;return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,se(I.f.submitFeedback({type:A.n.Footer,user:B.m.getUserInfo(y.data,te.data),tags:B.m.getTags(y.data,O.x.Primary,L(f.C.StudentExperience),["discover","in product feedback"])},{reaction:e.type,feedback:e.content,location:"Discover Footer",presentationName:oe.description,presentationId:oe.id,dashboardName:ie.data.name,dashboardId:ie.data.id}));case 2:return n=t.sent,s.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:oe.id,dashboardId:ie.data.id},{actionType:l.Vw.Submit,location:l.LZ.DiscoverFooter,entity:l.py.Feedback,workflowPhase:l.eu.Complete}),t.abrupt("return",n);case 5:case"end":return t.stop()}}),t)})))},yearGroups:ne.data,lazyLoad:!z.f.isBot(),showCalendar:ve,jobTitle:null===(p=null===(d=null===(u=b.data)||void 0===u?void 0:u.userProfile)||void 0===d?void 0:d.metadata)||void 0===p?void 0:p.jobTitle,imageUrls:{onboardingAdminBackgroundFull:W.W.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,onboardingAdminBackground:W.W.OnboardingV2.Widget.ADMIN_BACKGROUND,onboardingTeacherBackground:W.W.OnboardingV2.Widget.TEACHER_BACKGROUND},settings:le,isPlugin:J}))}},27051:(e,t,n)=>{n.d(t,{E:()=>f,u:()=>m});var r=n(75896),a=n(28400),i=n(17475),o=n(183),c=n(14070),s=n(97291),l=n(22490),u=n(67963),d=n(82431),p="classification-latest-releases";function f(e){return{classification:function(t){return{application:s.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION,args:[null==t?void 0:t.id,a.m.slugify(null==t?void 0:t.name)],params:e||{}}},videoType:function(e,t){return l.W.getAppLink(e,Object.assign(Object.assign({},t),{context:o.Q.Widget}))},series:d.j.getSeriesAppLink,subText:function(e){return d.j.getSeriesAppLink(e.series)},playlist:function(e){return{application:s.O.PLAYLISTS,action:c.e.Playlists.PLAYLIST,args:[e.id,a.m.slugify(e.name)]}},latestReleases:function(){return{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}},allTopics:function(){return{application:s.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION_ALL}},classificationLatestReleases:function(e){return e.id===p?{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}:{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CLASSIFICATION_UPDATE,args:[e.id,a.m.slugify(e.name)]}},widgetVideoList:function(e,t){return{application:s.O.DASHBOARD,action:c.e.Dashboard.DASHBOARD,args:[e,a.m.slugify(t)]}},watchHistory:function(){return{application:s.O.WATCH_HISTORY,action:c.e.WatchHistory.HOME}},rating:function(e,t){return{application:s.O.SEARCH,action:c.e.Search.HOME,params:{moviesAndTv:!0,rating:i.S.getFrontendParamValue([r.m.first(t),e])}}},company:function(e){return{application:s.O.MOVIES_AND_TV,action:c.e.MoviesAndTv.COMPANY_DASHBOARD,args:[e.id,a.m.slugify(e.name)]}},discover:function(){return{application:s.O.DASHBOARD,action:c.e.Dashboard.HOME}},calendar:function(){return{application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR}},calendarMonth:function(e,t){var n={application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR_MONTH,args:[e.toLowerCase()]};return t&&(n.params={year:t}),n},onboardingStep:function(e){return(0,u.u)()[e]},onboardingAppLinks:function(){return(0,u.u)()},classroomGuide:l.W.getClassroomGuideAppLink,interactiveGuidance:l.W.getInteractiveGuidanceAppLink,resourceGuidance:l.W.getResourceGuidanceAppLink}}function m(){return{forYou:{application:s.O.DASHBOARD,action:c.e.Dashboard.HOME},whatsNew:{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES},calendar:{application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR}}}},73417:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(32735),a=n(11607),i=n(83914),o=n(83345),c=n(87348),s=n(35223),l="shared.upgradeFeedbackBanner";function u(){var e=(0,c.Q)(),t=e.showFeedbackBanner,n=e.dismissFeedbackBanner;return t?r.createElement("div",{className:"alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center"},r.createElement(o.x,{namespace:l,phrase:"message",options:{url:"https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look"}}),r.createElement(a.L,{onClick:n},r.createElement(i.x,{svgName:s.vn.Close,className:"ms-2 svg-container"}))):r.createElement(r.Fragment,null)}},85369:(e,t,n)=>{n.d(t,{N:()=>g});var r=n(32735),a=n(35242),i=n(20354),o=n(27022),c=n(72639),s=n(31949),l=n(37802),u=n(87114),d=n(86698);function p(e){return p="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},p(e)}function f(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 r,a,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(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 m(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}function h(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=h(h(h(h(h(h({},o.t.AU,[c.p.Level_1]),o.t.US,[c.p.Level_1]),o.t.UK,[c.p.Level_1]),o.t.SCOT,[c.p.Level_1]),o.t.NZ,[]),o.t.GLOBAL,[]);function g(){var e,t=(0,l.r)(null),n=t.hasSpecialEventCalendar,o=t.isLoadingSettings,c=(0,d.y)({redirectOnError:!0}).activePresentation,p=i.a.useBasicFetch(s.N.currentUser()),m=v[null===(e=p.data)||void 0===e?void 0:e.contentRegion],h=u.i.getMappedPresentationLevel(null==c?void 0:c.learningLevel),g=!(null==m?void 0:m.find((function(e){return e.toString()===(null==h?void 0:h.toString())}))),y=!o&&!n,b=f(r.useState(!y&&!g),2),w=b[0],E=b[1],L=f(r.useState(o||!(null==c?void 0:c.id)),2),S=L[0],T=L[1];return r.useEffect((function(){y||g?E(!1):S||E(!0),T(o||!(null==c?void 0:c.id))}),[n,null==c?void 0:c.id,S]),a.h.isDevelopment?{showCalendar:!0,isLoading:!1}:{showCalendar:w,isLoading:S}}},87432:(e,t,n)=>{n.d(t,{Z:()=>r});const r={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
3
|
+
//# sourceMappingURL=6741-e0ed9fd6f0-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6741-e0ed9fd6f0-lite.chunk.js","mappings":";oNACA,SAAgB,QAAU,SCa1B,IAAMA,EAAY,kBAgBZ,SAAUC,EAAeC,mBAC7B,IAAKA,EAAMC,KACT,OAAO,iCAET,GAAID,EAAMC,OAAS,cAA6BD,EAAME,qBACpD,OACE,uBAAKC,UAAU,QACb,sBAAIA,UAAU,WACZ,gBAACC,EAAA,EAAI,CAACN,UAAWA,EAAWO,OAAO,cAM3C,IAAMC,EAAO,CAAC,CACZC,KAAMC,EAAA,YAA0BV,EAAW,UAC3CW,QAAuB,QAAd,EAAAT,EAAMU,gBAAQ,eAAEC,OACzBC,OAAyB,WAAjBZ,EAAMY,OACdC,cAAe,CACbN,KAAMC,EAAA,YAA0BV,EAAW,UAC3CgB,IAAK,aAAoC,QAAd,EAAAd,EAAMU,gBAAQ,eAAEC,SAE7CI,iBAAkB,CAChBC,WAAY,WACZC,OAAQ,SACRC,SAAU,iBAEX,CACDX,KAAMC,EAAA,YAA0BV,EAAW,YAC3CW,QAAuB,QAAd,EAAAT,EAAMU,gBAAQ,eAAES,SACzBP,OAAyB,aAAjBZ,EAAMY,OACdC,cAAe,CACbN,KAAMC,EAAA,YAA0BV,EAAW,YAC3CgB,IAAK,aAAoC,QAAd,EAAAd,EAAMU,gBAAQ,eAAES,WAE7CJ,iBAAkB,CAChBC,WAAY,WACZC,OAAQ,SACRC,SAAU,kBAqBd,OAjBIlB,EAAMoB,cACRd,EAAKe,KAAK,CACRd,KAAMC,EAAA,YAA0BV,EAAW,YAC3CW,QAAuB,QAAd,EAAAT,EAAMU,gBAAQ,eAAEY,SACzBV,OAAyB,aAAjBZ,EAAMY,OACdC,cAAe,CACbN,KAAMC,EAAA,YAA0BV,EAAW,YAC3CgB,IAAK,aAAoC,QAAd,EAAAd,EAAMU,gBAAQ,eAAEY,WAE7CP,iBAAkB,CAChBC,WAAY,WACZC,OAAQ,SACRC,SAAU,kBAMd,uBAAKf,UAAU,oBACb,gBAACoB,EAAA,EAAe,CACdjB,KAAMA,EACNH,UAAW,YAInB,2DC1FMqB,EAAgB,CAAC,OACjBC,EAAgB,CAAE,MAAO,OAAQ,OAAQ,MAAO,MAAO,OAAQ,OAC/DC,EAAiB,CAAE,MAAO,OAC1BC,EAAkB,CAAE,MAAO,MAAO,QAClCC,EAAkB,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,QACvDC,EAAgB,UAChBC,EAAoB,CAAE,MAAO,OAC7BC,EAAuB,CAAE,MAAO,MAAO,MAAO,QAE9CC,EAAqB,CAAC,OAEtBC,EAAiB,CACrBC,OAAQ,IAAF,OAAMN,EAAgBO,KAAK,OACjCC,MAAOP,EACPQ,YAAa,IAAF,OAAMT,EAAgBO,KAAK,MAAK,YAAIN,GAC/CS,UAAW,IAAF,OAAM,UACVb,EACAE,EACAI,EACAP,EACAE,EACAE,EACAE,GACHK,KAAK,OACPI,UAAW,IAAF,OAAMP,EAAmBG,KAAK,QAGnCK,EAAsB,CAC1BC,gBAAe,SAACC,GACd,IAAMC,EAAMD,EAAUE,cAEtB,OAAI,WAAWnB,EAAekB,GAAa,WACvC,WAAWhB,EAAiBgB,GAAa,QACzC,WAAWZ,EAAsBY,GAAa,aAC9C,WAAWnB,EAAemB,GAAa,MAEvC,WAAWjB,EAAgBiB,GAAa,OACxC,WAAWf,EAAiBe,GAAa,QACzC,WAAWb,EAAmBa,GAAa,UAC3C,WAAWX,EAAoBW,GAAa,WAEzC,EACT,sHC7BF,SAASE,EAAY7C,GACnB,OACE,kCACKA,EAAM8C,IAAIC,SACX,uBAAK5C,UAAWH,EAAM8C,IAAIvC,KAAO,OAAS,IACxC,gBAAC,IAAY,CAACwC,QAAS/C,EAAM8C,IAAIC,WAIpC/C,EAAM8C,IAAIvC,KAEmB,iBAArBP,EAAM8C,IAAIE,OACjB,uBAAK7C,UAAU,QACb,gBAAC,IAAK,CAACF,KAAM,UAAiBgD,KAAMjD,EAAM8C,IAAIE,SAKxD,CA6BM,SAAUzB,EAAgBvB,SAW9B,OACE,uBAAKG,UAA0B,QAAf,EAAAH,EAAMG,iBAAS,QAAI,IACjC,sBAAIA,UAAS,qDACwB,oBAAsB,qBACvDH,EAAMkD,aAAe,gBAAqB,GAAE,qBAC5ClD,EAAMmD,cAAa,aAEpBnD,EAAMM,KAAK8C,KAAI,SAACN,EAAKO,GACpB,OACE,sBACElD,UAAS,gCACD,QAAU,YAAI2C,EAAIlC,OAAS,eAAiB,uBAAsB,6BACtEkC,EAAIvC,KAAO,aAAkB,GAAE,YAAIuC,EAAI3C,UAAS,oBAEpDmD,IAAKD,GAEJP,EAAIrC,QACH,gBAAC,IAAO,CACNA,QAASqC,EAAIrC,QACbI,cAAeiC,EAAIjC,cACnBE,iBAAkB+B,EAAI/B,iBACtBZ,UAAS,sKAE4C,YAAc,yBAGnE,gBAAC0C,EAAW,CAACC,IAAKA,KAGpB,gBAAC,IAAS,CACR3C,UAAS,qKAE2C,YAAc,wBAElEoD,QAAS,kBA5CzB,SAAqBT,IACfA,EAAIlC,QAAWkC,EAAIU,WAGvBV,EAAIU,WAEAV,EAAIjC,eAAiBiC,EAAI/B,kBAC3B,kBAA8B+B,EAAIjC,cAAeiC,EAAI/B,kBACzD,CAoC+B0C,CAAYX,EAAI,GAE/B,gBAACD,EAAW,CAACC,IAAKA,KAK5B,KAIR,CA5DAvB,EAAgBmC,aAAe,CAC7BR,aAAc,uBChEhB,IAAYS,mBAAZ,SAAYA,GACV,qBACA,+CACA,6BACA,mCACA,+BACA,+BACA,uBACA,4CACD,CATD,CAAYA,IAAAA,EAAY,qDCKXC,EAAmB,CAC9BC,eAAc,SAACC,EAAkCC,GAC/C,MAAO,CACLjD,IAAK,wBACLwC,IAAK,kBACLrD,KAAM,SACNgD,KAAM,OAAF,wBACCa,GACAC,GAGT,oMCNK,IAAMC,EAAqB,CAChCC,YAAa,SACXC,EACAC,GAEA,MAAO,CACLC,GAAIF,EAAYE,GAChBC,SAAUH,EAAYG,SACtBC,MAAOJ,EAAYI,MACnBC,SAAUL,EAAYM,OAAS,UAAiB,QAAU,QAC1DC,WAAYP,EAAYO,WACxBC,MAAOP,EAASQ,MAChBC,aAAcT,EAAS5D,KACvBsE,eAAgBX,EAAYW,eAC5BC,cAAeZ,EAAYY,cAE/B,EAEAC,uBAAwB,SAACF,GACvB,OAAQA,GACN,KAAK,OACH,MAAO,KACT,KAAK,OACH,MAAO,KACT,KAAK,OACH,MAAO,KACT,KAAK,OACH,MAAO,KAEb,EAEAG,QAAS,SAACd,EAA0Be,EAAoB/E,EAA+BgF,GACrF,MAAMC,EAAO,CACXF,GAAO,sDACJC,ujBAGLC,EAAK9D,KAAKnB,EAAuB,UAAY,SAEzCgE,EAAYM,OAAS,WACvBW,EAAK9D,KAAK,iBAEZ,IAAM+D,EAAYpB,EAAmBe,uBAAuBb,EAAYW,gBAKxE,OAHIO,GACFD,EAAK9D,KAAK+D,GAELD,CACT,EAEAE,gBAAe,SAACC,GACd,OAAOA,EAAMC,QAAO,SAACC,EAAQC,GAC3B,IAAMC,EAAWD,EAAKE,IAAI,YAM1B,OALI,gBAAqBF,EAAKE,IAAI,QAAS,WACzCH,EAAOI,UAAUvE,KAAKqE,aAAQ,EAARA,EAAU5E,KAEhC0E,EAAOK,UAAUxE,KAAKqE,aAAQ,EAARA,EAAU5E,KAE3B0E,CACT,GAAG,CACDK,UAAW,GACXD,UAAW,IAEf,4PC9DI9F,EAAY,uCACZgG,EAAYtF,EAAA,mBAAiCV,GAU7C,SAAUiG,EAA4B/F,WACpCgG,GAA4B,QAAf,EAAAhG,EAAMiG,iBAAS,eAAEC,UAAW,cAE/C,OACE,gBAACC,EAAA,EAAU,KACT,gBAACA,EAAA,QAAgB,CAACC,IAAKpG,EAAMqG,SAAUC,QAASR,EAAU,UAC1D,gBAACK,EAAA,UAAkB,KACjB,gBAAC/F,EAAA,EAAI,CAACN,UAAWA,EAAWO,OAAO,aAErC,gBAAC8F,EAAA,OAAe,KACd,gBAAC/F,EAAA,EAAI,CAACN,UAAWA,EAAWO,OAAO,UAErC,gBAACkG,EAAA,EAAO,CAACC,MAAOR,EAAaxF,EAAA,YAA0BV,EAAW,sBAAwB,GAAI2G,UAAQ,GACpG,gBAACN,EAAA,MAAc,CACbO,KAAMlG,EAAA,YAA0BV,EAAW,OAC3CW,QAA+B,QAAtB,EAAAT,EAAM2G,wBAAgB,uBAC/BxG,UAAU,eACVyG,KAAM,UACNC,SAAUb,KAKpB,CCaM,SAAUc,EAAkB9G,WAC1B+G,EAAUC,EAAA,SAAkC,QAAf,EAAAhH,EAAMiG,iBAAS,eAAEc,QAAS,SAE7D,SAASE,EAAwB7C,EAAY8C,EAA4BC,GACvE,IAAMC,EAAS,oBACbF,EACAC,EACA,2BAA8CnH,EAAMiG,YAGtD,OAAOjG,EAAMiH,wBAAwB7C,EAAIgD,EAAQD,EAAUnH,EAAMqH,aACnE,CAEA,IAAMC,EAAiBtH,EAAMuH,cAAeR,aAAO,EAAPA,EAASS,QAErD,OACE,gCACE,gBAACzH,EAAA,EAAc,CACbE,KAAqB,QAAf,EAAAD,EAAMiG,iBAAS,eAAE1B,SACvB7D,SAAUV,EAAMyH,eAChBvH,qBAAsBF,EAAM0H,eAAeC,EAAA,qBAC3CvG,aAAcpB,EAAMoB,aACpBR,OAAO,WAERmG,EAAQ3D,KAAI,SAACwE,EAAQC,GACpB,OACE,gBAACC,EAAA,EAAmB,CAClBxE,IAAKsE,EAAOxD,GACZA,GAAIwD,EAAOxD,GACX2D,YAAa/H,EAAM+H,YACnBC,kBAAmBf,EACnBgB,UAAWjI,EAAMiI,UACjB1H,KAAMqH,EAAOrH,KACb2H,YAAaN,EAAOM,YACpBC,WAAYP,EAAOO,WACnBC,SAAUR,EAAOQ,SACjBf,aAAcrH,EAAMqH,aACpBgB,aAAcrI,EAAMqI,aACpBC,aAActI,EAAMsI,aACpBC,kCAAmCvI,EAAMuI,kCACzCC,YAAaZ,EAAOY,YACpB9H,SAAUV,EAAMyI,eAChBC,wBAAwB1I,aAAK,EAALA,EAAO2I,oBAAqBf,EAAOxD,GAC3D8C,aAAcU,EAAOgB,SACrBlB,eAAgB1H,EAAM0H,eACtBmB,oBAAqB7I,EAAM6I,oBAC3BC,iBAAkB9I,EAAM8I,iBACxBC,kBAAmB/I,EAAM+I,kBACzBC,WAAYhJ,EAAMgJ,WAClBC,SAAUjJ,EAAMiJ,SAChBC,gBAAiB,cACjBC,YAAatB,EACbuB,SAAUpJ,EAAMoJ,SAChBC,aAAcrJ,EAAMuH,WACpB1B,UAAW7F,EAAM6F,UACjByD,SAAUtJ,EAAMsJ,SAChBC,SAAUvJ,EAAMuJ,UAGtB,IAECjC,GACC,gBAACvB,EAA2B,CAC1BE,UAAWjG,EAAMiG,UACjBsB,WAAYvH,EAAMuH,WAClBlB,SAAUrG,EAAMwJ,cAChB7C,iBAAkB3G,EAAMyI,eAAegB,eAKjD,qvOCjFM,GAAYjJ,EAAA,mBADA,uBAgBZ,SAAUkJ,GAAoB1J,uBAC5B2J,EAAS,kBAA6BC,EAAA,YACtC1F,EAAc,kBAAkC2F,EAAA,iBAChDC,EAAO,mBAA2C,QAAhB,EAAA5F,EAAYjB,YAAI,eAAE8G,kBAAmBF,EAAA,OAAkB3F,EAAYjB,KAAKmB,KAChH,GAAgD,EAAA4F,EAAA,KAAxCnB,EAAmB,EAAnBA,oBAAqBnB,EAAc,EAAdA,eACrB6B,GAAa,EAAAU,EAAA,KAAbV,SAEFpF,GAAW,kBACf0E,EAAoB,gCACpB3E,EAAYjB,MACZiH,EAAA,WAA0BhG,EAAYjB,KAAKwB,aAGvCuE,GAAa,mBACD,QAAhB,EAAA9E,EAAYjB,YAAI,eAAE8G,kBACfG,EAAA,aAA4BhG,EAAYjB,KAAKwB,aAG5C0F,GAAY,mBACA,QAAhB,EAAAjG,EAAYjB,YAAI,eAAE8G,kBAClBK,EAAA,eAGF,IAII,OAAyB,CAC3BC,WAAY,cACZC,YAAatK,EAAMsK,YACnBC,iBAAkBvK,EAAMuK,mBANxBtE,GAAS,GAATA,UACAoB,GAAY,GAAZA,aACAY,GAAS,GAATA,UAOIuC,GAAa,uBACblB,IAAW,EAAAmB,EAAA,GAAY,MAE7B,IAAuC,EAAAC,EAAAC,GAAkB,gBAAjDtC,GAAY,GAAZA,aAAcC,GAAY,GAAZA,aAEfsC,OAAmB,OACxBC,EAAA,uBACAC,EACA,CAAEC,QAAS,wBACZ,s4BAJqB,GAMhBtC,IAAiB,OAA0BuC,EAAA,oBAAiCJ,KAE5EK,GA3DR,SAA0B5D,GAGxB,OAFsB6D,EAAA,EAA0B7D,aAAY,EAAZA,EAAc8D,iBAEpCD,EAAA,UACtB,aACA,YACN,CAqDwBE,CAAiB/D,KAEvC,EAAAgE,EAAA,GAAmBC,EAAA,uBAAuC,CACxDC,QAASlE,GACTmE,cAAe,CACbC,cAAe,GACfC,YAAa,YAAF,OAAcT,IACzBU,kBAAmB,kBAAF,OAAoBV,KAEvCW,cAAeC,EAAA,qBACfC,cAAeD,EAAA,kBACfE,SAAUF,EAAA,yBACRxE,cAAY,EAAZA,GAAc8D,cACd1C,GAAeuD,aA6EnB,IAAQ5K,IAAiB,EAAA6K,EAAA,KAAjB7K,aAER,OACE,uBAAKjB,UAAU,iBACb,gBAAC+L,EAAA,EAAqB,MACtB,gBAACpF,EAAiB,CAChB5C,YAAaA,EAAYjB,KACzBgD,UAAWA,GAAUhD,KACrBwF,eAAgBA,GAChBhB,gBAAgB,SAChBJ,aAAcA,GACdU,YAAa4B,EAAO1G,KAAK8E,YACzBQ,kCAAmC4D,EAAA,+BACnClF,wBAAyB,WAGiD,IAAxE,IAAMmF,EAAUC,EAAA,UAAsBlC,GAAUlH,KAAMiB,EAAYjB,MAAM,mBAFrEqJ,EAAiE,yBAAjEA,EAAiE,gBAIpE,OAAOC,EAAA,8BAAAA,EAAA,EAAiB,CAAuBH,GAAO,OAAKE,GAC7D,EACAjE,aAAcA,GACdJ,UAAWA,GAAUhF,KACrBqF,aAAcA,GACdS,kBA7DN,SACEH,EACA1B,EACAsF,EACAC,+HAiBE,GAfIC,EAAgBD,EAAeE,QAAO,SAAAC,GAC1C,OAAIA,EAAEC,QAGgBL,EAAeM,MAAK,SAAAC,GAAC,OAAIA,EAAE3I,KAAOwI,EAAExI,EAAE,IAEvCyI,MACvB,IACMG,EAAkBP,EAAeE,QAAO,SAAAC,GAC5C,QAAKA,EAAEC,SAGeL,EAAeM,MAAK,SAAAC,GAAC,OAAIA,EAAE3I,KAAOwI,EAAExI,EAAE,IAEtCyI,MACxB,MAEIH,aAAa,EAAbA,EAAelF,QAAM,gBACvB,OADuB,SACjBgD,GAAiByC,EAAA,iBAAkCP,EAActJ,KAAI,SAAA8J,GAAC,OAAIA,EAAE9I,EAAE,MAAG,YAErF4I,aAAe,EAAfA,EAAiBxF,QAAM,gBACzB,OADyB,SACnBgD,GAAiByC,EAAA,mBAAoCD,EAAgB5J,KAAI,SAAA8J,GAAC,OAAIA,EAAE9I,EAAE,MAAG,gCAEtFoG,GAAiB+B,EAAA,0BACtB3D,EACA6D,EAAerJ,KAAI,SAAAwJ,GAAC,MAAK,CACvBxI,GAAIwI,EAAExI,GACNf,MAAOuJ,EAAEvJ,MACV,IACDa,EAAYjB,QACZ,0CACH,EAyBKyE,eAAgBA,EAChBmB,oBAAqBA,EACrBC,iBACEpB,EAAeC,EAAA,sBApGvB,SAAgCwF,6HACd,gBAAM3C,GAAiB5G,EAAA,iBAAgC,CACrE3D,KAAM0D,EAAA,SACNmG,KAAM9F,EAAA,cAA+BE,EAAYjB,KAAMkB,GAASlB,MAChEkC,KAAMnB,EAAA,UACJE,EAAYjB,KACZmK,EAAA,UACA1F,EAAeC,EAAA,qBACf,CAAE,WAAY,yBAEf,CACD0F,SAAUF,EAASlN,KACnBkN,SAAUA,EAAS5B,QACnBrK,SAAU,kBACVoM,iBAAkBjG,GAAaa,YAC/BqF,eAAgBlG,GAAajD,GAC7BoJ,cAAevH,GAAUhD,KAAK1C,KAC9BkN,YAAaxH,GAAUhD,KAAKmB,MAC3B,OAYA,OA7BGsJ,EAAU,EAAH,KAmBbC,EAAA,gBAA8B,CAC5BC,aAAcT,EAASlN,KACvBsL,QAAS4B,EAAS5B,QAClBgC,eAAgBlG,GAAajD,GAC7BqJ,YAAaxH,GAAUhD,KAAKmB,IAC3B,CACDpD,WAAY,YACZE,SAAU,oBACVD,OAAQ,cACR4M,cAAe,gBACd,kBAEIH,GAAO,0CACf,EAsEK1E,WAAYA,GAAW/F,KACvBgG,UAAW4C,EAAA,UACXzK,aAAcA,GACdgI,SAA0C,QAAhC,EAAsB,QAAtB,EAAS,QAAT,EAAAU,EAAK7G,YAAI,eAAE6K,mBAAW,eAAE1F,gBAAQ,eAAEgB,SAC5CvD,UAAW,CACTkI,8BAA+B5B,EAAA,4CAC/B6B,0BAA2B7B,EAAA,uCAC3B8B,4BAA6B9B,EAAA,0CAE/B7C,SAAUA,GACVC,SAAUA,IAIlB,iJC/NM2E,EAAiC,iCAEjC,SAAUC,EACd/G,GAEA,MAAO,CACLgH,eAAgB,SAAC,GACf,MAAO,CACLC,YAAa,YACbC,OAAQ,4BACRhC,KAAM,CAAE,aAAc,EAAd,EAAgBlI,GAAI,YAAmB,aAAc,EAAd,EAAgB7D,OAC/D6G,OAAQA,GAAU,CAAC,EAEvB,EAEAmH,UAAW,SAACC,EAAmBC,GAA4B,OACzD,eAA8BD,EAAO,OAAF,wBAC9BC,GAAI,CACPC,QAAS,aACT,EAGJC,OAAQ,qBAERC,QAAS,SAACJ,GAAY,OAAK,qBAAqCA,EAAMG,OAAO,EAE7EE,SAAU,SAAC,GAAkB,MAAM,CACjCR,YAAa,cACbC,OAAQ,uBACRhC,KAAM,CAAE,EAASlI,GAAI,YAAmB,EAAS7D,OAClD,EAEDuO,eAAgB,iBAAO,CACrBT,YAAa,oBACbC,OAAQ,mCACT,EAEDS,UAAW,iBAAO,CAChBV,YAAa,YACbC,OAAQ,gCACT,EAEDU,6BAA8B,SAACZ,GAC7B,OAAIA,EAAehK,KAAO8J,EACjB,CACLG,YAAa,oBACbC,OAAQ,oCAGL,CACLD,YAAa,oBACbC,OAAQ,yCACRhC,KAAM,CAAE8B,EAAehK,GAAI,YAAmBgK,EAAe7N,OAEjE,EAEA0O,gBAAiB,SAACrG,EAAkBsG,GAAkB,MAAM,CAC1Db,YAAa,cACbC,OAAQ,wBACRhC,KAAM,CAAE1D,EAAU,YAAmBsG,IACtC,EAEDC,aAAc,iBAAO,CACnBd,YAAa,kBACbC,OAAQ,sBACT,EAEDc,OAAQ,SAAC,EAAgBC,GAAiB,MAAM,CAC9ChB,YAAa,WACbC,OAAQ,gBACRlH,OAAQ,CACNkI,aAAa,EACbF,OAAQ,0BAAyC,CAAE,UAAkBC,GAAU,KAElF,EAEDE,QAAS,SAAC,GAAgB,MAAM,CAC9BlB,YAAa,kBACbC,OAAQ,kCACRhC,KAAM,CAAE,EAAQlI,GAAI,YAAmB,EAAQ7D,OAChD,EAEDyL,SAAU,iBAAO,CACfqC,YAAa,cACbC,OAAQ,mBACT,EAEDhN,SAAU,iBAAO,CACf+M,YAAa,aACbC,OAAQ,sBACT,EAEDkB,cAAe,SAACC,EAAeC,GAC7B,IAAMjP,EAAwB,CAC5B4N,YAAa,aACbC,OAAQ,4BACRhC,KAAM,CAACmD,EAAM7M,gBAMf,OAHI8M,IACFjP,EAAQ2G,OAAS,CAAEsI,KAAAA,IAEdjP,CACT,EAEAkP,eAAgB,SAACC,GAEf,OADiB,SACDA,EAClB,EAEAC,mBAAoB,WAClB,OAAO,QACT,EAEAC,eAAgB,6BAChBC,oBAAqB,kCACrBC,iBAAkB,+BAEtB,CAEM,SAAUC,IACd,MAAO,CACLtP,OAAQ,CACN0N,YAAa,cACbC,OAAQ,oBAEVnN,SAAU,CACRkN,YAAa,oBACbC,OAAQ,oCAEVhN,SAAU,CACR+M,YAAa,aACbC,OAAQ,uBAGd,0GCnJMxO,EAAY,+BAEZ,SAAUoM,IACd,OAAsD,SAA9CgE,EAAkB,EAAlBA,mBAAoBC,EAAqB,EAArBA,sBAE5B,OAAKD,EAIH,uBAAK/P,UAAU,2GACb,gBAAC,IAAI,CACHL,UAAWA,EACXO,OAAO,UACP+P,QAAS,CAAEtP,IAAK,gFAElB,gBAAC,IAAS,CACRyC,QAAS4M,GAET,gBAAC,IAAY,CACXpN,QAAS,WACT5C,UAAU,yBAdT,gCAmBX,gwDCnBA,IAAMkQ,EAAiC,eACpC,OAAmB,CAElB,cAED,OAAmB,CAElB,cAED,OAAmB,CAElB,cAED,SAAqB,CAEpB,cAED,OAAmB,IACnB,WAAuB,IAGpB,SAAUpE,UACd,GAAuD,OAAY,MAA3DqE,EAAuB,EAAvBA,wBAAyBC,EAAiB,EAAjBA,kBAG/BC,GACE,OAAgB,CAAEC,iBAAiB,IADrCD,mBAGItM,EAAc,kBAAkC,mBAEhDwM,EAAwBL,EAAkD,QAAhB,EAAAnM,EAAYjB,YAAI,eAAE6B,eAC5EqG,EAAgB,+BAAwCqF,aAAkB,EAAlBA,EAAoBrF,eAC5EwF,IAA2BD,aAAqB,EAArBA,EAAuB5D,MAAK,SAAA8D,GAC3D,OAAOA,EAAEC,cAAgB1F,aAAa,EAAbA,EAA6C0F,WACxE,KAEMC,GAAaP,IAAsBD,EAEgE,IAA/D,YAAyBQ,IAAcH,GAAwB,GAAjGvP,EAAY,KAAE2P,EAAe,KAE2D,IAA5D,WAAeR,KAAsBC,aAAkB,EAAlBA,EAAoBpM,KAAG,GAAxF4M,EAAS,KAAEC,EAAY,KAW/B,OATA,aAAgB,WACVH,GAAaH,EACfI,GAAgB,GACNC,GACVD,GAAgB,GAElBE,EAAaV,KAAsBC,aAAkB,EAAlBA,EAAoBpM,IACzD,GAAG,CAAEkM,EAAyBE,aAAkB,EAAlBA,EAAoBpM,GAAI4M,IAElD,kBACK,CAAE5P,cAAc,EAAM4P,WAAW,GAEnC,CAAE5P,aAAAA,EAAc4P,UAAAA,EACzB,oCCpEA,SAAgB,gBAAkB,QAAQ,IAAM,QAAQ,SAAW,QAAQ,YAAc,QAAQ,QAAU","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/empty-state/DiscoverDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/DiscoverDashboard.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/CuratedDiscoverView.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/DiscoverViewUtils.ts","file:///app/packages/projects/lite/src/shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner.tsx","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\n />\n </div>\n );\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.discoverDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface DiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function DiscoverDashboardEmptyState(props: DiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { DiscoverHeader, DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks, WidgetImageUrls } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CanFavouriteFunc, CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { DiscoverDashboardEmptyState } from './empty-state/DiscoverDashboardEmptyState';\n\ninterface DiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation: Presentation\n ) => Flight.Request;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n headerAppLinks?: DiscoverHeaderAppLinks;\n scrollToWidgetId?: string;\n updatePreferences?: (\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ) => Promise<void>;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n lazyLoad?: boolean;\n showCalendar: boolean;\n jobTitle: JobTitles;\n imageUrls: WidgetImageUrls\n settings: SettingsHash;\n isPlugin: boolean;\n}\n\nexport function DiscoverDashboard(props: DiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, props.presentation);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <DiscoverHeader\n type={props.dashboard?.userType}\n appLinks={props.headerAppLinks}\n hasStudentExperience={props.hasPermissions(PermissionName.StudentExperience)}\n showCalendar={props.showCalendar}\n active='forYou'\n />\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n onSubmitFeedback={props.onSubmitFeedback}\n updatePreferences={props.updatePreferences}\n yearGroups={props.yearGroups}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n jobTitle={props.jobTitle}\n isPreviewing={props.isReadonly}\n imageUrls={props.imageUrls}\n settings={props.settings}\n isPlugin={props.isPlugin}\n />\n );\n })}\n\n {showEmptyState && (\n <DiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DiscoverDashboard } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser, Customer, DashboardTargetType, Library, Presentation, PresentationAudience, User, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { Config } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { UpgradeFeedbackBanner } from 'shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport { getDiscoverHeaderAppLinks, getDiscoverWidgetAppLinks } from './DiscoverViewUtils';\n\nconst namespace = 'dashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getPhraseVariant(presentation: Presentation): string {\n const learningLevel = PresentationLearningLevel[presentation?.learningLevel];\n\n return +learningLevel === PresentationLearningLevel.Level_1\n ? 'VariantOne'\n : 'VariantTwo';\n}\n\ninterface CuratedDiscoverViewProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CuratedDiscoverView(props: CuratedDiscoverViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasLocalPermissions(LocalPermissionName.ManageDiscoverPreferences) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated\n && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const libraries = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated &&\n LibraryRequests.libraries()\n );\n\n const {\n dashboard,\n presentation,\n audiences\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Discover,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const settings = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Dashboard);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n const phraseVariant = getPhraseVariant(presentation);\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: `pageTitle${phraseVariant}`,\n descriptionPhrase: `pageDescription${phraseVariant}`\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n widgetAppLinks.discover\n )\n }));\n\n async function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = await fetchAsync<void>(FeedbackRequests.submitFeedback({\n type: FeedbackType.Footer,\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n ProductId.Primary,\n hasPermissions(PermissionName.StudentExperience),\n [ 'discover', 'in product feedback' ]\n )\n }, {\n reaction: feedback.type,\n feedback: feedback.content,\n location: 'Discover Footer',\n presentationName: presentation.description,\n presentationId: presentation.id,\n dashboardName: dashboard.data.name,\n dashboardId: dashboard.data.id\n }));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.DiscoverFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n async function updateWidgetPreferences(\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ): Promise<void> {\n const addedSubjects = newPreferences.filter(p => {\n if (p.hidden)\n return false;\n\n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return oldPreference.hidden;\n });\n const removedSubjects = newPreferences.filter(p => {\n if (!p.hidden)\n return false;\n \n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return !oldPreference.hidden;\n });\n\n if (addedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id)));\n\n if (removedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id)));\n\n return fetchAsync<void>(DashboardRequests.updateWidgetPreferences(\n widgetId,\n newPreferences.map(p => ({\n id: p.id,\n index: p.index\n })),\n currentUser.data\n ));\n }\n const { showCalendar } = useShowCalendar();\n\n return (\n <div className='bg-white px-4'>\n <UpgradeFeedbackBanner />\n <DiscoverDashboard\n currentUser={currentUser.data}\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getDiscoverHeaderAppLinks()}\n presentation={presentation}\n imageCdnUrl={config.data.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getWidgetContentRequest={(\n ...args: Parameters<typeof DashboardRequests.dashboardWidgetContent>\n ) => {\n const hasTwig = LibraryHelper.hasTwig(libraries.data, currentUser.data);\n\n return DashboardRequests.discoverWidgetContent(hasTwig, ...args);\n }}\n setFavourite={setFavourite}\n audiences={audiences.data}\n canFavourite={canFavourite}\n updatePreferences={updateWidgetPreferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n showCalendar={showCalendar}\n jobTitle={user.data?.userProfile?.metadata?.jobTitle}\n imageUrls={{\n onboardingAdminBackgroundFull: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,\n onboardingAdminBackground: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND,\n onboardingTeacherBackground: ImageUrls.OnboardingV2.Widget.TEACHER_BACKGROUND\n }}\n settings={settings}\n isPlugin={isPlugin}\n />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, Company, Playlist, Rating, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst CLASSIFICATION_LATEST_RELEASES = 'classification-latest-releases';\n\nexport function getDiscoverWidgetAppLinks(\n params: HashObject\n): WidgetAppLinks {\n return {\n classification: (classification?: Classification) => {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification?.id, TextHelper.slugify(classification?.name) ],\n params: params || {}\n };\n },\n\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n \n latestReleases: () => ({\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n }),\n\n allTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL\n }),\n\n classificationLatestReleases: (classification: Classification) => {\n if (classification.id === CLASSIFICATION_LATEST_RELEASES)\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n };\n\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\n args: [ classification.id, TextHelper.slugify(classification.name) ]\n };\n },\n\n widgetVideoList: (widgetId: string, widgetName: string) => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.DASHBOARD,\n args: [ widgetId, TextHelper.slugify(widgetName) ]\n }),\n\n watchHistory: () => ({\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }),\n\n rating: (rating: Rating, ratings: Rating[]) => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n\n discover: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }),\n\n calendar: () => ({\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }),\n\n calendarMonth: (month: string, year?: string) => {\n const appLink: Core.AppLink = {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR_MONTH,\n args: [month.toLowerCase()]\n };\n\n if (year)\n appLink.params = { year };\n\n return appLink;\n },\n\n onboardingStep: (step: OnboardingScreenId) => {\n const appLinks = getOnboardingAppLinks();\n return appLinks[step];\n },\n\n onboardingAppLinks: () => {\n return getOnboardingAppLinks();\n },\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink\n };\n}\n\nexport function getDiscoverHeaderAppLinks(): DiscoverHeaderAppLinks {\n return {\n forYou: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n },\n whatsNew: {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n },\n calendar: {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }\n };\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.upgradeFeedbackBanner';\n\nexport function UpgradeFeedbackBanner(): JSX.Element {\n const { showFeedbackBanner, dismissFeedbackBanner } = useLiteUpgrade();\n\n if (!showFeedbackBanner)\n return <></>;\n\n return (\n <div className='alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center'>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ url: 'https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look' }}\n />\n <DivButton\n onClick={dismissFeedbackBanner}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n className='ms-2 svg-container'\n />\n </DivButton>\n </div>\n );\n}","import React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","TabContents","tab","svgName","count","data","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","FeedbackType","FeedbackRequests","submitFeedback","requestData","formValues","FeedbackFormHelper","getUserInfo","currentUser","customer","id","username","email","userType","role","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","mapInstanceRegionToTag","getTags","product","extraTags","tags","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getPhrase","DiscoverDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","DiscoverDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","presentation","showEmptyState","isReadonly","length","headerAppLinks","hasPermissions","PermissionName","widget","idx","WidgetContainerView","imageCdnUrl","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","resourceThumbnailFallbackImageUrl","preferences","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","hasLocalPermissions","onSubmitFeedback","updatePreferences","yearGroups","lazyLoad","dashboardTarget","widgetIndex","jobTitle","isPreviewing","settings","isPlugin","emptyImageUrl","widgetWizard","CuratedDiscoverView","config","ConfigRequests","UserRequests","user","isAuthenticated","usePermissions","usePluginHelper","CustomerRequests","libraries","LibraryRequests","targetType","queryParams","presentationSlug","fetchAsync","useSettings","useLiteFavourites","u","activeAudiences","SharedViewModelKeys","undefined","storage","AudienceHelper","phraseVariant","PresentationLearningLevel","learningLevel","getPhraseVariant","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","discover","useShowCalendar","UpgradeFeedbackBanner","ImageUrls","hasTwig","LibraryHelper","args","DashboardRequests","oldPreferences","newPreferences","addedSubjects","filter","p","hidden","find","o","removedSubjects","PreferenceRequests","s","feedback","ProductId","reaction","presentationName","presentationId","dashboardName","dashboardId","promise","AnalyticsHelper","feedbackType","workflowPhase","userProfile","onboardingAdminBackgroundFull","onboardingAdminBackground","onboardingTeacherBackground","CLASSIFICATION_LATEST_RELEASES","getDiscoverWidgetAppLinks","classification","application","action","videoType","video","opts","context","series","subText","playlist","latestReleases","allTopics","classificationLatestReleases","widgetVideoList","widgetName","watchHistory","rating","ratings","moviesAndTv","company","calendarMonth","month","year","onboardingStep","step","onboardingAppLinks","classroomGuide","interactiveGuidance","resourceGuidance","getDiscoverHeaderAppLinks","showFeedbackBanner","dismissFeedbackBanner","options","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","activePresentation","redirectOnError","allowedLearningLevels","learningLevelCantAccess","l","toString","noSetting","setShowCalendar","isLoading","setIsLoading"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6846],{95342:(e,t,n)=>{n.r(t),n.d(t,{SeriesView:()=>se});var i=n(32735),a=n(70680),r=n(23481),o=n(20354),s=n(65858),c=n(44522),u=n(49935),l=n(71020),d=n(74696),p=n(13231),v=n(79718),f=n(7733),m=n(51365),h=n(16714),b=n(23788),g=n(21750),y=n(39151),S=n(1666),k=n(60011),A=n(31949),E=n(56520),I=n(91286),L=n(60115),O=n(22902),T=n(79612),P=n(76753),w=n(35223),C=n(68140),j=n(14070),F=n(97291),N=n(64364);function _(e){return _="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},_(e)}function B(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,x(i.key),i)}}function x(e){var t=function(e,t){if("object"!=_(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=_(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}function V(e,t,n){return t=G(t),function(e,t){if(t&&("object"==_(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,D()?Reflect.construct(t,n||[],G(e).constructor):t.apply(e,n))}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(D=function(){return!!e})()}function G(e){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},G(e)}function M(e,t){return M=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},M(e,t)}var R="shared.seriesNotFoundError",U=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),V(this,t,["Series doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&M(e,t)}(t,e),n=t,(i=[{key:"name",get:function(){return"SeriesNotFoundError"}},{key:"heading",get:function(){return r.T.getPhrase(R,"heading")}},{key:"description",get:function(){return r.T.getPhrase(R,"description")}}])&&B(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,i}(N.H),H=n(51855),J=n(10671),W=n(7179),Q=n(27638),Z=n(86698),K=n(44110),q=n(97816),z=n(10741),X=n(33192),Y=n(22490),$=n(28400),ee=n(
|
|
2
|
-
//# sourceMappingURL=6846-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6846],{95342:(e,t,n)=>{n.r(t),n.d(t,{SeriesView:()=>se});var i=n(32735),a=n(70680),r=n(23481),o=n(20354),s=n(65858),c=n(44522),u=n(49935),l=n(71020),d=n(74696),p=n(13231),v=n(79718),f=n(7733),m=n(51365),h=n(16714),b=n(23788),g=n(21750),y=n(39151),S=n(1666),k=n(60011),A=n(31949),E=n(56520),I=n(91286),L=n(60115),O=n(22902),T=n(79612),P=n(76753),w=n(35223),C=n(68140),j=n(14070),F=n(97291),N=n(64364);function _(e){return _="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},_(e)}function B(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,x(i.key),i)}}function x(e){var t=function(e,t){if("object"!=_(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=_(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}function V(e,t,n){return t=G(t),function(e,t){if(t&&("object"==_(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,D()?Reflect.construct(t,n||[],G(e).constructor):t.apply(e,n))}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(D=function(){return!!e})()}function G(e){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},G(e)}function M(e,t){return M=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},M(e,t)}var R="shared.seriesNotFoundError",U=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),V(this,t,["Series doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&M(e,t)}(t,e),n=t,(i=[{key:"name",get:function(){return"SeriesNotFoundError"}},{key:"heading",get:function(){return r.T.getPhrase(R,"heading")}},{key:"description",get:function(){return r.T.getPhrase(R,"description")}}])&&B(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,i}(N.H),H=n(51855),J=n(10671),W=n(7179),Q=n(27638),Z=n(86698),K=n(44110),q=n(97816),z=n(10741),X=n(33192),Y=n(22490),$=n(28400),ee=n(87114),te=r.T.encloseNamespace("shared.series"),ne=function(e,t){return{application:F.O.SUBJECT,action:j.e.Subjects.CLASSIFICATION,args:[e.id,$.m.slugify(e.name)],params:{mtv:!!t||void 0}}},ie={getBreadcrumbs:function(e){var t=e.moviesAndTv,n=e.topicPath,i=e.series,a=e.presentation,r=e.availablePresentations;if(t){var o=[{name:te("moviesAndTv"),appLink:{application:F.O.MOVIES_AND_TV,action:j.e.MoviesAndTv.HOME}}];return null==n||n.slice(1,n.length).forEach((function(e){o.push({name:e.name,appLink:ne(e,!0)})})),o.push({name:i.name,active:!0}),o}var s=[{name:te("discover"),appLink:{application:F.O.DASHBOARD,action:j.e.Dashboard.HOME}}];return n&&(s.push({name:ee.i.getExploreAllTopicsTitle(null==a?void 0:a.name,null==r?void 0:r.length),appLink:{application:F.O.SUBJECT,action:j.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:null==a?void 0:a.id}}}),n.forEach((function(e){s.push({name:e.name,appLink:ne(e)})}))),s.push({name:i.name,active:!0}),s}},ae=n(82431),re=r.T.encloseNamespace("shared.series"),oe=function(e){return f.o[e.name.charCodeAt(0)%f.o.length]};function se(e){var t,n,r,f,N,_=(0,a.I0)(),B=(0,Q.u)(s.LZ.VideoThumbnail),x=B.setFavourite,V=B.canFavourite,D=(0,O.T)(),G=D.hasPermissions,M=D.hasLocalPermissions,R=(0,H.G)().isPlugin,$=(0,E.R0)(),ee=$.openInCurationStudioLabel,te=$.isUserCurator,ne=$.getOpenInCurationStudioLink;(0,W.P)({id:e.id,app:"series",shareId:e.shareId});var se=o.a.useBasicFetch(y.L.config()),ce=o.a.useBasicFetch(A.N.currentUser()),ue=o.a.useBasicFetch((null===(t=ce.data)||void 0===t?void 0:t.isAuthenticated)&&S.h.yearGroups(ce.data.customerId)),le=o.a.useBasicFetch(e.classificationId&&g.x.classification(e.classificationId,null===(n=ce.data)||void 0===n?void 0:n.id)),de=o.a.useBasicFetch(e.shareId?k.J.sharedSeries(e.id,e.shareId):k.J.series(e.id)),pe=o.a.useBasicFetch((null===(r=le.data)||void 0===r?void 0:r.presentationId)&&g.x.presentationById(le.data.presentationId)),ve=(0,Z.y)().availablePresentations,fe=(0,K.i)();(0,T.M)(P.CG.getSeriesMetadata({content:de.data,phraseContext:{phraseHandler:re,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:X.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:X.f.allowIndexing()}));var me=(0,J._)({location:J.i.VideoItem,shareId:e.shareId}),he=o.a.useBasicFetch(e.classificationId&&g.x.path(e.classificationId));function be(t){var n;return k.J.seriesVideos(e.id,null===(n=ce.data)||void 0===n?void 0:n.id,Se,t)}function ge(e){if(ye(!!e))return o.a.getFetch(_)(be(e))}function ye(e){return!e||!X.f.isBot()}var Se=!!ce.data&&C.d.getOrSetSortType(ce.data.id,e.sort,b.D.Series),ke={classificationId:e.classificationId,mtv:e.moviesAndTv},Ae=(0,L.K)(!!ce.data&&be,ge),Ee=Ae.items,Ie=Ae.hasMore,Le=Ae.isFetching;(0,q.V)(Ee),(0,I.v)(de,{notFound:U});var Oe=!G(h.C.StudentExperience)&&M(h.E.UseSeriesActions);return i.createElement(m.M.Provider,{value:me},i.createElement("div",{className:"px-3"},se.data&&de.data?i.createElement(c.p,{heading:de.data.name,banner:de.data.banner,imageCdnUrl:se.data.imageCdnUrl,actions:function(){var e,t,n;if(R||!Oe)return[];var i=[{label:re("share"),appLink:de&&{application:F.O.DEFAULT,action:j.e.Default.SHARE,args:[null===(e=de.data)||void 0===e?void 0:e.id],params:{entityType:"series"}},svgName:w.vn.Share2,className:"btn btn-outline-dark me-2",button:!0}];return te&&i.push({label:ee,href:ne(null===(t=de.data)||void 0===t?void 0:t.typeId,null===(n=de.data)||void 0===n?void 0:n.id),openInNewTab:!0}),i}(),actionsDropdownClassName:"btn btn-outline-dark",blockColourClass:oe(de.data)}):i.createElement(c.v,null),i.createElement("div",null,i.createElement("div",{className:(null===(f=de.data)||void 0===f?void 0:f.description)||e.moviesAndTv&&he.data?"border-bottom py-3 mb-3":"pt-3 mb-2"},e.classificationId||e.moviesAndTv?!de.data||e.classificationId&&!he.data?i.createElement(u.b2,null):i.createElement(u.Oo,{breadcrumbs:ie.getBreadcrumbs({moviesAndTv:e.moviesAndTv,topicPath:he.data,series:de.data,presentation:pe.data,availablePresentations:ve})}):i.createElement(i.Fragment,null),i.createElement("div",{className:"d-flex align-items-center"},(null===(N=de.data)||void 0===N?void 0:N.description)&&i.createElement("p",{className:"mb-0 ".concat(e.classificationId?"pt-2":"")},de.data.description),de.data&&i.createElement("div",{className:"ms-auto"},i.createElement(v.p,{variant:"outline-dark",type:Se,analyticsOptions:{location:s.LZ.VideoListHeader,entity:s.py.Video,actionType:s.Vw.Sort,workflowPhase:s.eu.Complete},getSortAppLink:function(e){return ae.j.getSeriesAppLink(de.data,Object.assign(Object.assign({},ke),{sort:e}))}})))),Ee?i.createElement(i.Fragment,null,i.createElement(p.E4,{videos:Ee,yearGroups:ue.data,getVideoAppLink:e.getVideoAppLink,hasPermissions:G,getSubTextAppLink:function(e){return ae.j.getSeriesAppLink(null==e?void 0:e.series,Object.assign(Object.assign({},ke),{sort:Se}))},setFavourite:x,canFavourite:V,presentationAudiences:e.moviesAndTv?null:fe.data,getPreviewQuestionsAppLink:function(e){return z.j.getPreviewQuestionsAppLink(e)},isPlugin:R,getClassroomGuideAppLink:Y.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:Y.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:Y.W.getResourceGuidanceAppLink}),(ye(Ie)||Le)&&i.createElement(l._,{isFetching:Le,fetchNext:ge})):i.createElement(d.S,null))))}}}]);
|
|
2
|
+
//# sourceMappingURL=6846-08b00decd8-lite.chunk.js.map
|
package/dist/scripts/{6846-5ae3efe823-lite.chunk.js.map → 6846-08b00decd8-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6846-5ae3efe823-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/shared/errors/series/series-not-found/SeriesNotFoundError.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.seriesNotFoundError';\n\nexport class SeriesNotFoundError extends ErrorPageError {\n constructor() {\n super('Series doesn\\'t exist');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SeriesNotFoundError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Classification, Presentation, Series } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getClassificationAppLink = (classification: Classification, moviesAndTv?: boolean): Core.AppLink => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification.id, TextHelper.slugify(classification.name) ],\n params: { mtv: moviesAndTv ? true : undefined }\n});\n\ninterface GetBreadcrumbOptions {\n moviesAndTv: boolean;\n topicPath: Classification[];\n series: Series;\n presentation: Presentation;\n availablePresentations: Presentation[]\n}\n\nexport const SeriesViewUtils = {\n getBreadcrumbs(options: GetBreadcrumbOptions): Breadcrumb[] {\n const { moviesAndTv, topicPath, series, presentation, availablePresentations } = options;\n\n if (moviesAndTv) {\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('moviesAndTv'),\n appLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.HOME\n }\n }];\n\n topicPath?.slice(1, topicPath.length).forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item, true)\n });\n });\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }];\n \n if (topicPath) {\n breadcrumbs.push({\n name: TopicsHelper.getExploreAllTopicsTitle(\n presentation?.name,\n availablePresentations?.length\n ),\n appLink: {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL,\n params: { presentationId: presentation?.id }\n }\n });\n\n topicPath.forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item)\n });\n });\n }\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, Config, CurrentUser, Presentation, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { SeriesNotFoundError } from 'shared/errors/series/series-not-found/SeriesNotFoundError';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { SeriesViewUtils } from 'shared/views/series/SeriesViewUtils';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getFallbackBannerColourClass = (series: Series): string => {\n return BG_COLOUR_CLASS_NAMES[series.name.charCodeAt(0) % BG_COLOUR_CLASS_NAMES.length];\n};\n\ninterface SeriesViewProps {\n id: string;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n classificationId?: string;\n shareId?: string;\n moviesAndTv?: boolean;\n sort?: VideoSortType;\n}\n\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\n const dispatch = useDispatch();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n useDeepLinks({ id: props.id, app: 'series', shareId: props.shareId });\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const classification = Flight.useBasicFetch<Classification>(\n props.classificationId &&\n ClassificationRequests.classification(props.classificationId, currentUser.data?.id)\n );\n\n const series = Flight.useBasicFetch<Series>(props.shareId\n ? SeriesRequests.sharedSeries(props.id, props.shareId)\n : SeriesRequests.series(props.id));\n\n const presentation = Flight.useBasicFetch<Presentation>(classification.data?.presentationId &&\n ClassificationRequests.presentationById(classification.data.presentationId));\n\n const {\n availablePresentations\n } = usePresentation();\n\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata(PageMetadataHelper.getSeriesMetadata({\n content: series.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, shareId: props.shareId });\n\n const topicPath = Flight.useBasicFetch<Classification[]>(\n props.classificationId &&\n ClassificationRequests.path(props.classificationId)\n );\n\n function getVideosRequest(cursor?: string) {\n return SeriesRequests.seriesVideos(props.id, currentUser.data?.id, sort, cursor);\n }\n\n function fetchNext(cursor?: string) {\n if (!shouldRequestData(!!cursor))\n return;\n\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n /**\n * Infinite scrolling will be restricted for public browsing as a crawler/bot.\n * The rationale behind this is that we don't want to preload or allow crawlers\n * to enumerate the entirety of our series collections. Some series have > 10k videos\n * and they don't all need to be indexed (i.e. old news/current affair series).\n * \n * Public browsing by regular users will continue to paginate, along with authenticated\n * users. - Mike\n */\n function shouldRequestData(moreToFetch?: boolean) {\n return !moreToFetch || !SeoHelper.isBot();\n }\n\n function getBannerActions(): ActionOptions[] {\n if (isPlugin || !showHeaderActions) {\n return [];\n }\n\n const actions: ActionOptions[] = [{\n label: getPhrase('share'),\n appLink: series && {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [series.data?.id],\n params: { entityType: 'series' }\n },\n svgName: cvSvgLibrary.Share2,\n className: 'btn btn-outline-dark me-2',\n button: true\n }];\n\n if (isUserCurator)\n actions.push({\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(series.data?.typeId, series.data?.id),\n openInNewTab: true\n });\n\n return actions;\n }\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data && VideoSortHelper.getOrSetSortType(\n currentUser.data.id,\n props.sort,\n VideoSortType.Series\n );\n\n const seriesParams = {\n classificationId: props.classificationId,\n mtv: props.moviesAndTv\n };\n\n const {\n items: videos,\n hasMore,\n isFetching\n } = useInfiniteList<Video>(currentUser.data ? getVideosRequest : false, fetchNext);\n\n useVideoMixin(videos);\n\n useHandleObjectError(series, {\n notFound: SeriesNotFoundError\n });\n\n const showHeaderActions = !hasPermissions(PermissionName.StudentExperience) &&\n hasLocalPermissions(LocalPermissionName.UseSeriesActions);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n {config.data && series.data\n ? (\n <BannerHeader\n heading={series.data.name}\n banner={series.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n actions={getBannerActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n blockColourClass={getFallbackBannerColourClass(series.data)}\n />\n ) : <PartialBannerHeader />\n }\n \n <div>\n <div className={series.data?.description || (props.moviesAndTv && topicPath.data) ? 'border-bottom py-3 mb-3' : 'pt-3 mb-2'}>\n {(() => {\n if (!props.classificationId && !props.moviesAndTv)\n return <></>;\n\n if (!series.data || (props.classificationId && !topicPath.data))\n return <PartialBreadcrumbs />;\n\n return (\n <Breadcrumbs\n breadcrumbs={SeriesViewUtils.getBreadcrumbs({\n moviesAndTv: props.moviesAndTv,\n topicPath: topicPath.data,\n series: series.data,\n presentation: presentation.data,\n availablePresentations: availablePresentations\n })}\n />\n );\n })()}\n\n <div className='d-flex align-items-center'>\n {series.data?.description && (\n <p className={`mb-0 ${props.classificationId ? 'pt-2' : ''}`}>{series.data.description}</p>\n )}\n\n {series.data && (\n <div className='ms-auto'>\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n getSortAppLink={sort => {\n return SeriesAppLinkHelper.getSeriesAppLink(series.data, { ...seriesParams, sort });\n }}\n />\n </div>\n )}\n </div>\n </div>\n\n {(() => {\n if (!videos)\n return <PartialVideoList />;\n\n return (\n <>\n <VideoList\n videos={videos}\n yearGroups={yearGroups.data}\n getVideoAppLink={props.getVideoAppLink}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video =>\n SeriesAppLinkHelper.getSeriesAppLink(video?.series, { ...seriesParams, sort })}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={props.moviesAndTv ? null : audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n {(shouldRequestData(hasMore) || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />}\n </>\n );\n })()}\n </div>\n </div>\n </VideoActionsContext.Provider>\n );\n}\n"],"names":["namespace","SeriesNotFoundError","LanguageService","ErrorPageError","getPhrase","getClassificationAppLink","classification","moviesAndTv","application","action","args","id","TextHelper","name","params","mtv","undefined","SeriesViewUtils","getBreadcrumbs","options","topicPath","series","presentation","availablePresentations","appLink","slice","length","forEach","item","push","active","breadcrumbs","TopicsHelper","presentationId","getFallbackBannerColourClass","charCodeAt","SeriesView","props","dispatch","useLiteFavourites","u","setFavourite","canFavourite","usePermissions","hasPermissions","hasLocalPermissions","isPlugin","usePluginHelper","useCurationStudio","openInCurationStudioLabel","isUserCurator","getOpenInCurationStudioLink","useDeepLinks","app","shareId","config","ConfigRequests","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","classificationId","ClassificationRequests","SeriesRequests","usePresentation","audiences","usePresentationAudiences","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","videoActions","useVideoActions","location","getVideosRequest","cursor","sort","fetchNext","shouldRequestData","moreToFetch","VideoSortHelper","VideoSortType","seriesParams","videos","items","hasMore","isFetching","useVideoMixin","notFound","showHeaderActions","PermissionName","VideoActionsContext","value","className","BannerHeader","heading","banner","imageCdnUrl","actions","label","entityType","svgName","button","href","typeId","openInNewTab","getBannerActions","actionsDropdownClassName","blockColourClass","description","Breadcrumbs","VideoSortSelect","variant","type","analyticsOptions","entity","actionType","workflowPhase","getSortAppLink","SeriesAppLinkHelper","VideoList","getVideoAppLink","getSubTextAppLink","video","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","InfiniteScrollFooter","PartialVideoList"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/6846-08b00decd8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/shared/errors/series/series-not-found/SeriesNotFoundError.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.seriesNotFoundError';\n\nexport class SeriesNotFoundError extends ErrorPageError {\n constructor() {\n super('Series doesn\\'t exist');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SeriesNotFoundError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Classification, Presentation, Series } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getClassificationAppLink = (classification: Classification, moviesAndTv?: boolean): Core.AppLink => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification.id, TextHelper.slugify(classification.name) ],\n params: { mtv: moviesAndTv ? true : undefined }\n});\n\ninterface GetBreadcrumbOptions {\n moviesAndTv: boolean;\n topicPath: Classification[];\n series: Series;\n presentation: Presentation;\n availablePresentations: Presentation[]\n}\n\nexport const SeriesViewUtils = {\n getBreadcrumbs(options: GetBreadcrumbOptions): Breadcrumb[] {\n const { moviesAndTv, topicPath, series, presentation, availablePresentations } = options;\n\n if (moviesAndTv) {\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('moviesAndTv'),\n appLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.HOME\n }\n }];\n\n topicPath?.slice(1, topicPath.length).forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item, true)\n });\n });\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }];\n \n if (topicPath) {\n breadcrumbs.push({\n name: TopicsHelper.getExploreAllTopicsTitle(\n presentation?.name,\n availablePresentations?.length\n ),\n appLink: {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL,\n params: { presentationId: presentation?.id }\n }\n });\n\n topicPath.forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item)\n });\n });\n }\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, Config, CurrentUser, Presentation, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { SeriesNotFoundError } from 'shared/errors/series/series-not-found/SeriesNotFoundError';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { SeriesViewUtils } from 'shared/views/series/SeriesViewUtils';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getFallbackBannerColourClass = (series: Series): string => {\n return BG_COLOUR_CLASS_NAMES[series.name.charCodeAt(0) % BG_COLOUR_CLASS_NAMES.length];\n};\n\ninterface SeriesViewProps {\n id: string;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n classificationId?: string;\n shareId?: string;\n moviesAndTv?: boolean;\n sort?: VideoSortType;\n}\n\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\n const dispatch = useDispatch();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n useDeepLinks({ id: props.id, app: 'series', shareId: props.shareId });\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const classification = Flight.useBasicFetch<Classification>(\n props.classificationId &&\n ClassificationRequests.classification(props.classificationId, currentUser.data?.id)\n );\n\n const series = Flight.useBasicFetch<Series>(props.shareId\n ? SeriesRequests.sharedSeries(props.id, props.shareId)\n : SeriesRequests.series(props.id));\n\n const presentation = Flight.useBasicFetch<Presentation>(classification.data?.presentationId &&\n ClassificationRequests.presentationById(classification.data.presentationId));\n\n const {\n availablePresentations\n } = usePresentation();\n\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata(PageMetadataHelper.getSeriesMetadata({\n content: series.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, shareId: props.shareId });\n\n const topicPath = Flight.useBasicFetch<Classification[]>(\n props.classificationId &&\n ClassificationRequests.path(props.classificationId)\n );\n\n function getVideosRequest(cursor?: string) {\n return SeriesRequests.seriesVideos(props.id, currentUser.data?.id, sort, cursor);\n }\n\n function fetchNext(cursor?: string) {\n if (!shouldRequestData(!!cursor))\n return;\n\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n /**\n * Infinite scrolling will be restricted for public browsing as a crawler/bot.\n * The rationale behind this is that we don't want to preload or allow crawlers\n * to enumerate the entirety of our series collections. Some series have > 10k videos\n * and they don't all need to be indexed (i.e. old news/current affair series).\n * \n * Public browsing by regular users will continue to paginate, along with authenticated\n * users. - Mike\n */\n function shouldRequestData(moreToFetch?: boolean) {\n return !moreToFetch || !SeoHelper.isBot();\n }\n\n function getBannerActions(): ActionOptions[] {\n if (isPlugin || !showHeaderActions) {\n return [];\n }\n\n const actions: ActionOptions[] = [{\n label: getPhrase('share'),\n appLink: series && {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [series.data?.id],\n params: { entityType: 'series' }\n },\n svgName: cvSvgLibrary.Share2,\n className: 'btn btn-outline-dark me-2',\n button: true\n }];\n\n if (isUserCurator)\n actions.push({\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(series.data?.typeId, series.data?.id),\n openInNewTab: true\n });\n\n return actions;\n }\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data && VideoSortHelper.getOrSetSortType(\n currentUser.data.id,\n props.sort,\n VideoSortType.Series\n );\n\n const seriesParams = {\n classificationId: props.classificationId,\n mtv: props.moviesAndTv\n };\n\n const {\n items: videos,\n hasMore,\n isFetching\n } = useInfiniteList<Video>(currentUser.data ? getVideosRequest : false, fetchNext);\n\n useVideoMixin(videos);\n\n useHandleObjectError(series, {\n notFound: SeriesNotFoundError\n });\n\n const showHeaderActions = !hasPermissions(PermissionName.StudentExperience) &&\n hasLocalPermissions(LocalPermissionName.UseSeriesActions);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n {config.data && series.data\n ? (\n <BannerHeader\n heading={series.data.name}\n banner={series.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n actions={getBannerActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n blockColourClass={getFallbackBannerColourClass(series.data)}\n />\n ) : <PartialBannerHeader />\n }\n \n <div>\n <div className={series.data?.description || (props.moviesAndTv && topicPath.data) ? 'border-bottom py-3 mb-3' : 'pt-3 mb-2'}>\n {(() => {\n if (!props.classificationId && !props.moviesAndTv)\n return <></>;\n\n if (!series.data || (props.classificationId && !topicPath.data))\n return <PartialBreadcrumbs />;\n\n return (\n <Breadcrumbs\n breadcrumbs={SeriesViewUtils.getBreadcrumbs({\n moviesAndTv: props.moviesAndTv,\n topicPath: topicPath.data,\n series: series.data,\n presentation: presentation.data,\n availablePresentations: availablePresentations\n })}\n />\n );\n })()}\n\n <div className='d-flex align-items-center'>\n {series.data?.description && (\n <p className={`mb-0 ${props.classificationId ? 'pt-2' : ''}`}>{series.data.description}</p>\n )}\n\n {series.data && (\n <div className='ms-auto'>\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n getSortAppLink={sort => {\n return SeriesAppLinkHelper.getSeriesAppLink(series.data, { ...seriesParams, sort });\n }}\n />\n </div>\n )}\n </div>\n </div>\n\n {(() => {\n if (!videos)\n return <PartialVideoList />;\n\n return (\n <>\n <VideoList\n videos={videos}\n yearGroups={yearGroups.data}\n getVideoAppLink={props.getVideoAppLink}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video =>\n SeriesAppLinkHelper.getSeriesAppLink(video?.series, { ...seriesParams, sort })}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={props.moviesAndTv ? null : audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n {(shouldRequestData(hasMore) || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />}\n </>\n );\n })()}\n </div>\n </div>\n </VideoActionsContext.Provider>\n );\n}\n"],"names":["namespace","SeriesNotFoundError","LanguageService","ErrorPageError","getPhrase","getClassificationAppLink","classification","moviesAndTv","application","action","args","id","TextHelper","name","params","mtv","undefined","SeriesViewUtils","getBreadcrumbs","options","topicPath","series","presentation","availablePresentations","appLink","slice","length","forEach","item","push","active","breadcrumbs","TopicsHelper","presentationId","getFallbackBannerColourClass","charCodeAt","SeriesView","props","dispatch","useLiteFavourites","u","setFavourite","canFavourite","usePermissions","hasPermissions","hasLocalPermissions","isPlugin","usePluginHelper","useCurationStudio","openInCurationStudioLabel","isUserCurator","getOpenInCurationStudioLink","useDeepLinks","app","shareId","config","ConfigRequests","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","classificationId","ClassificationRequests","SeriesRequests","usePresentation","audiences","usePresentationAudiences","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","videoActions","useVideoActions","location","getVideosRequest","cursor","sort","fetchNext","shouldRequestData","moreToFetch","VideoSortHelper","VideoSortType","seriesParams","videos","items","hasMore","isFetching","useVideoMixin","notFound","showHeaderActions","PermissionName","VideoActionsContext","value","className","BannerHeader","heading","banner","imageCdnUrl","actions","label","entityType","svgName","button","href","typeId","openInNewTab","getBannerActions","actionsDropdownClassName","blockColourClass","description","Breadcrumbs","VideoSortSelect","variant","type","analyticsOptions","entity","actionType","workflowPhase","getSortAppLink","SeriesAppLinkHelper","VideoList","getVideoAppLink","getSubTextAppLink","video","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","InfiniteScrollFooter","PartialVideoList"],"sourceRoot":""}
|