@clickview/lite 0.57.2-rc.2 → 0.57.3-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{3137-lite-7da84a8e68.chunk.css → 3137-lite-8afb370875.chunk.css} +1 -1
  3. package/dist/scripts/{1125-a24f83a3f3-lite.chunk.js → 1125-0e659106d9-lite.chunk.js} +2 -2
  4. package/dist/scripts/{1125-a24f83a3f3-lite.chunk.js.map → 1125-0e659106d9-lite.chunk.js.map} +1 -1
  5. package/dist/scripts/{1340-3f5e7d4623-lite.chunk.js → 1340-c78a7acd0d-lite.chunk.js} +2 -2
  6. package/dist/scripts/{1340-3f5e7d4623-lite.chunk.js.map → 1340-c78a7acd0d-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{154-81a4eabaae-lite.chunk.js → 154-fa5b45d1bf-lite.chunk.js} +2 -2
  8. package/dist/scripts/{154-81a4eabaae-lite.chunk.js.map → 154-fa5b45d1bf-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{1913-6a6bb3f16f-lite.chunk.js → 1913-6a7d99b96f-lite.chunk.js} +2 -2
  10. package/dist/scripts/{1913-6a6bb3f16f-lite.chunk.js.map → 1913-6a7d99b96f-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/1958-cf5dd56576-lite.chunk.js +2 -0
  12. package/dist/scripts/{1958-31e6049ac7-lite.chunk.js.map → 1958-cf5dd56576-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{209-4a322eae44-lite.chunk.js → 209-396b9a7f13-lite.chunk.js} +2 -2
  14. package/dist/scripts/{209-4a322eae44-lite.chunk.js.map → 209-396b9a7f13-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/2182-a5652609bb-lite.chunk.js +2 -0
  16. package/dist/scripts/2182-a5652609bb-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{2208-a9d679d40c-lite.chunk.js → 2208-5fed507ca8-lite.chunk.js} +2 -2
  18. package/dist/scripts/{2208-a9d679d40c-lite.chunk.js.map → 2208-5fed507ca8-lite.chunk.js.map} +1 -1
  19. package/dist/scripts/{2402-2d435f7027-lite.chunk.js → 2402-300aa81eaf-lite.chunk.js} +2 -2
  20. package/dist/scripts/{2402-2d435f7027-lite.chunk.js.map → 2402-300aa81eaf-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/{3137-51febcedd6-lite.chunk.js → 3137-00d0d09d82-lite.chunk.js} +2 -2
  22. package/dist/scripts/{3137-51febcedd6-lite.chunk.js.map → 3137-00d0d09d82-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/338-5c6ffa41bb-lite.chunk.js +3 -0
  24. package/dist/scripts/338-5c6ffa41bb-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3962-6bfcebace6-lite.chunk.js → 3962-eaa18d5ab6-lite.chunk.js} +2 -2
  26. package/dist/scripts/{3962-6bfcebace6-lite.chunk.js.map → 3962-eaa18d5ab6-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/{4395-389855e87f-lite.chunk.js → 4395-9d987fe2e6-lite.chunk.js} +2 -2
  28. package/dist/scripts/{4395-389855e87f-lite.chunk.js.map → 4395-9d987fe2e6-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/{4591-1e137b9a3f-lite.chunk.js → 4591-19ee265d34-lite.chunk.js} +2 -2
  30. package/dist/scripts/4591-19ee265d34-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{467-baec908c73-lite.chunk.js → 467-1550deaaa1-lite.chunk.js} +2 -2
  32. package/dist/scripts/{467-baec908c73-lite.chunk.js.map → 467-1550deaaa1-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/5157-9396b0580d-lite.chunk.js +2 -0
  34. package/dist/scripts/{5157-b1d38e123c-lite.chunk.js.map → 5157-9396b0580d-lite.chunk.js.map} +1 -1
  35. package/dist/scripts/{528-0e18ce97a9-lite.chunk.js → 528-3120366abc-lite.chunk.js} +2 -2
  36. package/dist/scripts/{528-0e18ce97a9-lite.chunk.js.map → 528-3120366abc-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{5376-6e993d6097-lite.chunk.js → 5376-38456da0db-lite.chunk.js} +3 -3
  38. package/dist/scripts/{5376-6e993d6097-lite.chunk.js.map → 5376-38456da0db-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{6263-c6ce662fc3-lite.chunk.js → 6263-c665ac8df6-lite.chunk.js} +2 -2
  40. package/dist/scripts/{6263-c6ce662fc3-lite.chunk.js.map → 6263-c665ac8df6-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/{6290-dd18f6a50a-lite.chunk.js → 6290-a295d749c3-lite.chunk.js} +2 -2
  42. package/dist/scripts/{6290-dd18f6a50a-lite.chunk.js.map → 6290-a295d749c3-lite.chunk.js.map} +1 -1
  43. package/dist/scripts/{6480-9f3dc79b38-lite.chunk.js → 6480-03513bbd54-lite.chunk.js} +2 -2
  44. package/dist/scripts/{6480-9f3dc79b38-lite.chunk.js.map → 6480-03513bbd54-lite.chunk.js.map} +1 -1
  45. package/dist/scripts/{7112-ea440dfba0-lite.chunk.js → 7112-2e77a3e7af-lite.chunk.js} +3 -3
  46. package/dist/scripts/{7112-ea440dfba0-lite.chunk.js.map → 7112-2e77a3e7af-lite.chunk.js.map} +1 -1
  47. package/dist/scripts/{7178-c592da7054-lite.chunk.js → 7178-f3794c1ee5-lite.chunk.js} +2 -2
  48. package/dist/scripts/{7178-c592da7054-lite.chunk.js.map → 7178-f3794c1ee5-lite.chunk.js.map} +1 -1
  49. package/dist/scripts/{775-b6cb8f1808-lite.chunk.js → 775-d6b0a7afbd-lite.chunk.js} +3 -3
  50. package/dist/scripts/{775-b6cb8f1808-lite.chunk.js.map → 775-d6b0a7afbd-lite.chunk.js.map} +1 -1
  51. package/dist/scripts/823-0a1356d38c-lite.chunk.js +2 -0
  52. package/dist/scripts/823-0a1356d38c-lite.chunk.js.map +1 -0
  53. package/dist/scripts/{8489-7779fd40b3-lite.chunk.js → 8489-88ab052e8c-lite.chunk.js} +3 -3
  54. package/dist/scripts/{8489-7779fd40b3-lite.chunk.js.map → 8489-88ab052e8c-lite.chunk.js.map} +1 -1
  55. package/dist/scripts/{8722-095bf62b96-lite.chunk.js → 8722-ed6103f3e4-lite.chunk.js} +2 -2
  56. package/dist/scripts/{8722-095bf62b96-lite.chunk.js.map → 8722-ed6103f3e4-lite.chunk.js.map} +1 -1
  57. package/dist/scripts/{8905-46d89811eb-lite.chunk.js → 8905-799dc47805-lite.chunk.js} +2 -2
  58. package/dist/scripts/{8905-46d89811eb-lite.chunk.js.map → 8905-799dc47805-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/{8935-2bb61f918c-lite.chunk.js → 8935-38d780c423-lite.chunk.js} +3 -3
  60. package/dist/scripts/{8935-2bb61f918c-lite.chunk.js.map → 8935-38d780c423-lite.chunk.js.map} +1 -1
  61. package/dist/scripts/{9118-20d1a60a52-lite.chunk.js → 9118-c769eeb11a-lite.chunk.js} +2 -2
  62. package/dist/scripts/{9118-20d1a60a52-lite.chunk.js.map → 9118-c769eeb11a-lite.chunk.js.map} +1 -1
  63. package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js → 9230-1ffbf1807e-lite.chunk.js} +3 -3
  64. package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js.map → 9230-1ffbf1807e-lite.chunk.js.map} +1 -1
  65. package/dist/scripts/{9614-2bca60768e-lite.chunk.js → 9614-6e5babb89a-lite.chunk.js} +2 -2
  66. package/dist/scripts/{9614-2bca60768e-lite.chunk.js.map → 9614-6e5babb89a-lite.chunk.js.map} +1 -1
  67. package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js → 9719-28c14a0783-lite.chunk.js} +3 -3
  68. package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js.map → 9719-28c14a0783-lite.chunk.js.map} +1 -1
  69. package/dist/scripts/{bundle-fb8200eefd.min.js → bundle-b25c09d3e8.min.js} +3 -3
  70. package/dist/scripts/{bundle-fb8200eefd.min.js.map → bundle-b25c09d3e8.min.js.map} +1 -1
  71. package/package.json +1 -1
  72. package/dist/scripts/1958-31e6049ac7-lite.chunk.js +0 -2
  73. package/dist/scripts/2182-aa9aca3196-lite.chunk.js +0 -2
  74. package/dist/scripts/2182-aa9aca3196-lite.chunk.js.map +0 -1
  75. package/dist/scripts/338-8b4fba84c0-lite.chunk.js +0 -3
  76. package/dist/scripts/338-8b4fba84c0-lite.chunk.js.map +0 -1
  77. package/dist/scripts/4591-1e137b9a3f-lite.chunk.js.map +0 -1
  78. package/dist/scripts/5157-b1d38e123c-lite.chunk.js +0 -2
  79. package/dist/scripts/823-697bd66d4d-lite.chunk.js +0 -2
  80. package/dist/scripts/823-697bd66d4d-lite.chunk.js.map +0 -1
  81. /package/dist/scripts/{3137-51febcedd6-lite.chunk.js.LICENSE.txt → 3137-00d0d09d82-lite.chunk.js.LICENSE.txt} +0 -0
  82. /package/dist/scripts/{338-8b4fba84c0-lite.chunk.js.LICENSE.txt → 338-5c6ffa41bb-lite.chunk.js.LICENSE.txt} +0 -0
  83. /package/dist/scripts/{5376-6e993d6097-lite.chunk.js.LICENSE.txt → 5376-38456da0db-lite.chunk.js.LICENSE.txt} +0 -0
  84. /package/dist/scripts/{7112-ea440dfba0-lite.chunk.js.LICENSE.txt → 7112-2e77a3e7af-lite.chunk.js.LICENSE.txt} +0 -0
  85. /package/dist/scripts/{775-b6cb8f1808-lite.chunk.js.LICENSE.txt → 775-d6b0a7afbd-lite.chunk.js.LICENSE.txt} +0 -0
  86. /package/dist/scripts/{8489-7779fd40b3-lite.chunk.js.LICENSE.txt → 8489-88ab052e8c-lite.chunk.js.LICENSE.txt} +0 -0
  87. /package/dist/scripts/{8935-2bb61f918c-lite.chunk.js.LICENSE.txt → 8935-38d780c423-lite.chunk.js.LICENSE.txt} +0 -0
  88. /package/dist/scripts/{9230-77ff8b16ac-lite.chunk.js.LICENSE.txt → 9230-1ffbf1807e-lite.chunk.js.LICENSE.txt} +0 -0
  89. /package/dist/scripts/{9719-0e59bf30a5-lite.chunk.js.LICENSE.txt → 9719-28c14a0783-lite.chunk.js.LICENSE.txt} +0 -0
  90. /package/dist/scripts/{bundle-fb8200eefd.min.js.LICENSE.txt → bundle-b25c09d3e8.min.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4591-1e137b9a3f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/check-mark-button/check-mark-button.scss","file:///app/packages/libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","file:///app/packages/libs/shared/src/components/mask/mask.scss","file:///app/packages/libs/shared/src/components/mask/Mask.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/thumbnail-text.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","file:///app/packages/libs/shared/src/components/favourite-button/favourite-button.scss","file:///app/packages/libs/shared/src/components/favourite-button/FavouriteButton.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/video-thumbnail-bottom-bar.scss","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/lite-owner-avatar/lite-owner-avatar.scss","file:///app/packages/libs/shared/src/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/plugin-hover.scss","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/PluginHover.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/thumbnail-padlock.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/thumbnail-company-logo.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","file:///app/packages/libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/expandable-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/video-thumbnail-badges.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/popout-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/video-thumbnail-actions.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/static/static-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/type-badge/type-badge.scss","file:///app/packages/libs/shared/src/components/type-badge/TypeBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","file:///app/packages/libs/shared/src/components/video-guidance/tag/video-guidance-tag.scss","file:///app/packages/libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/classroom-guide/ClassroomGuideTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-guidance/VideoItemGuidance.tsx","file:///app/packages/libs/shared/src/components/video-title/video-title.scss","file:///app/packages/libs/shared/src/components/video-title/VideoTitle.tsx","file:///app/packages/libs/shared/src/context/player-context/components/global-player-consumer.scss","file:///app/packages/libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","file:///app/packages/libs/shared/src/enums/ThumbnailTextPosition.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"unchecked\":\"bup9I\",\"outline\":\"ealw_\",\"checked\":\"A1Ov0\",\"checkMark\":\"c14lI\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svgName={cvSvgLibrary.Tick}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"qpc7L\",\"small\":\"L8Oxs\",\"video\":\"b8kJW\",\"playlist\":\"eo2p2\",\"maskContainer\":\"lpwag\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './mask.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvgType(type: MaskType): string {\n if (type === MaskType.Video)\n return cvSvgLibrary.PlayCircle;\n\n return '';\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svgType = getSvgType(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svgName={svgType} className={ typeClass } />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"r70GR\",\"titleContainer\":\"rULXI\",\"seriesTitleBox\":\"h9k1p\",\"badgeContainer\":\"QaDDX\",\"audienceBadge\":\"hvsne\"};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'subTextAppLink'|'yearGroups'|'subTextType'|'showNewVideoIndicator'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink, subTextAppLink, showNewVideoIndicator } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.subTextType}\n className={`text-truncate ${styles.seriesTitleBox}`}\n video={video}\n appLink={subTextAppLink}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n <AppLink className='text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n <VideoTitle\n video={props.video}\n yearGroups={props.yearGroups}\n lockSize='sm'\n showNewVideoIndicator={showNewVideoIndicator}\n />\n </AppLink>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"favourited\":\"t0svX\",\"favouriteButton\":\"CFRo3\",\"heart\":\"ZMMQu\",\"heartOutline\":\"truFo\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n preventFocus?: boolean;\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} tabIndex={props.preventFocus ? -1 : undefined}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svgName={cvSvgLibrary.Heart}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"bottomBar\":\"YnXtZ\"};","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"std\":\"ct8Ht\",\"sm\":\"dvCes\",\"stdIcon\":\"iy0pu\",\"smIcon\":\"Z_mZf\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './lite-owner-avatar.scss';\n\ninterface LiteOwnerAvatarProps {\n video: VideoTypes;\n imageCdnUrl: string;\n size?: VideoItemSize;\n}\n\nexport function LiteOwnerAvatar(props: LiteOwnerAvatarProps): JSX.Element {\n if (!VideoHelper.isInteractive(props.video) && !VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._liteOwner && !props.video._isClickViewCurated?.value)\n return <></>;\n\n if (props.video._isClickViewCurated?.value) {\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1 rounded-circle position-relative bg-white`}>\n <SvgContainer2 className={`me-1 ${props.size === 'sm' ? styles.smIcon : styles.stdIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n );\n }\n\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.video._liteOwner.name, props.video._liteOwner.surname)}\n imageUrl={props.video._liteOwner.avatar?.url}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pluginHover\":\"h4RQa\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './plugin-hover.scss';\n\nconst namespace = 'shared.pluginHover';\n\ninterface PluginHoverProps {\n isPlugin: boolean;\n className?: string;\n onClick?: () => void;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function PluginHover(props: PluginHoverProps): JSX.Element {\n if (!props.isPlugin)\n return <></>;\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n onClick={props.onClick}\n className={`\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ${styles.pluginHover}\n ${props.className ? props.className : ''}\n `}\n >\n <span className='position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white'>\n <Text namespace={namespace} phrase='embed' />\n </span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"padlock\":\"w4cg8\",\"sm\":\"JpIYd\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './thumbnail-padlock.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={svgSize} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"OA9ft\",\"sm\":\"fyo2J\"};","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = ImageHelper.createUrl(company?.logo?.url ?? props.companyLogoFallbackUrl, { size: ImageSize.Small });\n \n if (!url)\n return <></>;\n\n return (\n <div>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''}`}\n style={{\n backgroundImage: `url(${url})`\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} inContainer />;\n\n if (VideoHelper.isInteractive(props.video))\n return (\n <TypeBadge\n typeId={MasterType.Interactive}\n status={props.video.status}\n size={props.size}\n inContainer\n />\n );\n\n return <></>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"qu3A3\",\"topLeftContainer\":\"gjhMe\",\"topRightContainer\":\"XAfZW\",\"overlay\":\"NTrtm\",\"downScale\":\"puKcM\",\"title\":\"_6FukN\",\"gradient\":\"rXzR8\",\"playIcon\":\"dndOA\",\"videoProgress\":\"yhWf4\",\"badgeContainer\":\"AtgmC\",\"clipProgress\":\"E2egN\",\"interactiveProgress\":\"WycwR\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const {\n video, appLink, imageOptions, setFavourite, canFavourite,\n preload, hovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, hovering);\n const isVideo = VideoHelper.isVideo(video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && hoverToPlay;\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n <PluginHover\n isPlugin={props.isPlugin}\n className='rounded-3'\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n {/* top right */}\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n\n <VideoTypeBadge video={video} />\n\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={styles.gradient}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {!!(hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svgName={cvSvgLibrary.PlayCircle} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.subTextType}\n className='text-shadow clamp-1'\n video={video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={video} />\n\n {hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svgName={cvSvgLibrary.CloseCaptionBadge} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"badgeContainer\":\"fy9Un\",\"sm\":\"Rb0TL\"};","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"wHY80\",\"details\":\"vMaXP\",\"isHovering\":\"tR1jA\",\"videoGuidanceTags\":\"KJrT1\",\"responsiveGuidance\":\"OixHb\",\"dropdown\":\"oZXV7\",\"show\":\"EiQ04\",\"topRightContainer\":\"FAuzc\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\n\nimport styles from './popout-video-thumbnail.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload, setFavourite, canFavourite,\n isHovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <div className={className}>\n {showFavouriteButton && (\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n preventFocus\n />\n </div>\n )}\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n </div>\n )}\n\n <div className='position-relative'>\n <PluginHover\n isPlugin={props.isPlugin}\n className={isHovering ? 'rounded-top-3' : 'rounded-3'}\n onClick={() => props.cleanPortalNode?.()}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus={!props.hideTitle}\n appLinkClassName='position-absolute top-0 start-0 h-100 w-100'\n imageClassName={isHovering ? 'rounded-top-3' : 'rounded-3'}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n <div className='p-absolute w-100 h-100 text-white'>\n\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n \n <VideoTypeBadge video={video} />\n \n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <VideoItemGuidance\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n responsiveClassName={styles.responsiveGuidance}\n containerClassName={`d-flex justify-content-start align-items-center pt-2`}\n />\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"efxnE\",\"cvIcon\":\"OJ_ZQ\",\"action\":\"vWvGn\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n preventFocus\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"titleOverlay\":\"krg9f\",\"clip\":\"MPRU6\",\"large\":\"g5_ww\",\"interactive\":\"Zzo3e\",\"titleBelow\":\"tZjPt\",\"overlayContainer\":\"EElm1\",\"topLeftContainer\":\"hrw3I\",\"gradient\":\"LS_EH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { StaticVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './static-video-thumbnail.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\nfunction ThumbnailText(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, subTextAppLink, textPosition, appLink } = props;\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={props.subTextType}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={!textIsOverlayed ? subTextAppLink : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate)\n ? (\n <span className={`h6 text-reset clamp-1`}>\n {video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={appLink}>\n {video.name}\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, appLink, textPosition, imageOptions, setFavourite, preload, hoverToPlay } = props;\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isHoveringIntentionally && canConsume && hoverToPlay;\n\n function canFavourite(): boolean {\n return props.canFavourite?.(props.video) && FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showMask = !!appLink && !props.hideMask && canNavigate;\n const tooltip = VideoHelper.getPrivacyReasoning(props.video, props.showSignIn);\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n <PluginHover\n isPlugin={props.isPlugin}\n className={props.size === 'sm' ? 'rounded' : 'rounded-3'}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={props.checkMarkStatus}\n setCheckMarkStatus={props.setCheckMarkStatus}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n onClick={canNavigate ? props.onClick : undefined}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {/* overlay */}\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n \n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n \n <VideoTypeBadge video={video} size={props.size} />\n\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n size={props.size}\n />\n </div>\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n \n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, CanFavouriteFunc, FavouriteFunc, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n appLink: Core.AppLink;\n onClick?: () => void;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n preload?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n hoverToPlay?: boolean;\n companyLogoFallbackUrl?: string;\n imageCdnUrl?: string;\n isPlugin: boolean;\n showOwner?: boolean;\n showNewVideoIndicator?: boolean;\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n subTextType?: VideoSubTextType;\n subTextAppLink?: Core.AppLink;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'expandable';\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'popout';\n hideDuration: boolean;\n extraClasses?: string;\n audience: Audience;\n imageCdnUrl: string;\n hideRating?: boolean;\n yearGroups: YearGroup[];\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n}\n\ninterface BaseStaticVideoThumbnailProps extends BaseVideoThumbnailProps {\n textPosition: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n showSignIn?: boolean;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n}\n\ninterface PureStaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps {\n type: 'static';\n}\n\n/**\n * Allows us to have loose types when we only want to display a thumbnail\n * without any of the functionality - Sha\n */\ninterface CosmeticVideoThumbnailProps extends Partial<BaseStaticVideoThumbnailProps> {\n type: 'cosmetic';\n}\n\nexport type StaticVideoThumbnailProps = PureStaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nexport type VideoThumbnailProps = ExpandableVideoThumbnailProps |\n StaticVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} hoverToPlay={false} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"iwBld\",\"draft\":\"QBpxh\",\"badge\":\"KcvGx\",\"svg\":\"gW733\",\"text\":\"QiH5Q\",\"sm\":\"tn2BH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './type-badge.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return cvSvgLibrary.Clip;\n case MasterType.Interactive:\n return cvSvgLibrary.Interactive;\n case MasterType.Resource:\n return cvSvgLibrary.Resources;\n default:\n return '';\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-dark-blue';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n inContainer?: boolean;\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={props.inContainer ? '' : styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svgName={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Lock}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"OjHQZ\",\"icon\":\"SS2zL\",\"disabled\":\"eGiNR\",\"active\":\"kD1xM\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svgName: string;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n theme?: {\n tabLabel?: string;\n container?: string;\n }\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n className={`\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ${props.theme?.container} ${styles.tag} ${props.active ? styles.active : ''}\n `}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return (\n <div\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${props.theme?.container} ${styles.tag} ${styles.disabled}`}\n >\n <VideoGuidanceTag {...props} />\n </div>\n );\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svgName={props.svgName}\n />\n\n <span className={`ps-1 text-nowrap user-select-none ${props.theme?.tabLabel}`}>\n {props.text}\n </span>\n </>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.classroomGuideTag';\n\ninterface ClassroomGuideTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ClassroomGuideTag(props: ClassroomGuideTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n if (!props.video.glance)\n return <></>;\n\n return (\n <VideoGuidanceTag\n theme={{\n container: 'classroom-guide-tag',\n tabLabel: 'classroom-guide-tag-label'\n }}\n svgName={cvSvgLibrary.GraduationCap}\n iconVariant='navy'\n text={LanguageService.getPhrase(namespace, 'classroomGuide')}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n glanceId: props.video.glance?.id,\n totalPointsOfInterest: props.video.pointsOfInterest?.data?.length,\n videoGuidanceType: 'classroom-guide',\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!VideoHelper.showInteractivesGuidance(props.video))\n return <></>;\n \n const interactiveCount = !VideoHelper.isInteractive(props.video) && (props.video.interactives?.data.length || 0);\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Interactive}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\nfunction getResourceCount(video: VideoTypes): number {\n if (VideoHelper.isInteractive(video))\n return 0;\n\n return (\n (video.resources?.data.length || 0) +\n (video.links?.data.length || 0)\n );\n}\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!VideoHelper.showResourcesGuidance(props.video))\n return <></>;\n\n const resourceCount = getResourceCount(props.video);\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Resources}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { ClassroomGuideTag } from 'libs/shared/components/video-guidance/classroom-guide/ClassroomGuideTag';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemGuidanceProps {\n video: VideoTypes;\n getVideoAppLink?: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n containerClassName: string;\n responsiveClassName?: string;\n}\n\nexport function VideoItemGuidance(props: VideoItemGuidanceProps): JSX.Element {\n const showingResourcesAndInteractives = (\n VideoHelper.showInteractivesGuidance(props.video) &&\n VideoHelper.showResourcesGuidance(props.video)\n );\n\n return (\n <div className={`${props.containerClassName} ${showingResourcesAndInteractives ? props.responsiveClassName : ''}`}>\n <ClassroomGuideTag\n appLink={props.getClassroomGuideAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n appLink={props.getResourceGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <InteractivesTag\n appLink={props.getInteractiveGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"VrK4W\",\"smallText\":\"OScyH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './video-title.scss';\n\nconst namespace = 'shared.videoTitle';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TODAY = new Date();\n\ninterface VideoTitleProps {\n video: Video;\n yearGroups: YearGroup[];\n showNewVideoIndicator: boolean;\n title?: string;\n lockSize?: 'sm' | 'md';\n textClassName?: 'h6' | 'h5' | 'h4';\n headingClassName?: string;\n}\n\nfunction isDateInCurrentMonth(target: string) {\n return DateHelper.isSame(target, TODAY, 'year') && DateHelper.isSame(target, TODAY, 'month');\n}\n\nexport function VideoTitle(props: VideoTitleProps): JSX.Element {\n const dateRelease = props.video.dateReleased;\n const isCurrentMonth = dateRelease && isDateInCurrentMonth(dateRelease);\n\n const textClassName = props.textClassName || 'h6';\n\n const shouldShowNewVideoIndicator = props.showNewVideoIndicator\n && isCurrentMonth\n && props.video._isClickViewCurated?.value;\n\n return (\n <>\n <Tooltip title={`${shouldShowNewVideoIndicator ? getPhrase('newVideo') : ''}`} spanHack spanHackClassName='d-inline-block' >\n {shouldShowNewVideoIndicator && (\n <span className={`rounded-circle bg-green d-inline-block me-1 ${styles.dot} ${textClassName === 'h6' ? styles.smallText : ''}`} />\n )}\n </Tooltip>\n <h2 className={`${textClassName} ${props.headingClassName || ''} d-inline`}>{props.title || props.video.name}</h2>\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size={props.lockSize}\n />\n </>\n );\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"hoverContainer\":\"TzWQw\",\"hovering\":\"gdTcW\"};","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\n\nimport styles from './global-player-consumer.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n\n if (playerContext.mode === 'default' || props.location === 'play-page')\n return <OutPortal node={playerContext.portalNode} />;\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}"],"names":["AudienceLabel","props","audience","className","border","name","BadgeListContainer","children","CheckMarkStatus","CheckMarkButton","status","Complete","isComplete","setIsComplete","style","None","FunctionHelper","setStatus","DivButton","onClick","shouldComplete","newStatus","Incomplete","disabled","SvgContainer","svgName","defaultProps","MaskType","Mask","type","size","typeClass","Video","Playlist","getClassByType","svgType","getSvgType","defaults","ThumbnailText","video","appLink","subTextAppLink","showNewVideoIndicator","canNavigate","VideoHelper","VideoSubText","subTextType","analyticsOptions","location","AppLink","VideoTitle","yearGroups","lockSize","getPhrase","LanguageService","FavouriteButton","alerts","initialState","isFavourite","setIsFavourite","setFavourite","canFavourite","shouldFavourite","error","analyticsData","tabIndex","preventFocus","undefined","VideoWatchProgressBar","progress","watchPercentage","duration","width","VideoThumbnailBottomBar","LiteOwnerAvatar","_liteOwner","_isClickViewCurated","value","SvgContainer2","Avatar","imageCdnUrl","initials","UserHelper","surname","imageUrl","avatar","url","PluginHover","isPlugin","Text","namespace","phrase","ThumbnailPadlock","svgSize","S","ThumbnailCompanyLogo","companyLogoFallbackUrl","company","productionCompanies","data","ImageHelper","logo","Tooltip","title","spanHack","backgroundImage","VideoTypeBadge","TypeBadge","typeId","MasterType","inContainer","getTitleClass","hovering","ExpandableVideoThumbnail","imageOptions","preload","hoverToPlay","canConsume","appLinkParams","ObjectHelper","params","eventAnalyticsOptions","entity","showFavouriteButton","isVideo","rating","delay","thumbnailHoverRef","showThumbnailPreviewVideo","id","actionType","descriptor","spanHackClassName","ref","showOwner","BaseImage","imageType","alt","series","ImageFallback","Badge","hasSubtitle","hasInteractives","GlobalPlayerConsumer","key","objectId","objectTypeId","mode","context","contextId","moviesAndTv","mtv","VideoThumbnailBadges","showAudience","showRating","hideRating","hideDuration","newDurationStyle","PopoutVideo","isHovering","cleanPortalNode","extraClasses","hideTitle","appLinkClassName","imageClassName","showVideoGuidance","VideoItemGuidance","getClassroomGuideAppLink","getResourceGuidanceAppLink","getInteractiveGuidanceAppLink","responsiveClassName","containerClassName","PopoutVideoThumbnail","HoverToPortalContainer","hoverableComponent","componentProps","fixedHoverWidth","minHoverWidth","VideoThumbnailActions","setCheckMarkStatus","hasActions","checkMarkStatus","textPosition","textIsOverlayed","ThumbnailTextPosition","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","showMask","hideMask","tooltip","showSignIn","r","current","getThumbnailClass","VideoThumbnail","getIcon","getColourClass","CurationStatus","baseClasses","getText","RestrictionPadlock","_restrictions","placement","tooltipPlacement","ContainerWrapper","appLinkAnalyticsData","appLinkAnalyticsOptions","theme","container","active","VideoGuidanceTag","iconVariant","tabLabel","text","ClassroomGuideTag","glance","glanceId","totalPointsOfInterest","pointsOfInterest","length","videoGuidanceType","InteractivesTag","interactiveCount","interactives","smartCount","videoGuidanceTotalItems","ResourcesTag","resourceCount","resources","links","showingResourcesAndInteractives","TODAY","Date","target","dateRelease","dateReleased","isCurrentMonth","DateHelper","textClassName","shouldShowNewVideoIndicator","headingClassName","playerContext","useInitialize","hasProvider","isOnPlayPage","node","portalNode","shouldShow","started","rounding"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5157],{97535:(e,t,n)=>{n.r(t),n.d(t,{SignUpView:()=>S});var r=n(32735),a=n(81886),l=n(20354),i=n(70624),c=n(65858),o=n(97947),u=n(83529),s=n(84789),m=n(60735),f=n(39151),g=n(31949),d=n(48015),h=n(83421),p=n(14070),b=n(97291);const v={left:"CJBwn",imageContainer:"r6On_",imagePosition:"ebaoC",image:"XQMl0"};function y(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 E(e){var t,n,a=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,c=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}(t,n)||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.")}()),l=a[0],i=a[1];return r.useEffect((function(){if(e.imageUrl){var t=new Image;return t.onload=function(){return i(!0)},t.src=e.imageUrl,function(){return t.onload=null}}}),[]),r.createElement("div",{className:v.left},l&&r.createElement(r.Fragment,null,r.createElement("div",{className:v.imageContainer},r.createElement("div",{className:v.imagePosition},r.createElement("img",{className:v.image,src:e.imageUrl,alt:e.title})))))}var C=n(48456),U=n(63643);function S(e){var t,n=(0,i.G)(m.D.BrazeClient),v=l.a.useBasicFetch(g.N.currentUser()),y=l.a.useBasicFetch(f.L.config()),S=(0,d.M)(),k=(0,U.c)();return r.useEffect((function(){v.hasCompleted&&v.data.isAuthenticated&&a.Q.C$.trigger({action:p.e.Dashboard.HOME,application:b.O.DASHBOARD})}),[v]),v.hasCompleted&&!(null===(t=v.data)||void 0===t?void 0:t.isAuthenticated)&&y.hasCompleted&&S&&k?r.createElement(h.Z,{leftComponent:function(){return r.createElement(E,{title:"Sign Up",imageUrl:"/images/sign-up/fullscreen-dashboard.png"})}},r.createElement(o.h,{brazeClient:n.clientInstance,type:u.c.FullPage,initialValues:{email:e.email},location:c.LZ.SignUpPage,googleMapsApiKey:y.data.googleMapsApiKey,geoLocation:S,imageUrls:C.v,ajaxUrls:k,productName:s.X.Lite,pageAppLinkString:e.pageAppLinkString,getSignInUrl:function(e){return a.Q.C$.getHref({application:b.O.DEFAULT,action:p.e.Default.LOG_IN,params:e})}})):r.createElement(r.Fragment,null)}},83421:(e,t,n)=>{n.d(t,{H:()=>m,Z:()=>g});var r=n(32735),a=n(54610),l=n(4594),i=n(67453),c=n(99742);const o={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function u(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,l,i,c=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return c}}(e,t)||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}}(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 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 m=[{bgUrl:c.W.LaunchPad.BG_1},{bgUrl:c.W.LaunchPad.BG_2},{bgUrl:c.W.LaunchPad.BG_3},{bgUrl:c.W.LaunchPad.BG_4},{bgUrl:c.W.LaunchPad.BG_5}];function f(e){switch(e){case l.E.Video:case l.E.Interactive:case l.E.Clip:return o.thumbnail;case l.E.Subject:case l.E.Playlist:return o.cover;case l.E.Series:return o.tallposter;default:return""}}function g(e){var t,n=u(r.useState(!1),2),l=n[0],c=n[1],s=u(r.useState(""),2),g=s[0],d=s[1],h=u(r.useState(""),2),p=h[0],b=h[1],v=i.j.createUrl(e.imageUrl,{size:a.h2.Large}),y=m;return r.useEffect((function(){if(!v&&y&&0!==y.length){var e,t=(e=y)[Math.floor(Math.random()*e.length)];t.bgUrl&&d(t.bgUrl),t.textUrl&&b(t.textUrl)}}),[]),r.useEffect((function(){if(v){var e=new Image;return e.onload=function(){return c(!0)},e.src=v,function(){return e.onload=null}}}),[]),r.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():r.createElement("div",{className:"".concat(o.left," bg-light"),style:{backgroundImage:"url('".concat(g,"')")}},p&&r.createElement("div",{className:o.leftTextImage,style:{backgroundImage:"url('".concat(p,"')")}}),l&&r.createElement(r.Fragment,null,r.createElement("div",{className:o.blur,style:{backgroundImage:"url('".concat(v,"')")}}),r.createElement("div",{className:"".concat(o.imageContainer," ").concat(f(e.objectType))},r.createElement("div",{className:o.imagePosition},r.createElement("img",{className:o.image,src:v,alt:e.title}))))),r.createElement("div",{className:"".concat(o.right," bg-white d-flex flex-column")},r.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(o.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?r.createElement(r.Fragment,{key:t}):r.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
2
- //# sourceMappingURL=5157-b1d38e123c-lite.chunk.js.map
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[823],{53364:(e,t,n)=>{n.d(t,{b:()=>s});var a=n(32735),r=n(86664);const i={idpButton:"FDoJA",idpImage:"bjN_j",divider:"FfyN0"};var o=[{name:"ClassLink",logoUrl:"https://img.clickviewapp.com/v2/logos/ZA2ew5",url:"/login?idp=classlink"},{name:"Clever",logoUrl:"https://img.clickviewapp.com/v2/logos/LqlKgd",url:"/login?idp=clever"},{name:"Google",logoUrl:"https://img.clickviewapp.com/v2/logos/l5x0jL",url:"/login?idp=google"},{name:"Microsoft",logoUrl:"https://img.clickviewapp.com/v2/logos/xAxGPP",url:"/login?idp=microsoft"}],l=[];function c(e){var t=e.idp,n=e.last;return a.createElement("button",{className:"btn btn-lg btn-outline-dark w-100 ".concat(n?"":"mb-3"," ").concat(i.idpButton),onClick:function(){if(e.onClick)e.onClick(t);else{var n=window.location.pathname+window.location.search;window.location.href=t.url+"&redirectUrl="+encodeURIComponent(n)+"&attribution="+encodeURIComponent(e.attribution)}}},t.logoUrl&&a.createElement("img",{src:t.logoUrl,className:i.idpImage}),"Continue with ",t.name)}function s(e){var t,n,s="idps"in e?e.idps:null;return!(null==s?void 0:s.length)&&"geoLocation"in e&&(s=[].concat(l),r.I.isCountryCodeUS(null===(t=e.geoLocation)||void 0===t?void 0:t.countryCode)&&(n=s).unshift.apply(n,o)),s.length?a.createElement("div",{className:"".concat(e.className?e.className:"")},a.createElement("div",{className:"my-3 border-bottom position-relative ".concat(i.divider)}),s.map((function(t,n){return a.createElement(c,{key:n,idp:t,onClick:"onClick"in e?e.onClick:null,attribution:"attribution"in e?e.attribution:null})}))):a.createElement(a.Fragment,null)}},48015:(e,t,n)=>{n.d(t,{M:()=>l});var a=n(39202),r=n(20354),i=n(39151),o={countryCode:"us",isFallback:!0};function l(){var e,t,n=r.a.useBasicFetch(i.L.geoLocation()),l=null===(t=null===(e=a.Ab.GetQuery())||void 0===e?void 0:e.countryCode)||void 0===t?void 0:t.toLowerCase();return l?{countryCode:l}:n.hasCompleted&&!n.data?o:n.data}},19623:(e,t,n)=>{n.d(t,{P:()=>g});var a=n(32735),r=n(81886),i=n(23481),o=n(53364),l=n(98027),c=n(36848),s=n(83345),u=n(14070),m=n(97291),d="launchpad.signInButtons",p=i.T.encloseNamespace(d);function g(e){a.useEffect((function(){e.skipPrompt&&r.Q.Ab.PageLoad(r.Q.C$.getHref(t))}),[]);var t=function(){var t=r.Q.Ab.GetQuery(),n={};if(e.customerId&&(n.customerId=e.customerId,delete t.customerId),e.skipPrompt&&delete t.skipPrompt,e.redirectUrl)n.redirectUrl=e.redirectUrl;else{var a=r.Q.Ab.SerializeQueryParams(t);n.redirectUrl=r.Q.Ab.GetCurrentPath()+(a?"?"+a:"")}return e.showSignUp&&(n.showSignUp=!0),{application:m.O.DEFAULT,action:u.e.Default.LOG_IN,params:n}}();return a.createElement(a.Fragment,null,a.createElement(c.F,{className:"btn btn-lg btn-dark w-100 mt-4",appLink:t},a.createElement(s.x,{namespace:d,phrase:e.pageAppLinkString?"signInToWatch":"signIn"})),e.showJoinCode?a.createElement(c.F,{className:"btn btn-link info-link btn-lg w-100 mt-2",appLink:{application:m.O.LAUNCHPAD,action:u.e.Launchpad.JOIN_CLASSROOM_PROMPT}},p("enterCode")):a.createElement(a.Fragment,null,a.createElement(c.F,{className:"btn btn-lg btn-outline-dark w-100 mt-3",appLink:{application:m.O.LAUNCHPAD,action:u.e.SignUp.SIGN_UP,params:{pageAppLinkString:e.pageAppLinkString}}},p("signUp")),a.createElement(o.b,{geoLocation:e.geoLocation,attribution:(0,l.w)()})))}},30823:(e,t,n)=>{n.r(t),n.d(t,{LoginLandingView:()=>E});var a=n(32735),r=n(23481),i=n(20354),o=n(65858),l=n(2786),c=n(11882),s=n(4594),u=n(43012),m=n(20768),d=n(1575),p=n(48015),g=n(31908),f=n(83421),v=n(7179),b=n(19623),h=n(408);const y={logo:"Je2Pi",formContainer:"MfLVl"};var k=r.T.encloseNamespace("classrooms.loginLanding");function E(e){var t,n,r,E,C,w,L=(0,p.M)(),U=(0,v.P)({id:e.objectId,app:(0,v.e)(e.objectType)},o.LZ.Launchpad),A=U.deepLink,I=U.showDeepLink,N=U.onClickDeepLink,S=(0,h.B)().trialAppLinkString,P=(C=e.objectId,w=e.objectType,i.a.useBasicFetch(function(){switch(w){case s.E.Video:return d.R.publicVideo(C);case s.E.Interactive:return m.b.publicInteractiveMetadata(C);case s.E.Clip:return u.e.publicClip(C);default:return null}}()));return e.skipPrompt||P.isFetching?a.createElement(a.Fragment,null):a.createElement(f.Z,{title:null===(t=P.data)||void 0===t?void 0:t.name,imageUrl:null===(n=g.M.getThumbnail(P.data))||void 0===n?void 0:n.url,objectType:e.objectType,links:[{text:k("openInApp"),url:A,hide:!I,onClick:N}]},a.createElement("div",{className:"".concat(y.formContainer," m-auto")},a.createElement("div",{className:"".concat(y.logo," mb-4 mx-auto")},a.createElement(l.$S,null)),!!(null===(r=P.data)||void 0===r?void 0:r.name)&&a.createElement("h1",{className:"h3"},g.M.isVideo(P.data)&&a.createElement(c.$,{type:"series",video:P.data,analyticsOptions:{},size:"sm"}),P.data.name),(null===(E=P.data)||void 0===E?void 0:E.description)&&a.createElement("p",{className:"mb-0 clamp-3"},P.data.description),a.createElement(b.P,{geoLocation:L,customerId:e.customerId,skipPrompt:e.skipPrompt,showJoinCode:e.showJoinCode,redirectUrl:null,pageAppLinkString:S,showSignUp:e.showSignUp})))}},408:(e,t,n)=>{n.d(t,{B:()=>o});var a=n(2948),r=n(86702);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function o(){var e,t,n=(e=(0,a.D)(r.y.OPEN_IN_APP_DATA),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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.")}())[0];return{trialAppLinkString:function(){if(n&&["videos","clips","series","playlists","topics","interactives"].includes(n.app)){var e=n.id;switch(n.app){case"videos":return"video:".concat(e);case"playlists":return"playlist:".concat(e);case"series":return"series:".concat(e);case"topics":return"topic:".concat(e);case"interactives":return"interactive:".concat(e);case"clips":return"clip:".concat(e)}}}()}}},83421:(e,t,n)=>{n.d(t,{H:()=>m,Z:()=>p});var a=n(32735),r=n(54610),i=n(4594),o=n(67453),l=n(99742);const c={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(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)?u(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 u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var m=[{bgUrl:l.W.LaunchPad.BG_1},{bgUrl:l.W.LaunchPad.BG_2},{bgUrl:l.W.LaunchPad.BG_3},{bgUrl:l.W.LaunchPad.BG_4},{bgUrl:l.W.LaunchPad.BG_5}];function d(e){switch(e){case i.E.Video:case i.E.Interactive:case i.E.Clip:return c.thumbnail;case i.E.Subject:case i.E.Playlist:return c.cover;case i.E.Series:return c.tallposter;default:return""}}function p(e){var t,n=s(a.useState(!1),2),i=n[0],l=n[1],u=s(a.useState(""),2),p=u[0],g=u[1],f=s(a.useState(""),2),v=f[0],b=f[1],h=o.j.createUrl(e.imageUrl,{size:r.h2.Large}),y=m;return a.useEffect((function(){if(!h&&y&&0!==y.length){var e,t=(e=y)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl),t.textUrl&&b(t.textUrl)}}),[]),a.useEffect((function(){if(h){var e=new Image;return e.onload=function(){return l(!0)},e.src=h,function(){return e.onload=null}}}),[]),a.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():a.createElement("div",{className:"".concat(c.left," bg-light"),style:{backgroundImage:"url('".concat(p,"')")}},v&&a.createElement("div",{className:c.leftTextImage,style:{backgroundImage:"url('".concat(v,"')")}}),i&&a.createElement(a.Fragment,null,a.createElement("div",{className:c.blur,style:{backgroundImage:"url('".concat(h,"')")}}),a.createElement("div",{className:"".concat(c.imageContainer," ").concat(d(e.objectType))},a.createElement("div",{className:c.imagePosition},a.createElement("img",{className:c.image,src:h,alt:e.title}))))),a.createElement("div",{className:"".concat(c.right," bg-white d-flex flex-column")},a.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(c.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?a.createElement(a.Fragment,{key:t}):a.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
2
- //# sourceMappingURL=823-697bd66d4d-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/823-697bd66d4d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/libs/shared/src/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/login-landing.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/LoginLandingView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"idpButton\":\"FDoJA\",\"idpImage\":\"bjN_j\",\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport styles from './global-idps.scss';\n\nconst US_ONLY_IDPS: IdentityProvider[] = [\n {\n name: 'ClassLink',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5',\n url: '/login?idp=classlink'\n },\n {\n name: 'Clever',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd',\n url: '/login?idp=clever'\n },\n {\n name: 'Google',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL',\n url: '/login?idp=google'\n },\n {\n name: 'Microsoft',\n logoUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP',\n url: '/login?idp=microsoft'\n }\n];\n\nconst GLOBAL_IDPS: IdentityProvider[] = [];\n\ninterface GlobalIdpButtonProps {\n idp: IdentityProvider;\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n onClick?: (idp: IdentityProvider) => void;\n attribution: string;\n}\n\nfunction GlobalIdpButton(props: GlobalIdpButtonProps): React.ReactElement {\n const {\n idp,\n last\n } = props;\n\n function onClick(): void {\n if (props.onClick) {\n props.onClick(idp);\n return;\n }\n\n const currentPathAndQuery = window.location.pathname + window.location.search;\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n window.location.href = idp.url\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery)\n + '&attribution=' + encodeURIComponent(props.attribution);\n }\n\n return (\n <button\n className={`btn btn-lg btn-outline-dark w-100 ${last ? '' : 'mb-3'} ${styles.idpButton}`}\n onClick={onClick}\n >\n {idp.logoUrl && <img src={idp.logoUrl} className={styles.idpImage} />}\n Continue with {idp.name}\n </button>\n );\n}\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n geoLocation: GeoLocation;\n className?: string;\n attribution: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n let idps = 'idps' in props ? props.idps : null;\n\n if (!idps?.length && 'geoLocation' in props) {\n idps = [...GLOBAL_IDPS];\n\n if (LocalityHelper.isCountryCodeUS(props.geoLocation?.countryCode))\n idps.unshift(...US_ONLY_IDPS);\n }\n\n if (!idps.length)\n return <></>;\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {idps.map((p, i) => (\n <GlobalIdpButton\n key={i}\n idp={p}\n onClick={'onClick' in props ? props.onClick : null}\n attribution={'attribution' in props ? props.attribution : null}\n />\n ))}\n </div>\n );\n}","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n \n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { getLiteAttributionForAuth } from 'libs/shared/apps/sign-up/utils/getLiteAttributionForAuth';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface SignInButtonsProps {\n geoLocation: GeoLocation;\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.LOG_IN,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps geoLocation={props.geoLocation} attribution={getLiteAttributionForAuth()} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Je2Pi\",\"formContainer\":\"MfLVl\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './login-landing.scss';\n\nconst namespace = 'classrooms.loginLanding';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useFetchObject(objectId: string, objectType: MasterType): Flight.Response<VideoTypes> {\n function getRequest(): Flight.Request {\n switch (objectType) {\n case MasterType.Video:\n return VideoRequests.publicVideo(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(objectId);\n case MasterType.Clip:\n return ClipRequests.publicClip(objectId);\n default:\n return null;\n }\n }\n\n return Flight.useBasicFetch(getRequest());\n}\n\ninterface LoginLandingProps {\n skipPrompt: boolean;\n showJoinCode: boolean;\n customerId: string;\n showSignUp: boolean;\n\n objectType?: MasterType;\n objectId?: string;\n}\n\nexport function LoginLandingView(props: LoginLandingProps): React.ReactElement {\n function getInitialDeepLink(): DeepLinkViewModel {\n return {\n id: props.objectId,\n app: mapMasterTypeToDeepLinkApp(props.objectType)\n };\n }\n\n const geoLocation = useGeoLocation();\n\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(), LocationContext.Launchpad);\n\n const { trialAppLinkString } = useTrialAppLink();\n\n const obj = useFetchObject(props.objectId, props.objectType);\n\n if (props.skipPrompt || obj.isFetching)\n return <></>;\n\n return (\n <Launchpad\n title={obj.data?.name}\n imageUrl={VideoHelper.getThumbnail(obj.data)?.url}\n objectType={props.objectType}\n links={[{\n text: getPhrase('openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!obj.data?.name &&\n <h1 className='h3'>\n {VideoHelper.isVideo(obj.data) &&\n <VideoSubText type='series' video={obj.data} analyticsOptions={{}} size='sm' />}\n {obj.data.name}\n </h1>\n }\n {obj.data?.description &&\n <p className='mb-0 clamp-3'>{obj.data.description}</p>\n }\n\n <SignInButtons\n geoLocation={geoLocation}\n customerId={props.customerId}\n skipPrompt={props.skipPrompt}\n showJoinCode={props.showJoinCode}\n redirectUrl={null}\n pageAppLinkString={trialAppLinkString}\n showSignUp={props.showSignUp}\n />\n </div>\n </Launchpad>\n );\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nexport const LAUNCHPAD_FALLBACK_IMAGES = [\n {\n bgUrl: ImageUrls.LaunchPad.BG_1\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_2\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_3\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_4\n },\n {\n bgUrl: ImageUrls.LaunchPad.BG_5\n }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n {\n bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png'\n },\n {\n bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png'\n }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n textUrl?: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n const [ textImage, setTextImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = LAUNCHPAD_FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n\n if (image.textUrl) {\n setTextImage(image.textUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div className={`${styles.left} bg-light`} style={{ backgroundImage: `url('${image}')` }}>\n { textImage && (\n <div className={styles.leftTextImage} style={{ backgroundImage: `url('${textImage}')` }} />\n )}\n \n {showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["US_ONLY_IDPS","name","logoUrl","url","GLOBAL_IDPS","GlobalIdpButton","props","idp","last","className","onClick","currentPathAndQuery","window","location","pathname","search","href","encodeURIComponent","attribution","src","GlobalIdps","idps","length","LocalityHelper","geoLocation","countryCode","unshift","map","p","i","key","FALLBACK_COUNTRY","isFallback","useGeoLocation","toLowerCase","hasCompleted","data","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","params","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","LanguageService","LoginLandingView","objectId","objectType","useDeepLinks","id","app","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","obj","MasterType","VideoRequests","InteractiveRequests","ClipRequests","getRequest","isFetching","Launchpad","title","imageUrl","VideoHelper","links","text","hide","ClickViewLogo","VideoSubText","type","video","analyticsOptions","size","description","viewModel","includes","getTrialAppLinkString","LAUNCHPAD_FALLBACK_IMAGES","bgUrl","ImageUrls","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","textImage","setTextImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","textUrl","img","Image","onload","leftComponent","style","backgroundImage","alt","link","children"],"sourceRoot":""}