@clickview/lite 0.49.0-rc.4 → 0.49.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/1539-10d3590409-lite.chunk.js +2 -0
  4. package/dist/scripts/1539-10d3590409-lite.chunk.js.map +1 -0
  5. package/dist/scripts/194-d192c1e455-lite.chunk.js +2 -0
  6. package/dist/scripts/194-d192c1e455-lite.chunk.js.map +1 -0
  7. package/dist/scripts/2265-b6e093cf57-lite.chunk.js +2 -0
  8. package/dist/scripts/2265-b6e093cf57-lite.chunk.js.map +1 -0
  9. package/dist/scripts/{3042-32e303014a-lite.chunk.js → 3042-f9d67ac0a3-lite.chunk.js} +2 -2
  10. package/dist/scripts/3042-f9d67ac0a3-lite.chunk.js.map +1 -0
  11. package/dist/scripts/32-2abdd88255-lite.chunk.js +2 -0
  12. package/dist/scripts/32-2abdd88255-lite.chunk.js.map +1 -0
  13. package/dist/scripts/{3854-9e1422da99-lite.chunk.js → 3854-49852130b4-lite.chunk.js} +2 -2
  14. package/dist/scripts/3854-49852130b4-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{4060-77244f1012-lite.chunk.js → 4060-4ab06f9f5e-lite.chunk.js} +2 -2
  16. package/dist/scripts/4060-4ab06f9f5e-lite.chunk.js.map +1 -0
  17. package/dist/scripts/4113-81b4e4a350-lite.chunk.js +2 -0
  18. package/dist/scripts/4113-81b4e4a350-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{4291-4ea61b3610-lite.chunk.js → 4291-72cf3ca37d-lite.chunk.js} +2 -2
  20. package/dist/scripts/4291-72cf3ca37d-lite.chunk.js.map +1 -0
  21. package/dist/scripts/{1539-df427c5b98-lite.chunk.js → 6723-b34bba9ac1-lite.chunk.js} +2 -2
  22. package/dist/scripts/6723-b34bba9ac1-lite.chunk.js.map +1 -0
  23. package/dist/scripts/7268-42c8c2cdb5-lite.chunk.js +2 -0
  24. package/dist/scripts/7268-42c8c2cdb5-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{9437-d9c671743c-lite.chunk.js → 9437-2bb4c632ca-lite.chunk.js} +2 -2
  26. package/dist/scripts/9437-2bb4c632ca-lite.chunk.js.map +1 -0
  27. package/dist/scripts/{bundle-0f5cfcd378.min.js → bundle-854cdefb2d.min.js} +3 -3
  28. package/dist/scripts/bundle-854cdefb2d.min.js.map +1 -0
  29. package/package.json +1 -1
  30. package/dist/scripts/1539-df427c5b98-lite.chunk.js.map +0 -1
  31. package/dist/scripts/194-918a27a783-lite.chunk.js +0 -2
  32. package/dist/scripts/194-918a27a783-lite.chunk.js.map +0 -1
  33. package/dist/scripts/2265-0174bf9c8c-lite.chunk.js +0 -2
  34. package/dist/scripts/2265-0174bf9c8c-lite.chunk.js.map +0 -1
  35. package/dist/scripts/3042-32e303014a-lite.chunk.js.map +0 -1
  36. package/dist/scripts/32-cf9b8ba599-lite.chunk.js +0 -2
  37. package/dist/scripts/32-cf9b8ba599-lite.chunk.js.map +0 -1
  38. package/dist/scripts/3854-9e1422da99-lite.chunk.js.map +0 -1
  39. package/dist/scripts/4060-77244f1012-lite.chunk.js.map +0 -1
  40. package/dist/scripts/4113-c75e9be23a-lite.chunk.js +0 -2
  41. package/dist/scripts/4113-c75e9be23a-lite.chunk.js.map +0 -1
  42. package/dist/scripts/4291-4ea61b3610-lite.chunk.js.map +0 -1
  43. package/dist/scripts/6723-ece2125bab-lite.chunk.js +0 -2
  44. package/dist/scripts/6723-ece2125bab-lite.chunk.js.map +0 -1
  45. package/dist/scripts/7268-a8484f7697-lite.chunk.js +0 -2
  46. package/dist/scripts/7268-a8484f7697-lite.chunk.js.map +0 -1
  47. package/dist/scripts/9437-d9c671743c-lite.chunk.js.map +0 -1
  48. package/dist/scripts/bundle-0f5cfcd378.min.js.map +0 -1
  49. /package/dist/scripts/{bundle-0f5cfcd378.min.js.LICENSE.txt → bundle-854cdefb2d.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1539],{49935:(e,a,t)=>{t.d(a,{Oo:()=>u,b2:()=>d});var n=t(32735),i=t(36848),r=t(86764),c=t(3747),l=t(5859),s=t(35223),o=t(83914),m=function(e){var a=e.breadcrumb,t=a.name,r=a.appLink,c=a.active,l=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(c?" active":"")},c?n.createElement("strong",null,t):n.createElement(i.F,{appLink:r},l&&n.createElement(o.x,{svgName:s.vn.ChevronLeft,size:o.S.Small}),n.createElement("span",{className:l?"ms-2":""},t)))},u=function(e){var a=e.breadcrumbs,t=(0,c.a)(r.r.XS),i=null==a?void 0:a.length;return!i||t&&i<2?n.createElement(n.Fragment,null):t?n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(m,{breadcrumb:a[i-2],withBackIcon:!0}))):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},a.map((function(e,a){return n.createElement(m,{key:a,breadcrumb:e})}))))},d=n.memo((function(e){var a=e.numItems,t=void 0===a?3:a;return(0,c.a)(r.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:t}).map((function(e,a){var t=e.width;return n.createElement("li",{key:a,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:t},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},74696:(e,a,t)=>{t.d(a,{S:()=>o});var n=t(32735),i=t(68050),r=t(69111),c=t(9977),l=t(79967);const s={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function o(e){return n.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(a,t){return n.createElement("div",{className:"d-flex",key:t},e.allowBulkActions&&n.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.createElement(m,Object.assign({},e)))})))}function m(e){var a=(0,l.k)(),t="sm"===c.O.getSize(a,"md"),o=e.withReordering&&!a.xs;return n.createElement(i.Z,{className:"".concat(t?"":"py-2"," flex-grow-1")},n.createElement(r.Z,Object.assign({},c.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(t?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),n.createElement(i.Z,null,!!o&&n.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},n.createElement("div",{className:"partial-loading-background ".concat(s.partialDragHandle)})),n.createElement(r.Z,{xs:c.O.getThumbnailColSize(o)},n.createElement("div",{className:"partial-loading-background ".concat(t?"rounded":"rounded-3"," ").concat(s.partialThumbnail)})))),n.createElement(r.Z,Object.assign({},c.O.getDetailsColumns(),{className:t?"pb-2":"px-2"}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(s.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(s.partialDescription)})))}o.defaultProps={numVideos:15}},5859:(e,a,t)=>{function n(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=new Array(a);t<a;t++)n[t]=e[t];return n}t.d(a,{u:()=>r});var i={numItems:5,minWidth:50,maxWidth:100},r={getPartialLoadingItems:function(){var e,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign(Object.assign({},i),a);return(e=Array(t.numItems),function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return n(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*t.maxWidth),t.minWidth),"px")}}))}}},44110:(e,a,t)=>{t.d(a,{i:()=>c});var n=t(20354),i=t(89454),r=t(86698),c=function(){var e=(0,r.y)({redirectOnError:!0}),a=e.activePresentation,t=e.getFallbackPresentation,c=a||t();return n.a.useBasicFetch(!!c&&i.O.presentationAudiences(c.id))}},35014:(e,a,t)=>{t.d(a,{I:()=>m});var n=t(20354),i=t(16714),r=t(12754),c=t(39151),l=t(22902),s=t(15311),o=t(11387);function m(){var e=(0,l.T)(),a=e.hasPermissions,t=e.hasLocalPermissions,m=(0,s.r)().hasProduct,u=n.a.useBasicFetch(c.L.config()),d=m(r.x.Primary);return{canWatchPublicly:function(e){var a,t;return!!e&&!!(null===(t=null===(a=u.data)||void 0===a?void 0:a.allowedPublicVideos)||void 0===t?void 0:t[e])},canViewGlance:a(i.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:d&&a(i.C.ViewVideoInteractives),canViewClips:d&&a(i.C.ViewVideoClips),canViewCurriculumLinks:a(i.C.ViewCurriculums),canUseActions:t(i.E.UseVideoActions),canViewPublicLayout:!t(i.E.WatchVideos)&&o.C.hasRegionPrefix(),canViewResourceItems:t(i.E.ViewVideoResourceItems),canNavigate:d}}},33915:(e,a,t)=>{t.r(a),t.d(a,{VideoInteractivesView:()=>P});var n=t(32735),i=t(81886),r=t(23481),c=t(20354),l=t(28400),s=t(65858),o=t(49935),m=t(13231),u=t(51365),d=t(183),p=t(39151),v=t(1666),b=t(20768),g=t(31949),f=t(1575),h=t(22902),E=t(14070),V=t(97291),w=t(10671),y=t(27638),I=t(44110),k=t(35014),N=t(10741),O=t(22490),x=t(16747),C=t(98620),A=t(82431),L=r.T.encloseNamespace("shared.videoMedia");function P(e){var a,t,r,P=e.videoId,S=(0,y.u)(s.LZ.VideoThumbnail),j=S.setFavourite,F=S.canFavourite,T=(0,w._)({location:w.i.VideoItem}),B=(0,k.I)(),R=c.a.useBasicFetch(g.N.currentUser()),_=c.a.useBasicFetch(R.data.isAuthenticated&&v.h.yearGroups(R.data.customerId)),D=c.a.useBasicFetch(f.R.video(P)),M=c.a.useBasicFetch(B.canViewInteractives&&b.b.videoInteractives(P)),W=null==M?void 0:M.data,Z=(null==W?void 0:W.length)||0,G=c.a.useBasicFetch(p.L.config()),$="".concat(L("interactivesHeading")," (").concat(Z||"",")"),H=(0,I.i)(),Q=(0,h.T)().hasPermissions,U=[{name:null===(a=D.data)||void 0===a?void 0:a.name,appLink:Object.assign(Object.assign({},C.Y.playVideo),{args:[P,l.m.slugify(null===(t=D.data)||void 0===t?void 0:t.name)]})},{name:$,appLink:{application:V.O.VIDEOS,action:E.e.Videos.VIDEO_INTERACTIVES,args:[P]},active:!0}];return n.useEffect((function(){B.canViewInteractives||function(){var e;i.Q.C$.trigger(Object.assign(Object.assign({},C.Y.playVideo),{args:[P,l.m.slugify(null===(e=D.data)||void 0===e?void 0:e.name)]}),{replace:!0})}()}),[B.canViewInteractives]),D.data&&(null==W?void 0:W.length)&&G.hasCompleted?n.createElement(u.M.Provider,{value:T},n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2 mb-2"},$),n.createElement("div",{className:"mb-2"},n.createElement(o.Oo,{breadcrumbs:U})),n.createElement(m.E4,{videos:W,yearGroups:_.data,getVideoAppLink:function(a,t){return O.W.getAppLink(a,Object.assign(Object.assign({},t),{context:d.Q.Widget,contextId:e.videoId}))},hasPermissions:Q,getSubTextAppLink:function(e){return A.j.getSeriesAppLink(e.series)},setFavourite:j,canFavourite:F,presentationAudiences:H.data,getPreviewQuestionsAppLink:function(e){return N.j.getPreviewQuestionsAppLink(e)},imageCdnUrl:null===(r=G.data)||void 0===r?void 0:r.imageCdnUrl}))):n.createElement(x.l,null)}},98620:(e,a,t)=>{t.d(a,{Y:()=>r});var n=t(14070),i=t(97291),r={playVideo:{application:i.O.VIDEOS,action:n.e.Videos.PLAY_VIDEO},playClip:{application:i.O.CLIPS,action:n.e.Clips.PLAY_CLIP}}},16747:(e,a,t)=>{t.d(a,{l:()=>l});var n=t(32735),i=t(49935),r=t(74696);const c={partialHeading:"okxfx"};function l(){return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"partial-loading-background mb-2 ".concat(c.partialHeading)}),n.createElement("div",{className:"mb-2"},n.createElement(i.b2,null)),n.createElement(r.S,null))}},68050:(e,a,t)=>{t.d(a,{Z:()=>o});var n=t(95685),i=t.n(n),r=t(32735),c=t(46304),l=t(74512);const s=r.forwardRef((({bsPrefix:e,className:a,as:t="div",...n},r)=>{const s=(0,c.vE)(e,"row"),o=(0,c.pi)(),m=(0,c.zG)(),u=`${s}-cols`,d=[];return o.forEach((e=>{const a=n[e];let t;delete n[e],null!=a&&"object"==typeof a?({cols:t}=a):t=a;const i=e!==m?`-${e}`:"";null!=t&&d.push(`${u}${i}-${t}`)})),(0,l.jsx)(t,{ref:r,...n,className:i()(a,s,...d)})}));s.displayName="Row";const o=s}}]);
2
+ //# sourceMappingURL=1539-10d3590409-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/1539-10d3590409-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss","file:///app/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/views/video-media/VideoInteractivesView.tsx","file:///app/packages/projects/lite/src/shared/views/video-media/VideoMediaAppLinks.ts","file:///app/packages/projects/lite/src/shared/views/video-media/partial-loading/partial-video-media-view.scss","file:///app/packages/projects/lite/src/shared/views/video-media/partial-loading/PartialVideoMediaView.tsx","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"partialOptions\":\"Gufgq\",\"partialName\":\"SicQQ\",\"partialDescription\":\"dPGMq\",\"partialThumbnail\":\"vZrnb\",\"partialDragHandle\":\"iq73R\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <div className='mx-2'>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </div>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { Flight } from 'libs/common/react/index';\n\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces/models/Config';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n canWatchPublicly: (videoId: string) => boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n /**\n * Publicly available video ids are maintained on the backend config. \n */\n function canWatchPublicly(videoId: string): boolean {\n if (!videoId)\n return false;\n\n return !!config.data?.allowedPublicVideos?.[videoId];\n }\n\n return {\n canWatchPublicly,\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, Video, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { PartialVideoMediaView } from 'shared/views/video-media/partial-loading/PartialVideoMediaView';\nimport { VideoMediaAppLinks } from 'shared/views/video-media/VideoMediaAppLinks';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.videoMedia';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoInteractivesViewProps {\n videoId: string;\n}\n\nexport function VideoInteractivesView(props: VideoInteractivesViewProps): JSX.Element {\n const { videoId } = props;\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n \n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(videoId));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(videoId)\n );\n const content = interactives?.data;\n const count = content?.length || 0;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const title = `${getPhrase('interactivesHeading')} (${count || ''})`;\n\n const audiences = usePresentationAudiences();\n const { hasPermissions } = usePermissions();\n\n const breadcrumbs: Breadcrumb[] = [{\n name: video.data?.name,\n appLink: {\n ...VideoMediaAppLinks.playVideo,\n args: [ videoId, TextHelper.slugify(video.data?.name) ]\n }\n }, {\n name: title,\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.VIDEO_INTERACTIVES,\n args: [videoId]\n },\n active: true\n }];\n\n function redirectToPlaypage(): void {\n Core.AppLinkHelper.trigger({\n ...VideoMediaAppLinks.playVideo,\n args: [ videoId, TextHelper.slugify(video.data?.name) ]\n }, { replace: true });\n }\n\n React.useEffect(() => {\n if (!featureAccess.canViewInteractives) {\n redirectToPlaypage();\n }\n }, [featureAccess.canViewInteractives]);\n\n if (!video.data || !content?.length || !config.hasCompleted)\n return <PartialVideoMediaView />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n <h1 className='h2 mb-2'>{title}</h1>\n \n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={breadcrumbs}/>\n </div>\n\n <VideoList\n videos={content}\n yearGroups={yearGroups.data}\n getVideoAppLink={(video, opts) => VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget,\n contextId: props.videoId\n })}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n imageCdnUrl={config.data?.imageCdnUrl}\n />\n </div>\n </VideoActionsContext.Provider>\n );\n}","\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport const VideoMediaAppLinks = {\n playVideo: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO\n },\n playClip: {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"okxfx\"};","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-video-media-view.scss';\n\nexport function PartialVideoMediaView(): JSX.Element {\n return (\n <div className='px-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n <div className='mb-2'>\n <PartialBreadcrumbs/>\n </div>\n <PartialVideoList />\n </div>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","PartialVideoList","props","Array","numVideos","fill","_","i","allowBulkActions","PartialVideoItem","breakpoints","useBreakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","defaultProps","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","id","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasProduct","config","hasNP","canWatchPublicly","videoId","data","allowedPublicVideos","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","getPhrase","VideoInteractivesView","u","setFavourite","canFavourite","videoActions","location","featureAccess","currentUser","yearGroups","isAuthenticated","customerId","video","interactives","content","count","title","audiences","args","application","action","replace","redirectToPlaypage","hasCompleted","value","videos","getVideoAppLink","context","contextId","getSubTextAppLink","series","presentationAudiences","getPreviewQuestionsAppLink","interactive","imageCdnUrl","VideoMediaAppLinks","playVideo","playClip","PartialVideoMediaView","bsPrefix","as","Component","ref","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","forEach","brkPoint","propValue","cols","infix","push","displayName"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[194],{93978:(e,a,t)=>{t.r(a),t.d(a,{PlaySharedVideoView:()=>q});var i=t(32735),d=t(20354),s=t(65858),c=t(16714),n=t(89454),o=t(43012),r=t(39151),l=t(1666),u=t(20768),v=t(28907),m=t(31949),h=t(1575),p=t(27995),I=t(22902),g=t(79612),C=t(76753),y=t(3042),F=t(82817),V=t(7179),b=t(49948),P=t(36873),k=t(27638),w=t(86698),B=t(35014),f=t(97816),x=t(33192),j=t(16857);function q(e){var a,t,q,A,L,M,T,U,G=(0,k.u)(s.LZ.VideoThumbnail),N=G.setFavourite,_=G.canFavourite,E=(0,I.T)().hasPermissions,O=(0,B.I)(),S=(0,w.y)().activePresentation,R=d.a.useBasicFetch(m.N.currentUser()),Z=d.a.useBasicFetch(h.R.sharedVideo(e.objectId,e.shareId)),z=d.a.useBasicFetch(O.canViewClips&&o.e.videoClips(e.objectId)),D=d.a.useBasicFetch(O.canViewInteractives&&u.b.videoInteractives(e.objectId)),H=d.a.useBasicFetch(r.L.config()),J=(0,P.k)({video:Z.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:R.data}),K=(0,b.l)(e.objectId),Q=d.a.useBasicFetch((null===(t=null===(a=Z.data)||void 0===a?void 0:a.glance)||void 0===t?void 0:t.theme)?v.r.themeImages(Z.data.glance.theme,Z.data.glance.type):null),W=d.a.useBasicFetch(!!S&&n.O.audiencesByPresentationId(S.id)),X=d.a.useBasicFetch((null===(q=R.data)||void 0===q?void 0:q.isAuthenticated)&&l.h.yearGroups(R.data.customerId)),Y=E(c.C.ViewVideoGlance)&&(null===(L=null===(A=Z.data)||void 0===A?void 0:A.glance)||void 0===L?void 0:L.theme);(0,g.M)(C.CG.getVideoMetadata({content:Z.data,canonicalLink:x.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1})),(0,f.V)(null!==(M=J.videos)&&void 0!==M?M:[]),(0,p.b)(Z,{private:j.m}),(0,V.P)({id:e.objectId,app:"videos",shareId:e.shareId});var $=(0,F.M)(e.objectId);return Z.data&&R.hasCompleted&&H.hasCompleted&&K.hasCompleted?i.createElement("div",{className:"px-3"},i.createElement(y.j,{video:Z.data,clips:z.data,interactives:D.data,yearGroups:X.data,curriculums:$,imageCdnUrl:H.data.imageCdnUrl,relatedVideos:J,currentUser:R.data,setFavourite:N,canFavourite:_,pointsOfInterest:null==K?void 0:K.items,playNext:null===(T=e.queryParams)||void 0===T?void 0:T.playNext,shareId:e.shareId,glanceTheme:Q.data,glanceLoaded:!Y||Q.hasCompleted,featureAccess:O,audiences:W.data,params:e.queryParams,canManageVideoAccess:E(c.C.ManageVideoAccess),tableOfContentsId:null===(U=e.queryParams)||void 0===U?void 0:U.scrollTo})):i.createElement(i.Fragment,null)}}}]);
2
+ //# sourceMappingURL=194-d192c1e455-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/194-d192c1e455-lite.chunk.js","mappings":"qcAmCM,SAAUA,EAAoBC,G,oBAClC,GAAuC,IAAAC,GAAkB,qBAAjDC,EAAY,EAAZA,aAAcC,EAAY,EAAZA,aAEdC,GAAmB,SAAnBA,eAEFC,GAAgB,SAGpBC,GACE,SADFA,mBAGIC,EAAc,kBAAkC,mBAChDC,EAAQ,kBACZ,gBAA0BR,EAAMS,SAAUT,EAAMU,UAE5CC,EAAQ,kBAA6BN,EAAcO,cAAgB,eAAwBZ,EAAMS,WACjGI,EAAe,kBACnBR,EAAcS,qBAAuB,sBAAsCd,EAAMS,WAE7EM,EAAS,kBAA6B,cACtCC,GAAgB,OAAoB,CACxCR,MAAOA,EAAMS,KACbC,QAASlB,EAAMmB,YAAYD,QAC3BE,UAAWpB,EAAMmB,YAAYC,UAC7BC,YAAarB,EAAMmB,YAAYG,IAC/Bf,YAAaA,EAAYU,OAErBM,GAAmB,OAAyBvB,EAAMS,UAClDe,EAAc,mBAA8C,QAAlB,EAAU,QAAV,EAAAhB,EAAMS,YAAI,eAAEQ,cAAM,eAAEC,OAChE,gBAA0BlB,EAAMS,KAAKQ,OAAOC,MAAOlB,EAAMS,KAAKQ,OAAOE,MAAQ,MAC3EC,EAAY,oBACdtB,GACF,8BAA2CA,EAAmBuB,KAE1DC,EAAa,mBACD,QAAhB,EAAAvB,EAAYU,YAAI,eAAEc,kBAAmB,eAA4BxB,EAAYU,KAAKe,aAG9EC,EAAmB7B,EAAe,uBACpB,QAAlB,EAAU,QAAV,EAAAI,EAAMS,YAAI,eAAEQ,cAAM,eAAEC,QAEtB,OAAmB,sBAAoC,CACrDQ,QAAS1B,EAAMS,KACfkB,cAAe,qBAA2B,CAAEC,uBAAuB,IACnEC,eAAe,MAGjB,OAAkC,QAApB,EAAArB,EAAcsB,cAAM,QAAI,KACtC,OAAsB9B,EAAO,CAAE+B,QAAS,OACxC,OAAa,CAAEV,GAAI7B,EAAMS,SAAU+B,IAAK,SAAU9B,QAASV,EAAMU,UAEjE,IAAM+B,GAAc,OAAezC,EAAMS,UASzC,OANED,EAAMS,MACNV,EAAYmC,cACZ3B,EAAO2B,cACPnB,EAAiBmB,aAOjB,uBAAKC,UAAU,QACb,gBAAC,IAAQ,CACPnC,MAAOA,EAAMS,KACbN,MAAOA,EAAMM,KACbJ,aAAcA,EAAaI,KAC3Ba,WAAYA,EAAWb,KACvBwB,YAAaA,EACbG,YAAa7B,EAAOE,KAAK2B,YACzB5B,cAAeA,EACfT,YAAaA,EAAYU,KACzBf,aAAcA,EACdC,aAAcA,EACdoB,iBAAkBA,aAAgB,EAAhBA,EAAkBsB,MACpCC,SAA2B,QAAjB,EAAA9C,EAAMmB,mBAAW,eAAE2B,SAC7BpC,QAASV,EAAMU,QACfc,YAAaA,EAAYP,KACzB8B,cAAed,GAAoBT,EAAYkB,aAC/CrC,cAAeA,EACfuB,UAAWA,EAAUX,KACrB+B,OAAQhD,EAAMmB,YACd8B,qBAAsB7C,EAAe,uBACrC8C,kBAAoC,QAAjB,EAAAlD,EAAMmB,mBAAW,eAAEgC,YAxBnC,gCA4BX,C","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-video/PlaySharedVideoView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, PresentationAudience, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayPage } from 'shared/components/play-page/PlayPage';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoView(props: ShareLinkViewProps): React.ReactElement {\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n\n const { hasPermissions } = usePermissions();\n\n const featureAccess = useVideoFeatureAccess();\n\n const {\n activePresentation\n } = usePresentation();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(\n VideoRequests.sharedVideo(props.objectId, props.shareId)\n );\n const clips = Flight.useBasicFetch<Clip[]>(featureAccess.canViewClips && ClipRequests.videoClips(props.objectId));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n const glanceTheme = Flight.useBasicFetch<Theme>(video.data?.glance?.theme\n ? ThemeRequests.themeImages(video.data.glance.theme, video.data.glance.type) : null);\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n video.data?.glance?.theme;\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: false\n }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(video, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'videos', shareId: props.shareId });\n\n const curriculums = useCurriculums(props.objectId);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <PlayPage\n video={video.data}\n clips={clips.data}\n interactives={interactives.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n imageCdnUrl={config.data.imageCdnUrl}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n pointsOfInterest={pointsOfInterest?.items}\n playNext={props.queryParams?.playNext}\n shareId={props.shareId}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n tableOfContentsId={props.queryParams?.scrollTo}\n />\n </div>\n );\n}"],"names":["PlaySharedVideoView","props","u","setFavourite","canFavourite","hasPermissions","featureAccess","activePresentation","currentUser","video","objectId","shareId","clips","canViewClips","interactives","canViewInteractives","config","relatedVideos","data","context","queryParams","contextId","moviesAndTv","mtv","pointsOfInterest","glanceTheme","glance","theme","type","audiences","id","yearGroups","isAuthenticated","customerId","shouldFetchTheme","content","canonicalLink","stripPresentationSlug","allowIndexing","videos","private","app","curriculums","hasCompleted","className","imageCdnUrl","items","playNext","glanceLoaded","params","canManageVideoAccess","tableOfContentsId","scrollTo"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2265],{94644:(e,a,t)=>{t.d(a,{r:()=>u});var i=t(50242),n=t(81886),d=t(67058),r=t(14553),s=t(49267),o=t(49075),c={notFound:d.d,forbidden:{rating:r.q,yearLevel:r.q,region:s.a,privacy:r.q},badRequest:o._};function u(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var d;d="number"==typeof e?e:e.status;var r=Object.assign(Object.assign({},c),a);d&&n.Q.Ry.isStatusCodeError(d)&&(d!==i.o.NotFound?d!==i.o.Forbidden?t.badRequest||n.Q.Ry.throw(new r.badRequest):t.forbidden||n.Q.Ry.throw(new r.forbidden.privacy):t.notFound||n.Q.Ry.throw(new r.notFound))}}},91286:(e,a,t)=>{t.d(a,{v:()=>r});var i=t(32735),n=t(94644);function d(e){return e.map((function(e){return e.statusCode})).join(":")}function r(e,a,t){var r=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){r.forEach((function(e){(0,n.r)(e.statusCode,a,t)}))}),[d(r),a,t])}},69630:(e,a,t)=>{t.r(a),t.d(a,{PlayView:()=>D});var i=t(32735),n=t(50242),d=t(81886),r=t(23481),s=t(20354),o=t(28400),c=t(65858),u=t(78417),l=t(16714),v=t(67058),h=t(61990),p=t(33803),f=t(89454),g=t(43012),m=t(39151),y=t(1666),C=t(20768),F=t(98064),b=t(28907),w=t(31949),P=t(1575),I=t(27995),V=t(91286),B=t(22902),R=t(79612),q=t(76753),x=t(3042),A=t(14070),L=t(97291),k=t(82817),E=t(7179),O=t(49948),M=t(36873),N=t(27638),T=t(86698),_=t(35014),j=t(97816),G=t(33192),Q=r.T.encloseNamespace("shared.play"),U={notFound:h.l,forbidden:{privacy:p.G}};function D(e){var a,t,r,h,p,D=e.queryParams,S=D.context,H=D.contextId,Y=D.playNext,Z=D.mtv,z=(0,N.u)(c.LZ.PlayPage),J=z.setFavourite,K=z.canFavourite,W=(0,B.T)().hasPermissions,X=(0,T.y)().activePresentation,$=(0,_.I)(),ee=s.a.useBasicFetch(F.D.streamableLearning()),ae=s.a.useBasicFetch(w.N.currentUser()),te=s.a.useBasicFetch(P.R.video(e.id)),ie=s.a.useBasicFetch($.canViewClips&&g.e.videoClips(e.id)),ne=s.a.useBasicFetch($.canViewInteractives&&C.b.videoInteractives(e.id)),de=s.a.useBasicFetch(m.L.config()),re=s.a.useBasicFetch((null===(a=ae.data)||void 0===a?void 0:a.isAuthenticated)&&y.h.yearGroups(ae.data.customerId)),se=s.a.useBasicFetch(X&&f.O.audiencesByPresentationId(X.id)),oe=W(l.C.ViewVideoGlance)&&(null===(r=null===(t=te.data)||void 0===t?void 0:t.glance)||void 0===r?void 0:r.theme),ce=s.a.useBasicFetch(oe&&b.r.themeImages(te.data.glance.theme,te.data.glance.type)),ue=s.a.useBasicFetch(te.statusCode===n.o.Forbidden&&P.R.video(e.id,u.r.StripMetadata)),le=(0,k.M)(e.id,!0),ve=(0,M.k)({video:te.data,context:S,contextId:H,moviesAndTv:Z,currentUser:ae.data}),he=(0,O.l)(e.id,!0),pe=s.a.useBasicFetch(P.R.regionAlternatives(e.id));return(0,R.M)(q.CG.getVideoMetadata({content:te.data,regionAlternatives:pe.data,phraseContext:{phraseHandler:Q,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getContentHrefLang(pe.data,(function(e,a){return{application:L.O.VIDEOS,action:A.e.Videos.PLAY_VIDEO,args:[e,o.m.slugify(a)]}}))})),(0,V.v)(te,U,{forbidden:!0}),(0,j.V)(null!==(h=ve.videos)&&void 0!==h?h:[]),(0,E.P)({id:e.id,app:"videos"}),(0,I.b)(ue),i.useEffect((function(){var e;te.data&&ee.data&&(null===(e=te.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===ee.data.objectId})))&&d.Q.Ry.throw(new v.d)}),[te.hasCompleted,ee.hasCompleted]),te.data&&ae.hasCompleted&&de.hasCompleted&&he.hasCompleted?i.createElement("div",{className:"px-4"},i.createElement(x.j,{video:te.data,clips:ie.data,interactives:ne.data,yearGroups:re.data,curriculums:le,glanceTheme:ce.data,glanceLoaded:!oe||ce.hasCompleted,relatedVideos:ve,setFavourite:J,canFavourite:K,imageCdnUrl:de.data.imageCdnUrl,currentUser:ae.data,pointsOfInterest:he.items,playNext:Y,featureAccess:$,audiences:se.data,params:e.queryParams,canManageVideoAccess:W(l.C.ManageVideoAccess),tableOfContentsId:null===(p=e.queryParams)||void 0===p?void 0:p.scrollTo})):i.createElement(i.Fragment,null)}D.defaultProps={queryParams:{}}}}]);
2
+ //# sourceMappingURL=2265-b6e093cf57-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/2265-b6e093cf57-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play/PlayView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, PresentationAudience, RegionAlternative, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayPage } from 'shared/components/play-page/PlayPage';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface PlayViewProps {\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayPage);\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = usePresentation();\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<Clip[]>(featureAccess.canViewClips && ClipRequests.videoClips(props.id));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n video.data?.glance?.theme;\n \n const glanceTheme = Flight.useBasicFetch<Theme>(\n shouldFetchTheme &&\n ThemeRequests.themeImages(video.data.glance.theme, video.data.glance.type)\n );\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id, true);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-4'>\n <PlayPage\n video={video.data}\n clips={clips.data}\n interactives={interactives.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n relatedVideos={relatedVideos}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n tableOfContentsId={props.queryParams?.scrollTo}\n />\n </div>\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","videoErrors","PlayView","props","queryParams","context","contextId","playNext","mtv","u","setFavourite","canFavourite","hasPermissions","activePresentation","featureAccess","streamableLibrary","currentUser","video","id","clips","canViewClips","interactives","canViewInteractives","config","yearGroups","data","isAuthenticated","customerId","audiences","shouldFetchTheme","glance","theme","glanceTheme","type","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","allowIndexing","hrefLang","name","application","action","args","videos","app","libraries","find","library","objectId","hasCompleted","className","glanceLoaded","imageCdnUrl","items","params","canManageVideoAccess","tableOfContentsId","scrollTo","defaultProps"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3042],{1353:(e,t,n)=>{n.d(t,{$:()=>o});var r=n(32735),a=n(11607),i=n(54610),c=n(67453),l=n(22161);function o(e){var t=e.data;return r.createElement(a.L,{key:t.id,className:"p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ".concat(l.Z.tag," ").concat(e.selected?l.Z.selected:""),onClick:function(){return e.onChangeCurriculum(t.id.toString())}},r.createElement("div",{className:"bg-white ".concat(l.Z.cover," rounded-circle border")},r.createElement("img",{src:c.j.createUrl(t.cover.url,{size:i.h2.Small}),alt:t.name,className:"rounded-circle"})),r.createElement("div",{className:"ms-2"},t.name))}},45261:(e,t,n)=>{n.d(t,{h:()=>S});var r,a=n(32735),i=n(44599),c=n(83345);!function(e){e.Subject="CurriculumSubject",e.Audience="CurriculumAudience",e.Area="CurriculumArea",e.Leaf="CurriculumLeaf"}(r||(r={}));var l=n(23481),o=n(23232),u="shared.curriculumLinks",s=l.T.encloseNamespace(u);function d(e){return a.createElement(o.u,{className:"pt-3"},a.createElement(o.u.Image,{src:e.emptyStateUrl,altText:s("emptyInfo"),size:"small"}),a.createElement(o.u.Heading,null,a.createElement(c.x,{namespace:u,phrase:"emptyHeading"})),a.createElement(o.u.Info,null,a.createElement(c.x,{namespace:u,phrase:"emptyInfo"})))}var m=n(22161);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function p(e,t,n){var r;return r=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==v(r)?r:r+"")in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=/(.*)\s\((.*)?\)/i,h="shared.curriculumLinks",g="text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block";function b(e){function t(){var t=g+" bg-white border";return!e.leaf.name&&e.uiContainsCodes?t+" border-secondary text-secondary":t+" border-dark"}var n=a.useRef();return a.useEffect((function(){if(n.current){var t=n.current.getBoundingClientRect().width;e.trySetMaxCodeWidth(t)}}),[n.current]),a.createElement("div",{className:"d-flex"},e.leaf.description?!e.leaf.name&&e.uiContainsCodes?a.createElement(a.Fragment,null,a.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},a.createElement("h5",{ref:n,className:t()},a.createElement(c.x,{namespace:h,phrase:"noCode"}))),a.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):e.leaf.name||e.uiContainsCodes?a.createElement(a.Fragment,null,a.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},a.createElement("h5",{ref:n,className:t()},e.leaf.name)),a.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):a.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.description}}):a.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.name}}))}function E(e){var t,n,i,c={},l=!1;function o(e){var t="mb-2";return e.name||l?t:t+" ms-4 "+m.Z.leafDescriptionOnly}return e.linkSet.areasAndLeaves.forEach((function(e){var t=e[r.Area].map((function(e){return e.name})).join(" - ");c[t]?e[r.Leaf].forEach((function(e){c[t].push(e),e.name&&(l=!0)})):c[t]=e[r.Leaf]})),a.createElement(a.Fragment,null,a.createElement("h3",{className:"".concat(g," text-white bg-dark-blue fw-normal me-1 mb-2")},(t=e.linkSet[r.Audience].name,n=e.linkSet[r.Subject].name,(i=t.match(y))?"".concat(i[1]," • ").concat(i[2]," • ").concat(n):"".concat(t," • ").concat(n))),a.createElement("div",{className:"me-2 ".concat(m.Z.curriculumSubject)},Object.keys(c).map((function(t,n){return a.createElement("div",{key:n,className:m.Z.areaLeafSet},t&&a.createElement("h4",{className:"mb-1 font-size-normal"},t),a.createElement("ul",{className:"list-unstyled"},c[t].map((function(t){return a.createElement("li",{key:t.id,className:o(t)},a.createElement(b,{leaf:t,codeWidth:e.codeWidth,trySetMaxCodeWidth:e.trySetMaxCodeWidth,uiContainsCodes:l}))}))))}))))}function S(e){var t,n,c,l,o=(c=a.useState(0),l=2,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(c,l)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(c,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],s=o[1];function v(e){s((function(t){return t>=e?t:e}))}var y={};return null===(t=e.curriculumLinks)||void 0===t||t.forEach((function(e){var t=null,n=null,a=[],i=[];e.forEach((function(e){switch(e.type){case r.Subject:t=e;break;case r.Audience:n=e;break;case r.Area:a.push(e);break;case r.Leaf:i.push(e)}}));var c="".concat(t.id,":").concat(n.id);y[c]?y[c].areasAndLeaves.push(p(p({},r.Area,a),r.Leaf,i)):y[c]=p(p(p({},r.Subject,t),r.Audience,n),"areasAndLeaves",[p(p({},r.Area,a),r.Leaf,i)])})),e.curriculumLinks?(null===(n=e.curriculumLinks)||void 0===n?void 0:n.length)?a.createElement("ul",{className:"list-unstyled m-0"},Object.keys(y).map((function(e,t){return a.createElement("li",{key:"linkset-".concat(t),className:m.Z.curriculumSet},a.createElement(E,{linkSet:y[e],trySetMaxCodeWidth:v,codeWidth:u}))}))):a.createElement(d,{emptyStateUrl:e.emptyStateUrl}):a.createElement(i.Z,null)}},44599:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(32735);var a=function(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ".concat("vDcrq")}),r.createElement("div",null,r.createElement("div",{className:"partial-loading-background mb-1 ".concat("GXhoW")}),r.createElement("div",{className:"mb-2 d-flex"},r.createElement("div",{className:"me-1 align-self-start ".concat("goKaS")},r.createElement("div",{className:"partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100"})),r.createElement("div",{className:"partial-loading-background ".concat("vFew6")}))))};function i(){return r.createElement("div",null,r.createElement("div",{className:"mb-3"},r.createElement(a,null)),r.createElement("div",{className:"mb-3"},r.createElement(a,null)),r.createElement("div",null,r.createElement(a,null)))}},63112:(e,t,n)=>{n.d(t,{o:()=>i});var r=n(32735),a=n(91807),i=r.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(a.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))}))},65163:(e,t,n)=>{n.d(t,{QL:()=>r.Q,eb:()=>r.e});var r=n(16450);n(14244)},3042:(e,t,n)=>{n.d(t,{j:()=>ee});var r=n(32735),a=n(42029),i=n(83345),c=n(49439);const l={copyrightDisclaimer:"z8YoI",overlayContainer:"eJDbJ"};function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u="shared.copyrightDisclaimer",s=150;function d(e){var t,n,d,m=(n=(0,c.L)({}),d=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(n,d)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n=Object.prototype.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)?o(e,t):void 0}}(n,d)||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.")}()),v=m[0],p=m[1];return r.createElement("div",{ref:v,className:e.className},r.createElement("p",{className:"".concat(l.copyrightDisclaimer," mb-1")},r.createElement(i.x,{namespace:u,phrase:"copyrightDisclaimer"})),r.createElement(a.Z,{target:v.current,show:p,placement:e.overflowPlacement&&document.documentElement.clientHeight-(null===(t=v.current)||void 0===t?void 0:t.getBoundingClientRect().bottom)<s?e.overflowPlacement:e.placement},r.createElement("div",{className:"".concat(l.overlayContainer," mw-100 bg-white border rounded-3 p-2")},r.createElement("p",null,r.createElement(i.x,{namespace:u,phrase:"warning"})),r.createElement("p",{className:"fw-semibold mb-0"},r.createElement(i.x,{namespace:u,phrase:"sharing"})))))}var m=n(42648),v=n(23481),p=n(75896),f=n(49985),y=n(65858),h=n(1353),g=n(63112),b=n(65163),E=n(69883),S=n(44599),A=n(45261);function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var k="shared.curriculumLinks",N=v.T.encloseNamespace(k);function L(e){var t,n,a,c=e.curriculums,l=c.hasLoaded,o=c.activeCurriculum,u=c.availableCurriculums,s=c.curriculumLinks,d=c.updateCurriculum,v=(n=r.useState(),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}(n,a)||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=v[0],I=v[1],w=(0,E.Z)();function x(t){var n,r,a=u.find((function(e){return e.id.toString()===t}));(null==a?void 0:a.id)&&(null===(n=null==L?void 0:L.id)||void 0===n?void 0:n.toString())!==(null===(r=null==a?void 0:a.id)||void 0===r?void 0:r.toString())&&(I(a),d(a,(function(){f.k.logUserAction({id:a.id,name:a.id,description:a.description,videoId:e.video.id,videoName:e.video.name},{entity:y.py.Presentation,actionType:y.Vw.Select,descriptor:y.kD.Curriculum,location:y.LZ.PlayPage})}),(function(){I(L),w.error(N("updateFailed"))})))}return r.useEffect((function(){l&&(L||I(null!=o?o:p.m.first(u)))}),[null==o?void 0:o.id,l]),r.createElement(r.Fragment,null,r.createElement("h2",{className:"h5 me-2 h-100"},r.createElement(i.x,{namespace:k,phrase:"heading"})),r.createElement("div",{className:"mb-2"},r.createElement(b.eb,{collection:(null==L?void 0:L.id)?e.curriculums.nonEmptyCurriculums:null,childClassName:"flex-shrink-0",childComponent:function(e){var t;return r.createElement(h.$,Object.assign({},e,{selected:(null===(t=null==L?void 0:L.id)||void 0===t?void 0:t.toString())===e.data.id.toString(),onChangeCurriculum:x}))},partialLoadingComponent:function(){return r.createElement(g.o,null)},widgetDataDeps:[null===(t=null==L?void 0:L.id)||void 0===t?void 0:t.toString()]})),r.createElement("div",{className:"rounded border mb-4 position-relative"},r.createElement(m.$B,{autoHeight:!0,autoHeightMax:e.height},r.createElement("div",{className:"p-3"},l?r.createElement(A.h,{curriculumLinks:s,emptyStateUrl:e.emptyStateUrl,onChangeCurriculum:x}):r.createElement(S.Z,null)))))}var I=n(21473),w=n(18913),x=n(39347),j=n(49087),T=n(92805),U=n(40178),O=n(71063),R=n(10439),M=n(35429),F=n(4594),V=n(16714),P=n(22902),W=n(9907),G=n(31908),_=n(26492),D=n(91479),Z=n(47938),H=n(81024),B=n(78166),$=n(99742),z=n(14070),Y=n(97291),J=n(22490),K=n(76162),Q=n(31261),X=n(99092),q="shared.playPage";function ee(e){var t,n,a,c,l,o,u,s,m,v,p=(0,M.g)(),f=(0,P.T)().hasPermissions,y=G.M.getCanBeConsumed(e.video).canConsume,h=e.featureAccess.canWatchPublicly(e.video.id),g=G.M.isVideoTypeArchived(e.video),b=f(V.C.StudentExperience),E=r.useRef(null),S=r.useRef(null);(0,W.P)([E.current,S.current],e.tableOfContentsId);var A=r.useRef(!1),C=(0,x.W)(e.video)&&e.featureAccess.canViewGlance,k=(0,X.lU)(),N="picture-in-picture"===p.mode||!h&&e.featureAccess.canViewPublicLayout,ee=!(!e.featureAccess.canViewCurriculumLinks||!e.curriculums.customerHasCurriculumLinks);return r.createElement(i.D.Provider,{value:q},r.createElement(Z.W,{restrictions:e.video._restrictions,yearGroups:e.yearGroups,objectId:e.video.id,objectTypeId:F.E.Video,canManageVideoAccess:e.canManageVideoAccess}),g&&r.createElement(_.T,{typeId:e.video.typeId,hasStudentExperience:b}),r.createElement("section",{className:"mb-2 ".concat(O.M.GLOBAL_PLAYER_SELECTOR)},(y||h)&&r.createElement(R.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:null===(t=e.params)||void 0===t?void 0:t.context,contextId:null===(n=e.params)||void 0===n?void 0:n.contextId,playNext:null===(a=e.params)||void 0===a?void 0:a.playNext,moviesAndTv:null===(c=e.params)||void 0===c?void 0:c.mtv,startTime:null!==(o=null===(l=e.params)||void 0===l?void 0:l.t)&&void 0!==o?o:null===(u=e.params)||void 0===u?void 0:u.startTime,endTime:null===(s=e.params)||void 0===s?void 0:s.endTime,mode:"default",location:"play-page"}),r.createElement("div",{className:N?"":"d-none"},r.createElement(H.S,{video:e.video,appLink:{application:Y.O.SIGN_UP,action:z.e.SignUp.SIGN_UP},type:"picture-in-picture"===p.mode?"pip":"public"}))),r.createElement(D.v,{media:e.video,yearGroups:e.yearGroups,audiences:e.audiences,getSeriesAppLink:function(t){return k.getSeriesAppLink(t,e.params.mtv)},featureAccess:e.featureAccess,shareId:e.shareId}),C&&r.createElement("section",null,r.createElement(w.o,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=p.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:k.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout})),r.createElement(I.M,{containerRef:E,video:e.video,canViewResources:e.featureAccess.canViewResources,imageCdnUrl:e.imageCdnUrl,getAppLink:k.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResources),analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:$.W.Fallbacks.RESOURCE_THUMBNAIL}),r.createElement(Q.J,{video:e.video,imageCdnUrl:e.imageCdnUrl,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,containerRef:S,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite}),ee&&r.createElement("section",null,r.createElement(L,{video:e.video,height:U.x,curriculums:e.curriculums,emptyStateUrl:$.W.EmptyStates.CURRICULUM_LINKS})),e.glanceLoaded?r.createElement("section",null,r.createElement(j.X,{video:e.video,onLaunchImmersiveReader:function(){var e,t,n,r;A.current=!(null===(t=null===(e=null==p?void 0:p.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==p?void 0:p.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()},onExitImmersiveReader:function(){var e,t;A.current&&(null===(t=null===(e=null==p?void 0:p.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())},getTagAppLink:k.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,theme:e.glanceTheme})):r.createElement(T.H,null),G.M.isBroadcast(e.video)&&r.createElement(d,{placement:"bottom-end",className:"d-flex justify-content-end mt-n2"}),r.createElement(K.O,{video:e.video,clips:null!==(v=null===(m=e.video.clips)||void 0===m?void 0:m.data)&&void 0!==v?v:[],canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,analyticsData:{videoId:e.video.id,videoName:e.video.name}}),r.createElement("section",null,r.createElement(B.Z,{currentVideo:e.video,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,currentUser:e.currentUser,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,n){return J.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv}))},audiences:e.audiences,moviesAndTv:e.params.mtv})))}},22161:(e,t,n)=>{n.d(t,{Z:()=>r});const r={curriculumSubject:"GvGYH",curriculumSet:"d7RK0",areaLeafSet:"XRTAe",closeButton:"N3l5Q",heading:"hAxR4",leafDescriptionOnly:"h66ke",dropdown:"CsG6G",tag:"rdLqY",cover:"etwaD",active:"aDLMe",selected:"BMrSd"}}}]);
2
- //# sourceMappingURL=3042-32e303014a-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3042],{1353:(e,t,n)=>{n.d(t,{$:()=>o});var r=n(32735),a=n(11607),i=n(54610),c=n(67453),l=n(22161);function o(e){var t=e.data;return r.createElement(a.L,{key:t.id,className:"p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ".concat(l.Z.tag," ").concat(e.selected?l.Z.selected:""),onClick:function(){return e.onChangeCurriculum(t.id.toString())}},r.createElement("div",{className:"bg-white ".concat(l.Z.cover," rounded-circle border")},r.createElement("img",{src:c.j.createUrl(t.cover.url,{size:i.h2.Small}),alt:t.name,className:"rounded-circle"})),r.createElement("div",{className:"ms-2"},t.name))}},45261:(e,t,n)=>{n.d(t,{h:()=>S});var r,a=n(32735),i=n(44599),c=n(83345);!function(e){e.Subject="CurriculumSubject",e.Audience="CurriculumAudience",e.Area="CurriculumArea",e.Leaf="CurriculumLeaf"}(r||(r={}));var l=n(23481),o=n(23232),u="shared.curriculumLinks",s=l.T.encloseNamespace(u);function d(e){return a.createElement(o.u,{className:"pt-3"},a.createElement(o.u.Image,{src:e.emptyStateUrl,altText:s("emptyInfo"),size:"small"}),a.createElement(o.u.Heading,null,a.createElement(c.x,{namespace:u,phrase:"emptyHeading"})),a.createElement(o.u.Info,null,a.createElement(c.x,{namespace:u,phrase:"emptyInfo"})))}var m=n(22161);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function p(e,t,n){var r;return r=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==v(r)?r:r+"")in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=/(.*)\s\((.*)?\)/i,h="shared.curriculumLinks",g="text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block";function b(e){function t(){var t=g+" bg-white border";return!e.leaf.name&&e.uiContainsCodes?t+" border-secondary text-secondary":t+" border-dark"}var n=a.useRef();return a.useEffect((function(){if(n.current){var t=n.current.getBoundingClientRect().width;e.trySetMaxCodeWidth(t)}}),[n.current]),a.createElement("div",{className:"d-flex"},e.leaf.description?!e.leaf.name&&e.uiContainsCodes?a.createElement(a.Fragment,null,a.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},a.createElement("h5",{ref:n,className:t()},a.createElement(c.x,{namespace:h,phrase:"noCode"}))),a.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):e.leaf.name||e.uiContainsCodes?a.createElement(a.Fragment,null,a.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},a.createElement("h5",{ref:n,className:t()},e.leaf.name)),a.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):a.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.description}}):a.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.name}}))}function E(e){var t,n,i,c={},l=!1;function o(e){var t="mb-2";return e.name||l?t:t+" ms-4 "+m.Z.leafDescriptionOnly}return e.linkSet.areasAndLeaves.forEach((function(e){var t=e[r.Area].map((function(e){return e.name})).join(" - ");c[t]?e[r.Leaf].forEach((function(e){c[t].push(e),e.name&&(l=!0)})):c[t]=e[r.Leaf]})),a.createElement(a.Fragment,null,a.createElement("h3",{className:"".concat(g," text-white bg-dark-blue fw-normal me-1 mb-2")},(t=e.linkSet[r.Audience].name,n=e.linkSet[r.Subject].name,(i=t.match(y))?"".concat(i[1]," • ").concat(i[2]," • ").concat(n):"".concat(t," • ").concat(n))),a.createElement("div",{className:"me-2 ".concat(m.Z.curriculumSubject)},Object.keys(c).map((function(t,n){return a.createElement("div",{key:n,className:m.Z.areaLeafSet},t&&a.createElement("h4",{className:"mb-1 font-size-normal"},t),a.createElement("ul",{className:"list-unstyled"},c[t].map((function(t){return a.createElement("li",{key:t.id,className:o(t)},a.createElement(b,{leaf:t,codeWidth:e.codeWidth,trySetMaxCodeWidth:e.trySetMaxCodeWidth,uiContainsCodes:l}))}))))}))))}function S(e){var t,n,c,l,o=(c=a.useState(0),l=2,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(c,l)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(c,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],s=o[1];function v(e){s((function(t){return t>=e?t:e}))}var y={};return null===(t=e.curriculumLinks)||void 0===t||t.forEach((function(e){var t=null,n=null,a=[],i=[];e.forEach((function(e){switch(e.type){case r.Subject:t=e;break;case r.Audience:n=e;break;case r.Area:a.push(e);break;case r.Leaf:i.push(e)}}));var c="".concat(t.id,":").concat(n.id);y[c]?y[c].areasAndLeaves.push(p(p({},r.Area,a),r.Leaf,i)):y[c]=p(p(p({},r.Subject,t),r.Audience,n),"areasAndLeaves",[p(p({},r.Area,a),r.Leaf,i)])})),e.curriculumLinks?(null===(n=e.curriculumLinks)||void 0===n?void 0:n.length)?a.createElement("ul",{className:"list-unstyled m-0"},Object.keys(y).map((function(e,t){return a.createElement("li",{key:"linkset-".concat(t),className:m.Z.curriculumSet},a.createElement(E,{linkSet:y[e],trySetMaxCodeWidth:v,codeWidth:u}))}))):a.createElement(d,{emptyStateUrl:e.emptyStateUrl}):a.createElement(i.Z,null)}},44599:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(32735);var a=function(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ".concat("vDcrq")}),r.createElement("div",null,r.createElement("div",{className:"partial-loading-background mb-1 ".concat("GXhoW")}),r.createElement("div",{className:"mb-2 d-flex"},r.createElement("div",{className:"me-1 align-self-start ".concat("goKaS")},r.createElement("div",{className:"partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100"})),r.createElement("div",{className:"partial-loading-background ".concat("vFew6")}))))};function i(){return r.createElement("div",null,r.createElement("div",{className:"mb-3"},r.createElement(a,null)),r.createElement("div",{className:"mb-3"},r.createElement(a,null)),r.createElement("div",null,r.createElement(a,null)))}},63112:(e,t,n)=>{n.d(t,{o:()=>i});var r=n(32735),a=n(91807),i=r.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(a.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))}))},65163:(e,t,n)=>{n.d(t,{QL:()=>r.Q,eb:()=>r.e});var r=n(16450);n(14244)},3042:(e,t,n)=>{n.d(t,{j:()=>ee});var r=n(32735),a=n(42029),i=n(83345),c=n(49439);const l={copyrightDisclaimer:"z8YoI",overlayContainer:"eJDbJ"};function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u="shared.copyrightDisclaimer",s=150;function d(e){var t,n,d,m=(n=(0,c.L)({}),d=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(n,d)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n=Object.prototype.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)?o(e,t):void 0}}(n,d)||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.")}()),v=m[0],p=m[1];return r.createElement("div",{ref:v,className:e.className},r.createElement("p",{className:"".concat(l.copyrightDisclaimer," mb-1")},r.createElement(i.x,{namespace:u,phrase:"copyrightDisclaimer"})),r.createElement(a.Z,{target:v.current,show:p,placement:e.overflowPlacement&&document.documentElement.clientHeight-(null===(t=v.current)||void 0===t?void 0:t.getBoundingClientRect().bottom)<s?e.overflowPlacement:e.placement},r.createElement("div",{className:"".concat(l.overlayContainer," mw-100 bg-white border rounded-3 p-2")},r.createElement("p",null,r.createElement(i.x,{namespace:u,phrase:"warning"})),r.createElement("p",{className:"fw-semibold mb-0"},r.createElement(i.x,{namespace:u,phrase:"sharing"})))))}var m=n(42648),v=n(23481),p=n(75896),f=n(49985),y=n(65858),h=n(1353),g=n(63112),b=n(65163),E=n(69883),S=n(44599),A=n(45261);function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var k="shared.curriculumLinks",N=v.T.encloseNamespace(k);function L(e){var t,n,a,c=e.curriculums,l=c.hasLoaded,o=c.activeCurriculum,u=c.availableCurriculums,s=c.curriculumLinks,d=c.updateCurriculum,v=(n=r.useState(),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}(n,a)||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=v[0],I=v[1],w=(0,E.Z)();function x(t){var n,r,a=u.find((function(e){return e.id.toString()===t}));(null==a?void 0:a.id)&&(null===(n=null==L?void 0:L.id)||void 0===n?void 0:n.toString())!==(null===(r=null==a?void 0:a.id)||void 0===r?void 0:r.toString())&&(I(a),d(a,(function(){f.k.logUserAction({id:a.id,name:a.id,description:a.description,videoId:e.video.id,videoName:e.video.name},{entity:y.py.Presentation,actionType:y.Vw.Select,descriptor:y.kD.Curriculum,location:y.LZ.PlayPage})}),(function(){I(L),w.error(N("updateFailed"))})))}return r.useEffect((function(){l&&(L||I(null!=o?o:p.m.first(u)))}),[null==o?void 0:o.id,l]),r.createElement(r.Fragment,null,r.createElement("h2",{className:"h5 me-2 h-100"},r.createElement(i.x,{namespace:k,phrase:"heading"})),r.createElement("div",{className:"mb-2"},r.createElement(b.eb,{collection:(null==L?void 0:L.id)?e.curriculums.nonEmptyCurriculums:null,childClassName:"flex-shrink-0",childComponent:function(e){var t;return r.createElement(h.$,Object.assign({},e,{selected:(null===(t=null==L?void 0:L.id)||void 0===t?void 0:t.toString())===e.data.id.toString(),onChangeCurriculum:x}))},partialLoadingComponent:function(){return r.createElement(g.o,null)},widgetDataDeps:[null===(t=null==L?void 0:L.id)||void 0===t?void 0:t.toString()]})),r.createElement("div",{className:"rounded border mb-4 position-relative"},r.createElement(m.$B,{autoHeight:!0,autoHeightMax:e.height},r.createElement("div",{className:"p-3"},l?r.createElement(A.h,{curriculumLinks:s,emptyStateUrl:e.emptyStateUrl,onChangeCurriculum:x}):r.createElement(S.Z,null)))))}var I=n(21473),w=n(18913),x=n(39347),j=n(49087),T=n(92805),U=n(40178),O=n(71063),R=n(10439),M=n(35429),F=n(4594),V=n(16714),P=n(22902),W=n(9907),G=n(31908),_=n(26492),D=n(91479),Z=n(47938),H=n(81024),B=n(78166),$=n(99742),z=n(14070),Y=n(97291),J=n(22490),K=n(76162),Q=n(31261),X=n(99092),q="shared.playPage";function ee(e){var t,n,a,c,l,o,u,s,m=(0,M.g)(),v=(0,P.T)().hasPermissions,p=G.M.getCanBeConsumed(e.video).canConsume,f=e.featureAccess.canWatchPublicly(e.video.id),y=G.M.isVideoTypeArchived(e.video),h=v(V.C.StudentExperience),g=r.useRef(null),b=r.useRef(null);(0,W.P)([g.current,b.current],e.tableOfContentsId);var E=r.useRef(!1),S=(0,x.W)(e.video)&&e.featureAccess.canViewGlance,A=(0,X.lU)(),C="picture-in-picture"===m.mode||!f&&e.featureAccess.canViewPublicLayout,k=!(!e.featureAccess.canViewCurriculumLinks||!e.curriculums.customerHasCurriculumLinks);return r.createElement(i.D.Provider,{value:q},r.createElement(Z.W,{restrictions:e.video._restrictions,yearGroups:e.yearGroups,objectId:e.video.id,objectTypeId:F.E.Video,canManageVideoAccess:e.canManageVideoAccess}),y&&r.createElement(_.T,{typeId:e.video.typeId,hasStudentExperience:h}),r.createElement("section",{className:"mb-2 ".concat(O.M.GLOBAL_PLAYER_SELECTOR)},(p||f)&&r.createElement(R.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:null===(t=e.params)||void 0===t?void 0:t.context,contextId:null===(n=e.params)||void 0===n?void 0:n.contextId,playNext:null===(a=e.params)||void 0===a?void 0:a.playNext,moviesAndTv:null===(c=e.params)||void 0===c?void 0:c.mtv,startTime:null!==(o=null===(l=e.params)||void 0===l?void 0:l.t)&&void 0!==o?o:null===(u=e.params)||void 0===u?void 0:u.startTime,endTime:null===(s=e.params)||void 0===s?void 0:s.endTime,mode:"default",location:"play-page"}),r.createElement("div",{className:C?"":"d-none"},r.createElement(H.S,{video:e.video,appLink:{application:Y.O.SIGN_UP,action:z.e.SignUp.SIGN_UP},type:"picture-in-picture"===m.mode?"pip":"public"}))),r.createElement(D.v,{media:e.video,yearGroups:e.yearGroups,audiences:e.audiences,getSeriesAppLink:function(t){return A.getSeriesAppLink(t,e.params.mtv)},featureAccess:e.featureAccess,shareId:e.shareId}),S&&r.createElement("section",null,r.createElement(w.o,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=m.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:A.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout})),r.createElement(I.M,{containerRef:g,video:e.video,canViewResources:e.featureAccess.canViewResources,imageCdnUrl:e.imageCdnUrl,getAppLink:A.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResources),analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:$.W.Fallbacks.RESOURCE_THUMBNAIL}),r.createElement(Q.J,{video:e.video,interactives:e.interactives,imageCdnUrl:e.imageCdnUrl,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,containerRef:b,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite}),k&&r.createElement("section",null,r.createElement(L,{video:e.video,height:U.x,curriculums:e.curriculums,emptyStateUrl:$.W.EmptyStates.CURRICULUM_LINKS})),e.glanceLoaded?r.createElement("section",null,r.createElement(j.X,{video:e.video,onLaunchImmersiveReader:function(){var e,t,n,r;E.current=!(null===(t=null===(e=null==m?void 0:m.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==m?void 0:m.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()},onExitImmersiveReader:function(){var e,t;E.current&&(null===(t=null===(e=null==m?void 0:m.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())},getTagAppLink:A.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,theme:e.glanceTheme})):r.createElement(T.H,null),G.M.isBroadcast(e.video)&&r.createElement(d,{placement:"bottom-end",className:"d-flex justify-content-end mt-n2"}),r.createElement(K.O,{video:e.video,clips:e.clips,canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,analyticsData:{videoId:e.video.id,videoName:e.video.name}}),r.createElement("section",null,r.createElement(B.Z,{currentVideo:e.video,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,currentUser:e.currentUser,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,n){return J.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv}))},audiences:e.audiences,moviesAndTv:e.params.mtv})))}},22161:(e,t,n)=>{n.d(t,{Z:()=>r});const r={curriculumSubject:"GvGYH",curriculumSet:"d7RK0",areaLeafSet:"XRTAe",closeButton:"N3l5Q",heading:"hAxR4",leafDescriptionOnly:"h66ke",dropdown:"CsG6G",tag:"rdLqY",cover:"etwaD",active:"aDLMe",selected:"BMrSd"}}}]);
2
+ //# sourceMappingURL=3042-f9d67ac0a3-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3042-f9d67ac0a3-lite.chunk.js","mappings":"8LAeM,SAAUA,EAAmBC,GACjC,IAAcC,EAAkBD,EAAxBE,KAER,OACE,gBAAC,IAAS,CACRC,IAAKF,EAAcG,GACnBC,UAAS,gFAA2E,QAAU,YAAIL,EAAMM,SAAW,aAAkB,IACrIC,QAAS,kBAAMP,EAAMQ,mBAAmBP,EAAcG,GAAGK,WAAW,GAEpE,uBAAKJ,UAAS,mBAAc,UAAY,2BACtC,uBACEK,IAAK,cAAsBT,EAAcU,MAAMC,IAAK,CAAEC,KAAM,aAC5DC,IAAKb,EAAcc,KACnBV,UAAU,oBAGd,uBAAKA,UAAU,QACZJ,EAAcc,MAIvB,C,uCCpCYC,E,kCAAZ,SAAYA,GACV,8BACA,gCACA,wBACA,uBACD,CALD,CAAYA,IAAAA,EAAc,K,0BCOpBC,EAAY,yBACZC,EAAYC,EAAA,mBAAiCF,GAM7C,SAAUG,EAA0BpB,GACxC,OACE,gBAACqB,EAAA,EAAU,CAAChB,UAAU,QACpB,gBAACgB,EAAA,QAAgB,CAACX,IAAKV,EAAMsB,cAAeC,QAASL,EAAU,aAAcL,KAAK,UAClF,gBAACQ,EAAA,UAAkB,KACjB,gBAACG,EAAA,EAAI,CAACP,UAAWA,EAAWQ,OAAO,kBAErC,gBAACJ,EAAA,OAAe,KACd,gBAACG,EAAA,EAAI,CAACP,UAAWA,EAAWQ,OAAO,eAI3C,C,2tBCfA,IAAMC,EAAwB,mBAExB,EAAY,yBAEZC,EAAkB,0EAkBxB,SAASC,EAAe5B,GACtB,SAAS6B,IACP,IAAMC,EAAYH,EAAkB,mBAGpC,OAAK3B,EAAM+B,KAAKhB,MAAQf,EAAMgC,gBACrBF,EAAY,mCAEdA,EAAY,cACrB,CAEA,IAAMG,EAAU,WAWhB,OATA,aAAgB,WACd,GAAKA,EAAQC,QAAb,CAGA,IAAQC,EAAUF,EAAQC,QAAQE,wBAA1BD,MAERnC,EAAMqC,mBAAmBF,EAJjB,CAKV,GAAG,CAACF,EAAQC,UAGV,uBAAK7B,UAAU,UAENL,EAAM+B,KAAKO,aAOXtC,EAAM+B,KAAKhB,MAAQf,EAAMgC,gBAE1B,gCACE,uBACE3B,UAAU,wBACVkC,MAAO,CAAEC,SAAUxC,EAAMyC,UAAY,GAAH,OAAMzC,EAAMyC,UAAS,MAAO,SAE9D,sBAAIC,IAAKT,EAAS5B,UAAWwB,KAC3B,gBAACL,EAAA,EAAI,CAACP,UAAW,EAAWQ,OAAO,aAGvC,qBAAGpB,UAAU,wBAAwBsC,wBAAyB,CAAEC,OAAQ5C,EAAM+B,KAAKO,gBASpFtC,EAAM+B,KAAKhB,MAASf,EAAMgC,gBAI7B,gCACE,uBACE3B,UAAU,wBACVkC,MAAO,CAAEC,SAAUxC,EAAMyC,UAAY,GAAH,OAAMzC,EAAMyC,UAAS,MAAO,SAE9D,sBAAIC,IAAKT,EAAS5B,UAAWwB,KAA2B7B,EAAM+B,KAAKhB,OAErE,qBAAGV,UAAU,wBAAwBsC,wBAAyB,CAAEC,OAAQ5C,EAAM+B,KAAKO,gBAV9E,qBAAGjC,UAAU,MAAMsC,wBAAyB,CAAEC,OAAQ5C,EAAM+B,KAAKO,eA3BjE,qBAAGjC,UAAU,MAAMsC,wBAAyB,CAAEC,OAAQ5C,EAAM+B,KAAKhB,QA2ClF,CAQA,SAAS8B,EAAkB7C,GACzB,IAuBQ8C,EACAC,EAOAC,EA/BFC,EAA8E,CAAC,EAEjFjB,GAAkB,EAqCtB,SAASkB,EAAkBnB,GACzB,IAAM1B,EAAY,OAElB,OAAK0B,EAAKhB,MAASiB,EAGZ3B,EAFEA,EAAY,SAAW,uBAGlC,CAEA,OA5CAL,EAAMmD,QAAQC,eAAeC,SAAQ,SAAAC,GACnC,IAAMC,EAAWD,EAAetC,EAAewC,MAAMC,KAAI,SAAAC,GAAE,OAAIA,EAAG3C,IAAI,IAAE4C,KAAK,OAEzEV,EAAgBM,GAClBD,EAAetC,EAAe4C,MAAMP,SAAQ,SAAAtB,GAC1CkB,EAAgBM,GAAUM,KAAK9B,GAG3BA,EAAKhB,OACPiB,GAAkB,EACtB,IAKFiB,EAAgBM,GAAYD,EAAetC,EAAe4C,KAC5D,IA6BE,gCACE,sBAAIvD,UAAS,UAAKsB,EAAe,kDA3B7BmB,EAAkB9C,EAAMmD,QAAQnC,EAAe8C,UAAU/C,KACzDgC,EAAiB/C,EAAMmD,QAAQnC,EAAe+C,SAAShD,MAOvDiC,EAA0BF,EAAgBkB,MAAMtC,IAG7C,GAAP,OAAUsB,EAAwB,GAAE,cAAMA,EAAwB,GAAE,cAAMD,GAErE,GAAP,OAAUD,EAAe,cAAMC,KAkB7B,uBAAK1C,UAAS,eAAU,wBACrB4D,OAAOC,KAAKjB,GAAiBQ,KAAI,SAACF,EAAUY,GAC3C,OACE,uBAAKhE,IAAKgE,EAAG9D,UAAW,iBACrBkD,GAAY,sBAAIlD,UAAU,yBAAyBkD,GACpD,sBAAIlD,UAAU,iBACX4C,EAAgBM,GAAUE,KAAI,SAAA1B,GAAI,OACjC,sBAAI5B,IAAK4B,EAAK3B,GAAIC,UAAW6C,EAAkBnB,IAC7C,gBAACH,EAAc,CACbG,KAAMA,EACNU,UAAWzC,EAAMyC,UACjBJ,mBAAoBrC,EAAMqC,mBAC1BL,gBAAiBA,IAEhB,KAKf,KAIR,CAQM,SAAUoC,EAAgBpE,G,YACuB,G,EAAjB,WAAe,G,EAAE,E,k5BAA7CyC,EAAS,KAAE4B,EAAY,KAE/B,SAAShC,EAAmBF,GAW1BkC,GAAa,SAAAC,GACX,OAAIA,GAAcnC,EACTmC,EAEFnC,CACT,GACF,CAUA,IAAMoC,EAAiF,CAAC,EAgDxF,OA9CqB,QAArB,EAAAvE,EAAMwE,uBAAe,SAAEnB,SAAQ,SAAAF,GAC7B,IAAIsB,EAA8C,KAC9CC,EAAgD,KAC9CC,EAA2C,GAC3CC,EAA4C,GAElDzB,EAAQE,SAAQ,SAAAwB,GACd,OAAQA,EAAcC,MACpB,KAAK9D,EAAe+C,QAClBU,EAAUI,EACV,MACF,KAAK7D,EAAe8C,SAClBY,EAAWG,EACX,MACF,KAAK7D,EAAewC,KAClBmB,EAAMd,KAAKgB,GACX,MACF,KAAK7D,EAAe4C,KAClBgB,EAAOf,KAAKgB,GAKlB,IAEA,IAAM1E,EAAM,GAAH,OAAMsE,EAAQrE,GAAE,YAAIsE,EAAStE,IAElCmE,EAAmBpE,GACrBoE,EAAmBpE,GAAKiD,eAAeS,KAAK,EAAD,KACxC7C,EAAewC,KAAOmB,GACtB3D,EAAe4C,KAAOgB,IAM3BL,EAAmBpE,GAAO,EAAH,OACpBa,EAAe+C,QAAUU,GACzBzD,EAAe8C,SAAWY,GAAQ,iBACnB,CAAC,EAAD,KACb1D,EAAewC,KAAOmB,GACtB3D,EAAe4C,KAAOgB,IAG7B,IAEK5E,EAAMwE,iBAGe,QAArB,EAAAxE,EAAMwE,uBAAe,eAAEO,QAK1B,sBAAI1E,UAAU,qBACX4D,OAAOC,KAAKK,GAAoBd,KAAI,SAACuB,EAAYb,GAAC,OACjD,sBAAIhE,IAAG,kBAAagE,GAAK9D,UAAW,mBAClC,gBAACwC,EAAiB,CAChBM,QAASoB,EAAmBS,GAC5B3C,mBAAoBA,EACpBI,UAAWA,IAEV,KAZF,gBAACrB,EAAyB,CAACE,cAAetB,EAAMsB,gBAHhD,gBAAC2D,EAAA,EAAsB,KAmBlC,C,kDClSA,IAAMC,EAA+B,WAAH,OAChC,gCACE,uBAAK7E,UAAS,qFCLS,WDMvB,2BACE,uBAAKA,UAAS,0CCPsB,WDSpC,uBAAKA,UAAU,eACb,uBAAKA,UAAS,gCCVmC,UDW/C,uBAAKA,UAAS,kFAGhB,uBAAKA,UAAS,qCCdyD,aDiB1E,EAGC,SAAU4E,IACd,OACE,2BACE,uBAAK5E,UAAU,QACb,gBAAC6E,EAA4B,OAG/B,uBAAK7E,UAAU,QACb,gBAAC6E,EAA4B,OAG/B,2BACE,gBAACA,EAA4B,OAIrC,C,6DE7BaC,EAAiB,QAAW,YAA+C,QAApCC,SAC5CC,EAAa,0FAAH,YAD0C,IAAG,KAAE,EACsD,YAAI,gBAEzH,OACE,uBAAKhF,UAAU,QACb,wBAAMA,UAAWgF,GAAU,KAGjC,G,2JCfA,SAAgB,oBAAsB,QAAQ,iBAAmB,S,0GCQjE,IAAMpE,EAAY,6BAEZqE,EAAmB,IAQnB,SAAUC,EAAoBvF,GAClC,I,MAA8D,G,GAAlC,OAA+B,CAAC,G,EAAE,E,k5BAAtD0C,EAAG,KAAE8C,EAAU,KAQvB,OACE,uBAAK9C,IAAKA,EAAKrC,UAAWL,EAAMK,WAC9B,qBAAGA,UAAS,UAAK,sBAA0B,UAAS,gBAACmB,EAAA,EAAI,CAACP,UAAWA,EAAWQ,OAAO,yBACvF,gBAACgE,EAAA,EAAO,CACNC,OAAQhD,EAAIR,QACZyD,KAAMH,EACNI,UAAW5F,EAAM6F,mBAXFC,SAASC,gBAAgBC,cAA0B,QAAX,EAAAtD,EAAIR,eAAO,eAAEE,wBAAwB6D,QAE5EX,EAS0CtF,EAAM6F,kBAAoB7F,EAAM4F,WAE1F,uBAAKvF,UAAS,UAAK,mBAAuB,0CACxC,yBAAG,gBAACmB,EAAA,EAAI,CAACP,UAAWA,EAAWQ,OAAO,aACtC,qBAAGpB,UAAU,oBAAmB,gBAACmB,EAAA,EAAI,CAACP,UAAWA,EAAWQ,OAAO,eAK7E,C,sOCxBA,IAAM,EAAY,yBACZP,EAAYC,EAAA,mBAAiC,GAS7C,SAAU+E,EAA6BlG,G,UAC3C,EAMIA,EAAMmG,YALRC,EAAS,EAATA,UACAC,EAAgB,EAAhBA,iBACAC,EAAoB,EAApBA,qBACA9B,EAAe,EAAfA,gBACA+B,EAAgB,EAAhBA,iBAGkF,G,EAA9B,a,EAA8B,E,k5BAA5EC,EAAkB,KAAEC,EAAqB,KAE3CC,GAAS,SAUf,SAASlG,EAAmBmG,G,QACpBC,EAAgBN,EAAqBO,MAAK,SAAAC,GAAC,OAAIA,EAAE1G,GAAGK,aAAekG,CAAY,KAEhFC,aAAa,EAAbA,EAAexG,MAGM,QAAtB,EAAAoG,aAAkB,EAAlBA,EAAoBpG,UAAE,eAAEK,eAAgC,QAAjB,EAAAmG,aAAa,EAAbA,EAAexG,UAAE,eAAEK,cAG9DgG,EAAsBG,GAuBtBL,EAAiBK,GAfC,WAChBG,EAAA,gBAA8B,CAC5B3G,GAAIwG,EAAcxG,GAClBW,KAAM6F,EAAcxG,GACpBkC,YAAasE,EAActE,YAC3B0E,QAAShH,EAAMiH,MAAM7G,GACrB8G,UAAWlH,EAAMiH,MAAMlG,MACtB,CACDoG,OAAQ,kBACRC,WAAY,YACZC,WAAY,gBACZC,SAAU,eAEd,IAnBgB,WAEdb,EAAsBD,GACtBE,EAAOa,MAAMrG,EAAU,gBACzB,IAkBF,CAEA,OA3CA,aAAgB,WACTkF,IAGAI,GACHC,EAAsBJ,QAAAA,EAAoBmB,EAAA,QAAkBlB,IAChE,GAAG,CAAED,aAAgB,EAAhBA,EAAkBjG,GAAIgG,IAsCzB,gCACE,sBAAI/F,UAAU,iBACZ,gBAACmB,EAAA,EAAI,CAACP,UAAW,EAAWQ,OAAO,aAErC,uBAAKpB,UAAU,QACb,gBAAC,KAAa,CACZoH,YAAYjB,aAAkB,EAAlBA,EAAoBpG,IAAKJ,EAAMmG,YAAYuB,oBAAsB,KAC7EC,eAAe,gBACfC,eAAgB,SAAA5H,G,MACd,OACE,gBAACD,EAAA,EAAkB,iBACbC,EAAK,CACTM,UAAgC,QAAtB,EAAAkG,aAAkB,EAAlBA,EAAoBpG,UAAE,eAAEK,cAAeT,EAAME,KAAKE,GAAGK,WAC/DD,mBAAoBA,IAG1B,EACAqH,wBAAyB,kBAAM,gBAAC1C,EAAA,EAAc,KAAG,EACjD2C,eAAgB,CAAuB,QAAtB,EAAAtB,aAAkB,EAAlBA,EAAoBpG,UAAE,eAAEK,eAI7C,uBAAKJ,UAAU,yCACb,gBAAC,KAAU,CAAC0H,YAAU,EAACC,cAAehI,EAAMiI,QAC1C,uBAAK5H,UAAU,OACX+F,EAGE,gBAAChC,EAAA,EAAe,CACdI,gBAAiBA,EACjBlD,cAAetB,EAAMsB,cACrBd,mBAAoBA,IALtB,gBAACyE,EAAA,EAAsB,SAavC,C,gSCvFM,EAAY,kBAyBZ,SAAUiD,GAASlI,G,oBACjBmI,GAAgB,SAEdC,GAAmB,EAAAC,EAAA,KAAnBD,eACAE,EAAeC,EAAA,mBAA6BvI,EAAMiH,OAAlDqB,WACFE,EAAkBxI,EAAMyI,cAAcC,iBAAiB1I,EAAMiH,MAAM7G,IAEnEuI,EAAaJ,EAAA,sBAAgCvI,EAAMiH,OACnD2B,EAAuBR,EAAeS,EAAA,qBAEtCC,EAAe,SAA6B,MAC5CC,EAAkB,SAA6B,OAErD,EAAAC,EAAA,GAAyB,CACvBF,EAAa5G,QACb6G,EAAgB7G,SACflC,EAAMiJ,mBAOT,IAAMC,EAAkC,UAAa,GAE/CC,GAAY,OAAcnJ,EAAMiH,QAAUjH,EAAMyI,cAAcW,cAE9DC,GAAa,UAcbC,EAA+C,uBAAvBnB,EAAcoB,OAAmCf,GAAmBxI,EAAMyI,cAAce,oBAEhHC,KAAwBzJ,EAAMyI,cAAciB,yBAChD1J,EAAMmG,YAAYwD,4BAEpB,OACE,gBAAC,aAAiC,CAACC,MAAO,GACxC,gBAACC,EAAA,EAAiB,CAChBC,aAAc9J,EAAMiH,MAAM8C,cAC1BC,WAAYhK,EAAMgK,WAClBC,SAAUjK,EAAMiH,MAAM7G,GACtB8J,aAAcC,EAAA,QACdC,qBAAsBpK,EAAMoK,uBAG7BzB,GAAc,gBAAC0B,EAAA,EAAc,CAACC,OAAQtK,EAAMiH,MAAMqD,OAAQ1B,qBAAsBA,IAEjF,2BAASvI,UAAS,eAAUkK,EAAA,4BACxBjC,GAAcE,IACd,gBAACgC,EAAA,EAAoB,CACnBrK,IAAKH,EAAMiH,MAAM7G,GACjB6J,SAAUjK,EAAMiH,MAAM7G,GACtB8J,aAAclK,EAAMiH,MAAMqD,OAC1BG,QAASzK,EAAMyK,QACfC,QAAqB,QAAZ,EAAA1K,EAAM2K,cAAM,eAAED,QACvBE,UAAuB,QAAZ,EAAA5K,EAAM2K,cAAM,eAAEC,UACzBC,SAAsB,QAAZ,EAAA7K,EAAM2K,cAAM,eAAEE,SACxBC,YAAyB,QAAZ,EAAA9K,EAAM2K,cAAM,eAAEI,IAC3BC,UAA0B,QAAf,EAAY,QAAZ,EAAAhL,EAAM2K,cAAM,eAAEM,SAAC,QAAgB,QAAZ,EAAAjL,EAAM2K,cAAM,eAAEK,UAC5CE,QAAqB,QAAZ,EAAAlL,EAAM2K,cAAM,eAAEO,QACvB3B,KAAK,UACLjC,SAAS,cAGb,uBAAKjH,UAAWiJ,EAAwB,GAAK,UAC3C,gBAAC6B,EAAA,EAAiB,CAChBlE,MAAOjH,EAAMiH,MACbmE,QAAS,CACPC,YAAa,YACbC,OAAQ,oBAEVxG,KAA6B,uBAAvBqD,EAAcoB,KAAgC,MAAQ,aAKlE,gBAACgC,EAAA,EAAuB,CACtBC,MAAOxL,EAAMiH,MACb+C,WAAYhK,EAAMgK,WAClByB,UAAWzL,EAAMyL,UACjBC,iBAAkB,SAAAC,GAAM,OAAItC,EAAWqC,iBAAiBC,EAAQ3L,EAAM2K,OAAOI,IAAI,EACjFtC,cAAezI,EAAMyI,cACrBgC,QAASzK,EAAMyK,UAGhBtB,GACC,+BACE,gBAACyC,EAAA,EAAc,CACb3E,MAAOjH,EAAMiH,MACb4E,iBAAkB7L,EAAM6L,iBACxBC,aAAc,SAACC,GAAgB,MAAC,OAA+B,QAA/B,EAAA5D,EAAc6D,UAAU9J,eAAO,eAAE+J,YAAYF,EAAK,EAClFG,cAAe7C,EAAW6C,cAC1BC,sBAAuBnM,EAAMyI,cAAce,uBAKjD,gBAAC4C,EAAA,EAAiB,CAChBC,aAAcvD,EACd7B,MAAOjH,EAAMiH,MACbqF,iBAAkBtM,EAAMyI,cAAc6D,iBACtCC,YAAavM,EAAMuM,YACnBC,WACEnD,EAAWoD,mBAAmBzM,EAAMiH,MAAM7G,GAAIJ,EAAMyK,QAASzK,EAAMyI,cAAc6D,kBAEnFI,cAAe,CAAE1F,QAAShH,EAAMiH,MAAM7G,GAAI8G,UAAWlH,EAAMiH,MAAMlG,MACjE4L,6BAA8BC,EAAA,iCAGhC,gBAACC,EAAA,EAAoB,CACnB5F,MAAOjH,EAAMiH,MACb6F,aAAc9M,EAAM8M,aACpBP,YAAavM,EAAMuM,YACnBG,cAAe,CAAE1F,QAAShH,EAAMiH,MAAM7G,GAAI8G,UAAWlH,EAAMiH,MAAMlG,MACjEgM,oBAAqB/M,EAAMyI,cAAcsE,oBACzCV,aAActD,EACdiB,WAAYhK,EAAMgK,WAClBgD,aAAchN,EAAMgN,aACpBC,aAAcjN,EAAMiN,eAGrBxD,GACC,+BACE,gBAACvD,EAA4B,CAC3Be,MAAOjH,EAAMiH,MACbgB,OAAQ,IACR9B,YAAanG,EAAMmG,YACnB7E,cAAesL,EAAA,kCAKpB5M,EAAMkN,aACL,+BACE,gBAACC,EAAA,EAAyB,CACxBlG,MAAOjH,EAAMiH,MACbmG,wBAtHV,W,YACElE,EAAgChH,UAA4C,QAAjC,EAAwB,QAAxB,EAAAiG,aAAa,EAAbA,EAAe6D,iBAAS,eAAE9J,eAAO,eAAEmL,YAC7C,QAAjC,EAAwB,QAAxB,EAAAlF,aAAa,EAAbA,EAAe6D,iBAAS,eAAE9J,eAAO,SAAEoL,OACrC,EAoHUC,sBAlHV,W,QACOrE,EAAgChH,UAGJ,QAAjC,EAAwB,QAAxB,EAAAiG,aAAa,EAAbA,EAAe6D,iBAAS,eAAE9J,eAAO,SAAEsL,OACrC,EA8GUtB,cAAe7C,EAAW6C,cAC1BC,sBAAuBnM,EAAMyI,cAAce,oBAC3CiE,MAAOzN,EAAM0N,eAIjB,gBAACC,EAAA,EAAmB,MAGrBpF,EAAA,cAAwBvI,EAAMiH,QAAU,gBAAC1B,EAAmB,CAACK,UAAU,aAAavF,UAAU,qCAE/F,gBAACuN,EAAA,EAAa,CACZ3G,MAAOjH,EAAMiH,MACb4G,MAAO7N,EAAM6N,MACbC,aAAc9N,EAAMyI,cAAcqF,aAClC9D,WAAYhK,EAAMgK,WAClByB,UAAWzL,EAAMyL,UACjBc,YAAavM,EAAMuM,YACnBS,aAAchN,EAAMgN,aACpBC,aAAcjN,EAAMiN,aACpBP,cAAe,CAAE1F,QAAShH,EAAMiH,MAAM7G,GAAI8G,UAAWlH,EAAMiH,MAAMlG,QAGnE,+BACE,gBAACgN,EAAA,EAAa,CACZC,aAAchO,EAAMiH,MACpB+C,WAAYhK,EAAMgK,WAClBiE,cAAejO,EAAMiO,cACrBC,YAAalO,EAAMkO,YACnBlB,aAAchN,EAAMgN,aACpBC,aAAcjN,EAAMiN,aACpBkB,gBAAiB,SAACC,EAAGC,GAAI,OAAKC,EAAA,aAA8BF,EAAG,OAAF,wBACxDC,GAAI,CACP3D,QAAS1K,EAAM2K,OAAOD,QACtBE,UAAW5K,EAAM2K,OAAOC,UACxBC,SAAU7K,EAAM2K,OAAOE,SACvBJ,QAASzK,EAAMyK,QACfK,YAAa9K,EAAM2K,OAAOI,MAC1B,EACFU,UAAWzL,EAAMyL,UACjBX,YAAa9K,EAAM2K,OAAOI,OAKpC,C,mCChQA,SAAgB,kBAAoB,QAAQ,cAAgB,QAAQ,YAAc,QAAQ,YAAc,QAAQ,QAAU,QAAQ,oBAAsB,QAAQ,SAAW,QAAQ,IAAM,QAAQ,MAAQ,QAAQ,OAAS,QAAQ,SAAW,Q","sources":["file:///app/packages/libs/shared/src/components/curriculum-links/CurriculumLinkItem.tsx","file:///app/packages/libs/shared/src/enums/CurriculumType.ts","file:///app/packages/libs/shared/src/components/curriculum-links/CurriculumLinksEmptyState.tsx","file:///app/packages/libs/shared/src/components/curriculum-links/CurriculumLinks.tsx","file:///app/packages/libs/shared/src/components/curriculum-links/partial-loading/PartialCurriculumLinks.tsx","file:///app/packages/libs/shared/src/components/curriculum-links/partial-loading/partial-curriculum-links.scss","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/components/copyright-disclaimer/copyright-disclaimer.scss","file:///app/packages/libs/shared/src/components/copyright-disclaimer/CopyrightDisclaimer.tsx","file:///app/packages/libs/shared/src/components/curriculum-links/CurriculumLinksWithScrollbar.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/PlayPage.tsx","file:///app/packages/libs/shared/src/components/curriculum-links/curriculum-links.scss"],"sourcesContent":["import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './curriculum-links.scss';\n\ninterface CurriculumLinkItemProps {\n data: Presentation;\n onChangeCurriculum: (id: string) => any;\n selected: boolean;\n}\n\nexport function CurriculumLinkItem(props: CurriculumLinkItemProps): JSX.Element {\n const { data: curriculumTag } = props;\n\n return (\n <DivButton\n key={curriculumTag.id}\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ${styles.tag} ${props.selected ? styles.selected : ''}`}\n onClick={() => props.onChangeCurriculum(curriculumTag.id.toString())}\n >\n <div className={`bg-white ${styles.cover} rounded-circle border`}>\n <img\n src={ImageHelper.createUrl(curriculumTag.cover.url, { size: ImageSize.Small })}\n alt={curriculumTag.name}\n className='rounded-circle'\n />\n </div>\n <div className='ms-2'>\n {curriculumTag.name}\n </div>\n </DivButton>\n );\n}","export enum CurriculumType {\n Subject = 'CurriculumSubject',\n Audience = 'CurriculumAudience',\n Area = 'CurriculumArea',\n Leaf = 'CurriculumLeaf'\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.curriculumLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CurriculumLinksEmptyStateProps {\n emptyStateUrl: string;\n}\n\nexport function CurriculumLinksEmptyState(props: CurriculumLinksEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='pt-3'>\n <EmptyState.Image src={props.emptyStateUrl} altText={getPhrase('emptyInfo')} size='small'/>\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='emptyHeading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='emptyInfo' />\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { PartialCurriculumLinks } from 'libs/shared/components/curriculum-links/partial-loading/PartialCurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumType } from 'libs/shared/enums/CurriculumType';\nimport { Curriculum } from 'libs/shared/interfaces';\n\nimport { CurriculumLinksEmptyState } from './CurriculumLinksEmptyState';\n\nimport styles from './curriculum-links.scss';\n\nconst BRACKET_SEGMENT_REGEX = /(.*)\\s\\((.*)?\\)/i;\n\nconst namespace = 'shared.curriculumLinks';\n\nconst BASE_PILL_CLASS = 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block';\n\ninterface CurriculumStructure {\n [CurriculumType.Subject]: Curriculum<CurriculumType.Subject>;\n [CurriculumType.Audience]: Curriculum<CurriculumType.Audience>;\n areasAndLeaves: Array<{\n [CurriculumType.Area]: Curriculum<CurriculumType.Area>[];\n [CurriculumType.Leaf]: Curriculum<CurriculumType.Leaf>[];\n }>;\n}\n\ninterface CurriculumLeafProps {\n leaf: Curriculum<CurriculumType.Leaf>;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n uiContainsCodes: boolean;\n}\n\nfunction CurriculumLeaf(props: CurriculumLeafProps): JSX.Element {\n function getCurriculumCodeClass(): string {\n const baseClass = BASE_PILL_CLASS + ' bg-white border';\n\n // If a leaf has no code but the rest of the UI has leaf nodes w/ codes, we show a special \"No code\" pill\n if (!props.leaf.name && props.uiContainsCodes)\n return baseClass + ' border-secondary text-secondary';\n\n return baseClass + ' border-dark';\n }\n\n const codeRef = React.useRef<HTMLDivElement>();\n\n React.useEffect(() => {\n if (!codeRef.current)\n return;\n\n const { width } = codeRef.current.getBoundingClientRect();\n\n props.trySetMaxCodeWidth(width);\n }, [codeRef.current]);\n\n return (\n <div className='d-flex'>\n {(() => {\n if (!props.leaf.description)\n return <p className='m-0' dangerouslySetInnerHTML={{ __html: props.leaf.name }} />;\n\n /**\n * If a leaf has no code but the rest of the UI has leaf nodes\n * with codes, we show a special \"No code\" pill. Example: https://imgur.com/3L1Ela3\n */\n if (!props.leaf.name && props.uiContainsCodes) {\n return (\n <>\n <div\n className='me-1 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <h5 ref={codeRef} className={getCurriculumCodeClass()}>\n <Text namespace={namespace} phrase='noCode' />\n </h5>\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />\n </>\n );\n }\n\n /**\n * If a leaf has no code and the rest of the UI leaf nodes have no code, we just\n * display the description with a bullet point. Example: https://imgur.com/jzJvmWs\n */\n if (!props.leaf.name && !props.uiContainsCodes)\n return <p className='m-0' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />;\n\n return (\n <>\n <div\n className='me-1 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <h5 ref={codeRef} className={getCurriculumCodeClass()}>{props.leaf.name}</h5>\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />\n </>\n );\n })()}\n </div>\n );\n}\n\ninterface CurriculumSubjectProps {\n linkSet: CurriculumStructure;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n}\n\nfunction CurriculumSubject(props: CurriculumSubjectProps): JSX.Element {\n const areaAndLeafSets: { [areaText: string]: Curriculum<CurriculumType.Leaf>[]; } = {};\n\n let uiContainsCodes = false;\n\n props.linkSet.areasAndLeaves.forEach(areaAndLeafSet => {\n const areaText = areaAndLeafSet[CurriculumType.Area].map(ca => ca.name).join(' - ');\n\n if (areaAndLeafSets[areaText]) {\n areaAndLeafSet[CurriculumType.Leaf].forEach(leaf => {\n areaAndLeafSets[areaText].push(leaf);\n\n // We need the info on if _any_ leaf node has a code in it. See why in the comments in `<CurriculumLeaf />`\n if (leaf.name)\n uiContainsCodes = true;\n });\n\n return;\n }\n\n areaAndLeafSets[areaText] = areaAndLeafSet[CurriculumType.Leaf];\n });\n\n function getAudienceText(): string {\n const audienceSegment = props.linkSet[CurriculumType.Audience].name;\n const subjectSegment = props.linkSet[CurriculumType.Subject].name;\n\n /**\n * In some curriculums, such as the UK curriculum, the audience string may contain a year group\n * in brackets. For example, it may be \"Lower Key Stage 2 (Year 4)\".\n * This regex will pull that segment out if it exists.\n */\n const audienceBracketSegments = audienceSegment.match(BRACKET_SEGMENT_REGEX);\n\n if (audienceBracketSegments)\n return `${audienceBracketSegments[1]} • ${audienceBracketSegments[2]} • ${subjectSegment}`;\n\n return `${audienceSegment} • ${subjectSegment}`;\n }\n\n function getLeafStyleClass(leaf: Curriculum<CurriculumType.Leaf>): string {\n const className = 'mb-2';\n\n if (!leaf.name && !uiContainsCodes)\n return className + ' ms-4 ' + styles.leafDescriptionOnly;\n\n return className;\n }\n\n return (\n <>\n <h3 className={`${BASE_PILL_CLASS} text-white bg-dark-blue fw-normal me-1 mb-2`}>\n {getAudienceText()}\n </h3>\n\n <div className={`me-2 ${styles.curriculumSubject}`}>\n {Object.keys(areaAndLeafSets).map((areaText, i) => {\n return (\n <div key={i} className={styles.areaLeafSet} >\n {areaText && <h4 className='mb-1 font-size-normal'>{areaText}</h4>}\n <ul className='list-unstyled'>\n {areaAndLeafSets[areaText].map(leaf => (\n <li key={leaf.id} className={getLeafStyleClass(leaf)}>\n <CurriculumLeaf\n leaf={leaf}\n codeWidth={props.codeWidth}\n trySetMaxCodeWidth={props.trySetMaxCodeWidth}\n uiContainsCodes={uiContainsCodes}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </div>\n </>\n );\n}\n\ninterface CurriculumLinksProps {\n curriculumLinks?: Curriculum[][];\n emptyStateUrl: string;\n onChangeCurriculum?: (id: string) => void;\n}\n\nexport function CurriculumLinks(props: CurriculumLinksProps): JSX.Element {\n const [ codeWidth, setCodeWidth ] = React.useState(0);\n\n function trySetMaxCodeWidth(width: number): void {\n /**\n * The width of the curriculum code column should be identical for each leaf node, meaning\n * the leaf description text will be perfectly vertically aligned all the way down.\n * See here for example: https://imgur.com/MbganZf\n * \n * This is achieved by us setting the state for the maximum code width, and forcing all\n * smaller codes to abide by that max width.\n * \n * This value is used in the `<CurriculumLeaf />` component.\n */\n setCodeWidth(currentVal => {\n if (currentVal >= width)\n return currentVal;\n\n return width;\n });\n }\n\n /**\n * Here, we're taking the structure of links from the backend, and restructuring it in a way\n * that resembles the structure of our UI more closely. The general idea is:\n * \n * CurriculumAudience - CurriculumSubject\n * CurriculumAreas\n * CurriculumLeaves\n */\n const curriculumLinkSets: { [subjectAndAudienceIdKey: string]: CurriculumStructure } = {};\n\n props.curriculumLinks?.forEach(linkSet => {\n let subject: Curriculum<CurriculumType.Subject> = null;\n let audience: Curriculum<CurriculumType.Audience> = null;\n const areas: Curriculum<CurriculumType.Area>[] = [];\n const leaves: Curriculum<CurriculumType.Leaf>[] = [];\n\n linkSet.forEach(curriculumObj => {\n switch (curriculumObj.type) {\n case CurriculumType.Subject:\n subject = curriculumObj as Curriculum<CurriculumType.Subject>;\n break;\n case CurriculumType.Audience:\n audience = curriculumObj as Curriculum<CurriculumType.Audience>;\n break;\n case CurriculumType.Area:\n areas.push(curriculumObj as Curriculum<CurriculumType.Area>);\n break;\n case CurriculumType.Leaf:\n leaves.push(curriculumObj as Curriculum<CurriculumType.Leaf>);\n break;\n default:\n break;\n }\n });\n\n const key = `${subject.id}:${audience.id}`;\n\n if (curriculumLinkSets[key]) {\n curriculumLinkSets[key].areasAndLeaves.push({\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n });\n\n return;\n }\n\n curriculumLinkSets[key] = {\n [CurriculumType.Subject]: subject,\n [CurriculumType.Audience]: audience,\n areasAndLeaves: [{\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n }]\n };\n });\n\n if (!props.curriculumLinks)\n return <PartialCurriculumLinks />;\n\n if (!props.curriculumLinks?.length) {\n return <CurriculumLinksEmptyState emptyStateUrl={props.emptyStateUrl} />;\n }\n\n return (\n <ul className='list-unstyled m-0'>\n {Object.keys(curriculumLinkSets).map((linkSetKey, i) => (\n <li key={`linkset-${i}`} className={styles.curriculumSet}>\n <CurriculumSubject\n linkSet={curriculumLinkSets[linkSetKey]}\n trySetMaxCodeWidth={trySetMaxCodeWidth}\n codeWidth={codeWidth}\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport styles from './partial-curriculum-links.scss';\n\nconst PartialCurriculumLinkSection = () => (\n <>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ${styles.audience}`} />\n <div>\n <div className={`partial-loading-background mb-1 ${styles.area}`} />\n\n <div className='mb-2 d-flex'>\n <div className={`me-1 align-self-start ${styles.code}`}>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100`} />\n </div>\n \n <div className={`partial-loading-background ${styles.description}`} />\n </div>\n </div>\n </>\n);\n\nexport function PartialCurriculumLinks(): JSX.Element {\n return (\n <div>\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div>\n <PartialCurriculumLinkSection />\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"audience\":\"vDcrq\",\"area\":\"GXhoW\",\"code\":\"goKaS\",\"description\":\"vFew6\"};","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}>&nbsp;</span>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"copyrightDisclaimer\":\"z8YoI\",\"overlayContainer\":\"eJDbJ\"};","import React from 'react';\nimport { Overlay } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\n\nimport styles from './copyright-disclaimer.scss';\n\nconst namespace = 'shared.copyrightDisclaimer';\n\nconst CONTAINER_HEIGHT = 150; // px\n\ninterface CopyrightDisclaimerProps {\n placement: Placement;\n overflowPlacement?: Placement;\n className?: string;\n}\n\nexport function CopyrightDisclaimer(props: CopyrightDisclaimerProps) {\n const [ ref, isHovering ] = useHoverIntent<HTMLDivElement>({});\n\n function preventOverflow() {\n const spaceBelow = document.documentElement.clientHeight - ref.current?.getBoundingClientRect().bottom;\n\n return spaceBelow < CONTAINER_HEIGHT;\n }\n\n return (\n <div ref={ref} className={props.className}>\n <p className={`${styles.copyrightDisclaimer} mb-1`}><Text namespace={namespace} phrase='copyrightDisclaimer' /></p>\n <Overlay\n target={ref.current}\n show={isHovering}\n placement={props.overflowPlacement && preventOverflow() ? props.overflowPlacement : props.placement}\n >\n <div className={`${styles.overlayContainer} mw-100 bg-white border rounded-3 p-2`}>\n <p><Text namespace={namespace} phrase='warning' /></p>\n <p className='fw-semibold mb-0'><Text namespace={namespace} phrase='sharing' /></p>\n </div>\n </Overlay>\n </div>\n );\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, PresentationDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { CurriculumLinkItem } from 'libs/shared/components/curriculum-links/CurriculumLinkItem';\nimport { PartialTagItem } from 'libs/shared/components/tags/PartialTagItem';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DynamicWidget } from 'libs/shared/components/widgets/dynamic-widget';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurriculumData, Presentation, Video } from 'libs/shared/interfaces';\n\nimport { PartialCurriculumLinks } from './partial-loading/PartialCurriculumLinks';\nimport { CurriculumLinks } from './CurriculumLinks';\n\nconst namespace = 'shared.curriculumLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CurriculumLinksWithScrollbarProps {\n video: Video;\n curriculums: CurriculumData;\n emptyStateUrl: string;\n height?: number;\n}\n\nexport function CurriculumLinksWithScrollbar(props: CurriculumLinksWithScrollbarProps): JSX.Element {\n const {\n hasLoaded,\n activeCurriculum,\n availableCurriculums,\n curriculumLinks,\n updateCurriculum\n } = props.curriculums;\n\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>();\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (!hasLoaded)\n return;\n\n if (!selectedCurriculum)\n setSelectedCurriculum(activeCurriculum ?? ArrayHelper.first(availableCurriculums));\n }, [ activeCurriculum?.id, hasLoaded ]);\n\n function onChangeCurriculum(curriculumId: string): void {\n const newCurriculum = availableCurriculums.find(c => c.id.toString() === curriculumId);\n\n if (!newCurriculum?.id)\n return;\n\n if (selectedCurriculum?.id?.toString() === newCurriculum?.id?.toString())\n return;\n\n setSelectedCurriculum(newCurriculum);\n\n const onError = () => {\n // If the request to change curriculum fails, we reset the select state and alert the user\n setSelectedCurriculum(selectedCurriculum);\n alerts.error(getPhrase('updateFailed'));\n };\n\n const onSuccess = () => {\n AnalyticsHelper.logUserAction({\n id: newCurriculum.id,\n name: newCurriculum.id,\n description: newCurriculum.description,\n videoId: props.video.id,\n videoName: props.video.name\n }, {\n entity: EntityType.Presentation,\n actionType: UserAction.Select,\n descriptor: PresentationDescriptor.Curriculum,\n location: LocationContext.PlayPage\n });\n };\n\n updateCurriculum(newCurriculum, onSuccess, onError);\n }\n\n return (\n <>\n <h2 className='h5 me-2 h-100'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n <div className='mb-2'>\n <DynamicWidget\n collection={selectedCurriculum?.id ? props.curriculums.nonEmptyCurriculums : null}\n childClassName='flex-shrink-0'\n childComponent={props => {\n return (\n <CurriculumLinkItem\n {...props}\n selected={selectedCurriculum?.id?.toString() === props.data.id.toString()}\n onChangeCurriculum={onChangeCurriculum}\n />\n );\n }}\n partialLoadingComponent={() => <PartialTagItem />}\n widgetDataDeps={[selectedCurriculum?.id?.toString()]}\n />\n </div>\n\n <div className='rounded border mb-4 position-relative'>\n <Scrollbars autoHeight autoHeightMax={props.height}>\n <div className='p-3'>\n {!hasLoaded\n ? <PartialCurriculumLinks />\n : (\n <CurriculumLinks\n curriculumLinks={curriculumLinks}\n emptyStateUrl={props.emptyStateUrl}\n onChangeCurriculum={onChangeCurriculum}\n />\n )}\n </div>\n </Scrollbars>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { CopyrightDisclaimer } from 'libs/shared/components/copyright-disclaimer/CopyrightDisclaimer';\nimport { CurriculumLinksWithScrollbar } from 'libs/shared/components/curriculum-links/CurriculumLinksWithScrollbar';\nimport { PlayPageResources } from 'libs/shared/components/play-page/resources/PlayPageResources';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { VideoAtAGlance } from 'libs/shared/components/video-at-a-glance/VideoAtAGlance';\nimport { hasGlanceData } from 'libs/shared/components/video-at-a-glance/VideoAtAGlanceUtils';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { VideoDetailsPartial } from 'libs/shared/components/video-details/VideoDetailsPartial';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CanFavouriteFunc, Clip, CurrentUser, CurriculumData, FavouriteFunc, InteractiveMetadata, PointOfInterest, PresentationAudience, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { PlayPageClips } from './components/clips/PlayPageClips';\nimport { PlayPageInteractives } from './components/interactives/PlayPageInteractives';\nimport { getAppLinks } from './PlayPageUtils';\n\nconst namespace = 'shared.playPage';\n\ninterface PlayPageProps {\n video: Video;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n yearGroups: YearGroup[];\n imageCdnUrl: string;\n relatedVideos: RelatedVideosHash;\n audiences: PresentationAudience[];\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n glanceTheme?: Theme;\n glanceLoaded: boolean;\n currentUser: CurrentUser;\n pointsOfInterest?: PointOfInterest[];\n playNext: boolean;\n shareId?: string;\n curriculums: CurriculumData;\n featureAccess: VideoFeaturesHash;\n params?: PlayViewQueryParams;\n canManageVideoAccess: boolean;\n tableOfContentsId: string;\n}\n\nexport function PlayPage(props: PlayPageProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n const canViewPublicly = props.featureAccess.canWatchPublicly(props.video.id);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.video);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const resourcesRef = React.useRef<HTMLDivElement>(null);\n const interactivesRef = React.useRef<HTMLDivElement>(null);\n\n useTableOfContentsScroll([\n resourcesRef.current,\n interactivesRef.current\n ], props.tableOfContentsId);\n\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const hasGlance = hasGlanceData(props.video) && props.featureAccess.canViewGlance;\n\n const appLinkFns = getAppLinks();\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || (!canViewPublicly && props.featureAccess.canViewPublicLayout);\n\n const hasCurriculumLinks = !!(props.featureAccess.canViewCurriculumLinks &&\n props.curriculums.customerHasCurriculumLinks);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <RestrictionBanner\n restrictions={props.video._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.video.id}\n objectTypeId={MasterType.Video}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n \n {isArchived && <ArchivedBanner typeId={props.video.typeId} hasStudentExperience={hasStudentExperience}/>}\n \n <section className={`mb-2 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}>\n {(canConsume || canViewPublicly) &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n shareId={props.shareId}\n context={props.params?.context}\n contextId={props.params?.contextId}\n playNext={props.params?.playNext}\n moviesAndTv={props.params?.mtv}\n startTime={props.params?.t ?? props.params?.startTime}\n endTime={props.params?.endTime}\n mode='default'\n location='play-page'\n />\n }\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.video}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n type={playerContext.mode === 'picture-in-picture' ? 'pip' : 'public'}\n />\n </div>\n </section>\n\n <PlayPageTitleAndActions\n media={props.video}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n getSeriesAppLink={series => appLinkFns.getSeriesAppLink(series, props.params.mtv)}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n />\n \n {hasGlance && (\n <section>\n <VideoAtAGlance\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n </section>\n )}\n\n <PlayPageResources\n containerRef={resourcesRef}\n video={props.video}\n canViewResources={props.featureAccess.canViewResources}\n imageCdnUrl={props.imageCdnUrl}\n getAppLink={\n appLinkFns.getResourceAppLink(props.video.id, props.shareId, props.featureAccess.canViewResources)\n }\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n />\n\n <PlayPageInteractives\n video={props.video}\n interactives={props.interactives}\n imageCdnUrl={props.imageCdnUrl}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n containerRef={interactivesRef}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n />\n\n {hasCurriculumLinks && (\n <section>\n <CurriculumLinksWithScrollbar\n video={props.video}\n height={MINIMUM_GLANCE_HEIGHT}\n curriculums={props.curriculums}\n emptyStateUrl={ImageUrls.EmptyStates.CURRICULUM_LINKS}\n />\n </section>\n )}\n\n {props.glanceLoaded ? (\n <section>\n <VideoDetailsWithScrollbar\n video={props.video}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n theme={props.glanceTheme}\n />\n </section>\n ) : (\n <VideoDetailsPartial />\n )}\n\n {VideoHelper.isBroadcast(props.video) && <CopyrightDisclaimer placement='bottom-end' className='d-flex justify-content-end mt-n2' />}\n\n <PlayPageClips\n video={props.video}\n clips={props.clips}\n canViewClips={props.featureAccess.canViewClips}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n imageCdnUrl={props.imageCdnUrl}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n />\n\n <section>\n <RelatedVideos\n currentVideo={props.video}\n yearGroups={props.yearGroups}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.params.context,\n contextId: props.params.contextId,\n playNext: props.params.playNext,\n shareId: props.shareId,\n moviesAndTv: props.params.mtv\n })}\n audiences={props.audiences}\n moviesAndTv={props.params.mtv}\n />\n </section>\n </LanguageNamespaceContext.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"curriculumSubject\":\"GvGYH\",\"curriculumSet\":\"d7RK0\",\"areaLeafSet\":\"XRTAe\",\"closeButton\":\"N3l5Q\",\"heading\":\"hAxR4\",\"leafDescriptionOnly\":\"h66ke\",\"dropdown\":\"CsG6G\",\"tag\":\"rdLqY\",\"cover\":\"etwaD\",\"active\":\"aDLMe\",\"selected\":\"BMrSd\"};"],"names":["CurriculumLinkItem","props","curriculumTag","data","key","id","className","selected","onClick","onChangeCurriculum","toString","src","cover","url","size","alt","name","CurriculumType","namespace","getPhrase","LanguageService","CurriculumLinksEmptyState","EmptyState","emptyStateUrl","altText","Text","phrase","BRACKET_SEGMENT_REGEX","BASE_PILL_CLASS","CurriculumLeaf","getCurriculumCodeClass","baseClass","leaf","uiContainsCodes","codeRef","current","width","getBoundingClientRect","trySetMaxCodeWidth","description","style","minWidth","codeWidth","ref","dangerouslySetInnerHTML","__html","CurriculumSubject","audienceSegment","subjectSegment","audienceBracketSegments","areaAndLeafSets","getLeafStyleClass","linkSet","areasAndLeaves","forEach","areaAndLeafSet","areaText","Area","map","ca","join","Leaf","push","Audience","Subject","match","Object","keys","i","CurriculumLinks","setCodeWidth","currentVal","curriculumLinkSets","curriculumLinks","subject","audience","areas","leaves","curriculumObj","type","length","linkSetKey","PartialCurriculumLinks","PartialCurriculumLinkSection","PartialTagItem","tagClass","classNames","CONTAINER_HEIGHT","CopyrightDisclaimer","isHovering","Overlay","target","show","placement","overflowPlacement","document","documentElement","clientHeight","bottom","CurriculumLinksWithScrollbar","curriculums","hasLoaded","activeCurriculum","availableCurriculums","updateCurriculum","selectedCurriculum","setSelectedCurriculum","alerts","curriculumId","newCurriculum","find","c","AnalyticsHelper","videoId","video","videoName","entity","actionType","descriptor","location","error","ArrayHelper","collection","nonEmptyCurriculums","childClassName","childComponent","partialLoadingComponent","widgetDataDeps","autoHeight","autoHeightMax","height","PlayPage","playerContext","hasPermissions","usePermissions","canConsume","VideoHelper","canViewPublicly","featureAccess","canWatchPublicly","isArchived","hasStudentExperience","PermissionName","resourcesRef","interactivesRef","useTableOfContentsScroll","tableOfContentsId","shouldPlayOnExitImmersiveReader","hasGlance","canViewGlance","appLinkFns","showPlayerPlaceholder","mode","canViewPublicLayout","hasCurriculumLinks","canViewCurriculumLinks","customerHasCurriculumLinks","value","RestrictionBanner","restrictions","_restrictions","yearGroups","objectId","objectTypeId","MasterType","canManageVideoAccess","ArchivedBanner","typeId","SeoConstants","GlobalPlayerConsumer","shareId","context","params","contextId","playNext","moviesAndTv","mtv","startTime","t","endTime","PlayerPlaceholder","appLink","application","action","PlayPageTitleAndActions","media","audiences","getSeriesAppLink","series","VideoAtAGlance","pointsOfInterest","setStartTime","time","playerRef","currentTime","getTagAppLink","suppressInteractivity","PlayPageResources","containerRef","canViewResources","imageCdnUrl","getAppLink","getResourceAppLink","analyticsData","resourceThumbnailFallbackUrl","ImageUrls","PlayPageInteractives","interactives","canViewInteractives","setFavourite","canFavourite","glanceLoaded","VideoDetails","onLaunchImmersiveReader","isPaused","pause","onExitImmersiveReader","play","theme","glanceTheme","VideoDetailsPartial","PlayPageClips","clips","canViewClips","RelatedVideos","currentVideo","relatedVideos","currentUser","getVideoAppLink","v","opts","VideoAppLinkHelper"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[32],{94644:(e,a,t)=>{t.d(a,{r:()=>u});var i=t(50242),d=t(81886),n=t(67058),s=t(14553),r=t(49267),o=t(49075),c={notFound:n.d,forbidden:{rating:s.q,yearLevel:s.q,region:r.a,privacy:s.q},badRequest:o._};function u(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var n;n="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),a);n&&d.Q.Ry.isStatusCodeError(n)&&(n!==i.o.NotFound?n!==i.o.Forbidden?t.badRequest||d.Q.Ry.throw(new s.badRequest):t.forbidden||d.Q.Ry.throw(new s.forbidden.privacy):t.notFound||d.Q.Ry.throw(new s.notFound))}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var i=t(32735),d=t(94644);function n(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){s.forEach((function(e){(0,d.r)(e.statusCode,a,t)}))}),[n(s),a,t])}},27478:(e,a,t)=>{t.r(a),t.d(a,{PlayClipView:()=>x});var i=t(32735),d=t(50242),n=t(23481),s=t(20354),r=t(65858),o=t(78417),c=t(16714),u=t(67058),l=t(33803),v=t(43012),p=t(39151),h=t(1666),m=t(20768),f=t(28907),g=t(31949),C=t(1575),y=t(27995),F=t(91286),b=t(22902),V=t(15311),w=t(79612),P=t(76753),q=t(56871),B=t(7179),I=t(49948),_=t(36873),R=t(27638),k=t(44110),A=t(35014),O=t(97816),T=n.T.encloseNamespace("shared.playClip"),j={notFound:u.d,forbidden:{privacy:l.G}};function x(e){var a,t,n,u,l,x,E,G=e.queryParams,M=G.context,U=G.contextId,L=G.mtv,N=(0,V.r)().hasProduct,Q=(0,R.u)(r.LZ.PlayClip),S=Q.setFavourite,D=Q.canFavourite,H=(0,b.T)().hasPermissions,Z=(0,A.I)(),z=s.a.useBasicFetch(g.N.currentUser()),J=s.a.useBasicFetch(p.L.config()),K=s.a.useBasicFetch(Z.canViewClips&&v.e.clip(e.id)),W=s.a.useBasicFetch(Z.canViewInteractives&&m.b.videoInteractives(e.id)),X=s.a.useBasicFetch(!!(null===(a=K.data)||void 0===a?void 0:a._parentVideo)&&C.R.video(K.data._parentVideo.id));(0,O.V)([X.data]);var Y=s.a.useBasicFetch(!!(null===(t=K.data)||void 0===t?void 0:t._parentVideo)&&Z.canViewClips&&v.e.videoClips(K.data._parentVideo.id)),$=s.a.useBasicFetch(K.statusCode===d.o.Forbidden&&v.e.clip(e.id,o.r.StripMetadata)),ee=(0,_.k)({video:X.data,context:M,contextId:U,moviesAndTv:L,currentUser:z.data}),ae=(0,k.i)(),te=s.a.useBasicFetch((null===(n=z.data)||void 0===n?void 0:n.isAuthenticated)&&h.h.yearGroups(z.data.customerId)),ie=H(c.C.ViewVideoGlance)&&(null===(l=null===(u=K.data)||void 0===u?void 0:u.glance)||void 0===l?void 0:l.theme),de=s.a.useBasicFetch(ie&&f.r.themeImages(K.data.glance.theme,K.data.glance.type)),ne=(0,I.l)(e.id,!0);return(0,w.M)(P.CG.getClipMetadata({content:K.data,phraseContext:{phraseHandler:T,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"}})),(0,F.v)(K,j,{forbidden:!0}),(0,O.V)(null!==(x=ee.videos)&&void 0!==x?x:[]),(0,y.b)($),(0,B.P)({id:e.id,app:"clips"}),K.data&&z.hasCompleted&&J.hasCompleted&&ne.hasCompleted?i.createElement(q.N,{clip:K.data,clips:Y.data,interactives:W.data,originalVideo:X.data,currentUser:z.data,yearGroups:te.data,relatedVideos:"playlist"===M?ee:Object.assign(Object.assign({},ee),{videos:[]}),canFavourite:D,setFavourite:S,hasProduct:N,queryParams:e.queryParams,audiences:ae.data,imageCdnUrl:J.data.imageCdnUrl,canManageVideoAccess:H(c.C.ManageVideoAccess),pointsOfInterest:ne.items,glanceTheme:de.data,glanceLoaded:!ie||de.hasCompleted,featureAccess:Z,tableOfContentsId:null===(E=e.queryParams)||void 0===E?void 0:E.scrollTo}):i.createElement(i.Fragment,null)}x.defaultProps={queryParams:{}}}}]);
2
+ //# sourceMappingURL=32-2abdd88255-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/32-2abdd88255-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/PlayClipView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayClip } from 'shared/components/play-clip/PlayClip';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst clipErrors = {\n notFound: NotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface PlayClipViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nPlayClipView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayClipView(props: PlayClipViewProps): JSX.Element {\n const { context, contextId, mtv } = props.queryParams;\n\n const { hasProduct } = useProducts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayClip);\n const { hasPermissions } = usePermissions();\n\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(featureAccess.canViewClips && ClipRequests.clip(props.id));\n\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n const video = Flight.useBasicFetch<Video>(\n !!clip.data?._parentVideo && VideoRequests.video(clip.data._parentVideo.id)\n );\n useVideoMixin([video.data]);\n\n const childClips = Flight.useBasicFetch<Clip[]>(\n !!clip.data?._parentVideo && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n\n const strippedClip = Flight.useBasicFetch<Clip>(clip.statusCode === HttpStatus.Forbidden &&\n ClipRequests.clip(props.id, PermissionFilterOption.StripMetadata));\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n clip.data?.glance?.theme;\n \n const glanceTheme = Flight.useBasicFetch<Theme>(\n shouldFetchTheme &&\n ThemeRequests.themeImages(clip.data.glance.theme, clip.data.glance.type)\n );\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({\n content: clip.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n }\n }));\n\n useHandleObjectError(clip, clipErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(strippedClip);\n useDeepLinks({ id: props.id, app: 'clips' });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n clip={clip.data}\n clips={childClips.data}\n interactives={interactives.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n // we only show up next videos for clips in a playlist\n relatedVideos={context === 'playlist' ? relatedVideos : { ...relatedVideos, videos: []}}\n canFavourite={canFavourite}\n setFavourite={setFavourite}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n imageCdnUrl={config.data.imageCdnUrl}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest.items}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.scrollTo}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","clipErrors","PlayClipView","props","queryParams","context","contextId","mtv","hasProduct","u","setFavourite","canFavourite","hasPermissions","featureAccess","currentUser","config","clip","canViewClips","id","interactives","canViewInteractives","video","data","_parentVideo","childClips","strippedClip","relatedVideos","moviesAndTv","audiences","yearGroups","isAuthenticated","customerId","shouldFetchTheme","glance","theme","glanceTheme","type","pointsOfInterest","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","videos","app","hasCompleted","clips","originalVideo","imageCdnUrl","canManageVideoAccess","items","glanceLoaded","tableOfContentsId","scrollTo","defaultProps"],"sourceRoot":""}