@clickview/lite 0.49.0-rc.2 → 0.49.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/4291-lite-69960aaab9.chunk.css +23 -0
- package/dist/css/6723-lite-69960aaab9.chunk.css +23 -0
- package/dist/css/9437-lite-69960aaab9.chunk.css +23 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{6375-f6cac7d19c-lite.chunk.js → 1539-df427c5b98-lite.chunk.js} +2 -2
- package/dist/scripts/1539-df427c5b98-lite.chunk.js.map +1 -0
- package/dist/scripts/194-918a27a783-lite.chunk.js +2 -0
- package/dist/scripts/194-918a27a783-lite.chunk.js.map +1 -0
- package/dist/scripts/{3042-d531f193aa-lite.chunk.js → 3042-32e303014a-lite.chunk.js} +2 -2
- package/dist/scripts/{3042-d531f193aa-lite.chunk.js.map → 3042-32e303014a-lite.chunk.js.map} +1 -1
- package/dist/scripts/32-cf9b8ba599-lite.chunk.js +2 -0
- package/dist/scripts/32-cf9b8ba599-lite.chunk.js.map +1 -0
- package/dist/scripts/{3854-6b20ca6c3b-lite.chunk.js → 3854-9e1422da99-lite.chunk.js} +2 -2
- package/dist/scripts/3854-9e1422da99-lite.chunk.js.map +1 -0
- package/dist/scripts/4291-4ea61b3610-lite.chunk.js +2 -0
- package/dist/scripts/4291-4ea61b3610-lite.chunk.js.map +1 -0
- package/dist/scripts/6723-ece2125bab-lite.chunk.js +2 -0
- package/dist/scripts/6723-ece2125bab-lite.chunk.js.map +1 -0
- package/dist/scripts/{7268-d9bf6e2c2a-lite.chunk.js → 7268-a8484f7697-lite.chunk.js} +2 -2
- package/dist/scripts/{7268-d9bf6e2c2a-lite.chunk.js.map → 7268-a8484f7697-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9087-48c8bfbc09-lite.chunk.js → 9087-55e2aad6ad-lite.chunk.js} +2 -2
- package/dist/scripts/{9087-48c8bfbc09-lite.chunk.js.map → 9087-55e2aad6ad-lite.chunk.js.map} +1 -1
- package/dist/scripts/9437-d9c671743c-lite.chunk.js +2 -0
- package/dist/scripts/9437-d9c671743c-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-1335ff3786.min.js → bundle-0f5cfcd378.min.js} +3 -3
- package/dist/scripts/bundle-0f5cfcd378.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/194-6131a555c8-lite.chunk.js +0 -2
- package/dist/scripts/194-6131a555c8-lite.chunk.js.map +0 -1
- package/dist/scripts/32-5739e73587-lite.chunk.js +0 -2
- package/dist/scripts/32-5739e73587-lite.chunk.js.map +0 -1
- package/dist/scripts/3854-6b20ca6c3b-lite.chunk.js.map +0 -1
- package/dist/scripts/6375-f6cac7d19c-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-1335ff3786.min.js.map +0 -1
- /package/dist/css/{6375-lite-69960aaab9.chunk.css → 1539-lite-69960aaab9.chunk.css} +0 -0
- /package/dist/scripts/{bundle-1335ff3786.min.js.LICENSE.txt → bundle-0f5cfcd378.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3854],{71020:(e,t,a)=>{a.d(t,{_:()=>d});var n=a(32735),r=a(80247),i=a(34152),l=a(83914),o=a(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function d(e){var t,a,d=(t=(0,i.YD)(),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,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.")}()),u=d[0],m=d[1];return n.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),n.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:u},e.isFetching?n.createElement(r.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):n.createElement(l.x,{svgName:o.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}d.defaultProps={fetchOnScroll:!1}},21473:(e,t,a)=>{a.d(t,{M:()=>f});var n=a(32735),r=a(23481),i=a(65858),l=a(11518),o=a(9098),c=a(16714),s=a(58704),d=a(22902),u=a(59598),m=a(74237);function p(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?v(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var g="shared.playPageResources";function f(e){var t=(0,d.T)().hasPermissions,a=function(e,t){var a,n,r,i,l=null!==(n=null===(a=e.resources)||void 0===a?void 0:a.data)&&void 0!==n?n:[],o=null!==(i=null===(r=e.links)||void 0===r?void 0:r.data)&&void 0!==i?i:[];if(!t)return[].concat(p(l),p(o));var c=l.filter((function(e){var t;return["additional-materials","student-activity"].includes(null===(t=e.metadata)||void 0===t?void 0:t.resourceType)}));return[].concat(p(c),p(o))}(e.video,t(c.C.StudentExperience));return a.length?n.createElement("section",{id:u.K.Resources,className:"pb-3",ref:e.containerRef},n.createElement(l.kM,{name:r.T.getPhrase(g,"resources",{count:a.length}),contents:s.z.PlayPageResources,collection:a,prefetched:!0,childComponent:o.R,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceThumbnailFallbackUrl,actionBehaviour:e.canViewResources?"normal":"public",location:"play-page",titlePosition:"below",onClickDownload:e.canViewResources?function(t){m.T.downloadResource(t,e.analyticsData,{location:i.LZ.PlayPage,actionType:i.Vw.Download,entity:i.py.Resource})}:null},getChildAppLink:e.getAppLink,analyticsOptions:e.canViewResources?{}:{workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:e.analyticsData})):n.createElement(n.Fragment,null)}},18913:(e,t,a)=>{a.d(t,{o:()=>b});var n=a(32735),r=a(42648),i=a(11607),l=a(83345),o=a(93264);const c={poiEntry:"Nmm9o",poiText:"c75aW",public:"R689i",poiTimeStamp:"Wad94"};var s="shared.pointsOfInterestList";function d(e){return n.createElement("div",null,n.createElement("h2",{className:"h6 my-2"},n.createElement(l.x,{namespace:s,phrase:"heading"})),n.createElement("div",null,e.pointsOfInterest.map((function(t){var a=o.T.ToDisplayDuration(1e3*t.startTime);return e.suppressInteractivity?n.createElement("div",{key:t.startTime,className:"d-flex ".concat(c.poiEntry," mb-2")},n.createElement("span",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold ".concat(c.poiTimeStamp)},a),n.createElement("div",{className:"".concat(c.public)},t.description)):n.createElement(i.L,{key:t.startTime,className:"d-flex ".concat(c.poiEntry," mb-2 cursor-pointer"),onClick:function(){return e.onClickPoiItem(t.startTime)}},n.createElement("div",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold ".concat(c.poiTimeStamp)},a),n.createElement("div",{className:"ms-2 ".concat(c.poiText)},t.description))}))))}var u=a(87311),m=a(91743),p=a(44829),v=a(31908),g=a(39347);const f={learningIntention:"T2LIU"};var h="shared.videoAtAGlance",y=350;function b(e){var t,a=(0,g.W)(e.video),i=(0,g.N)(e.video,a),o=function(){var t,a,n,r;return v.M.isInteractive(e.video)||!(null===(a=null===(t=e.video.tags)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)?null:null===(r=null===(n=e.video.tags)||void 0===n?void 0:n.data)||void 0===r?void 0:r.filter((function(e){return e.tagType===p.Q.Pedagogy||e.tagType===p.Q.Skill}))}();return a?n.createElement("div",{className:"rounded border mb-3 bg-white"},n.createElement(r.ZP,{autoHeight:!0,autoHeightMax:null!==(t=e.height)&&void 0!==t?t:y},n.createElement("div",{className:"px-3 px-3 pt-3 pb-2"},n.createElement("h2",{className:"h6 mb-2"},n.createElement(l.x,{namespace:h,phrase:"learningIntention"})),n.createElement("div",{className:"".concat(f.learningIntention," mb-3")},n.createElement("div",{dangerouslySetInnerHTML:{__html:i}})),!!(null==o?void 0:o.length)&&n.createElement("div",{className:"mb-1"},n.createElement(m.P,Object.assign({tags:o},u.G.getTagActionProps(e.getTagAppLink,e.suppressInteractivity),{className:"mt-2"}))),!!e.pointsOfInterest.length&&n.createElement(d,{pointsOfInterest:e.pointsOfInterest,suppressInteractivity:e.suppressInteractivity,onClickPoiItem:function(t){e.setStartTime(t)}})))):n.createElement(n.Fragment,null)}},39347:(e,t,a)=>{a.d(t,{N:()=>o,W:()=>c});var n=a(32735),r=a(16367);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var l=/\[\]\(cv:\/\/poi\?id=\d+\)\n*/g;function o(e,t){var a,o,c,s=(o=(0,n.useState)(""),c=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(o,c)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?i(e,t):void 0}}(o,c)||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.")}()),d=s[0],u=s[1];return(0,n.useEffect)((function(){if(t){var a=(n=e.glance,i=n.content.replace(l,""),r(i));u(a)}var n,i}),[null===(a=e.glance)||void 0===a?void 0:a.content,t]),d}function c(e){var t,a;return(null===(t=e.glance)||void 0===t?void 0:t.content)&&"text/markdown"===(null===(a=e.glance)||void 0===a?void 0:a.format)}},92805:(e,t,a)=>{a.d(t,{H:()=>r});var n=a(32735);function r(){return n.createElement("div",{className:"p-3 mb-3 border rounded"},n.createElement("div",{className:"row"},n.createElement("div",{className:"pe-3 col-md-7 border-right"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"4.5rem"}}),n.createElement("div",{className:"partial-loading-background",style:{height:"1.5rem",width:"15rem"}})),n.createElement("div",{className:"col-md-5 ps-md-3 pt-3 pt-md-0"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"7rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"10rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3.5rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4.5rem"}}))))}},74696:(e,t,a)=>{a.d(t,{S:()=>s});var n=a(32735),r=a(68050),i=a(69111),l=a(9977),o=a(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return n.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,a){return n.createElement("div",{className:"d-flex",key:a},e.allowBulkActions&&n.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.createElement(d,Object.assign({},e)))})))}function d(e){var t=(0,o.k)(),a="sm"===l.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return n.createElement(r.Z,{className:"".concat(a?"":"py-2"," flex-grow-1")},n.createElement(i.Z,Object.assign({},l.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(a?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),n.createElement(r.Z,null,!!s&&n.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},n.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),n.createElement(i.Z,{xs:l.O.getThumbnailColSize(s)},n.createElement("div",{className:"partial-loading-background ".concat(a?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),n.createElement(i.Z,Object.assign({},l.O.getDetailsColumns(),{className:a?"pb-2":"px-2"}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},47862:(e,t,a)=>{a.d(t,{K:()=>s});var n=a(32735),r=a(36848),i=a(83345),l=a(22843),o=a(3332),c=a(68626);var s=n.memo((function(e){var t,a,s=e.data,d=e.thumbnailSize,u=e.preloadImage,m=Object.assign(Object.assign({},e.questionsAppLink),{args:[e.data.id]}),p=null===(a=null===(t=s._timepoints)||void 0===t?void 0:t.value)||void 0===a?void 0:a.length;return n.createElement("div",{className:"flex-shrink-0 px-1 ".concat("rXatl")},n.createElement(o.u,{type:"cosmetic",textPosition:c.z.Independent,video:s,appLink:e.getAppLink(s),imageOptions:{size:d},preload:u,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,hideDuration:!1,imageCdnUrl:e.imageCdnUrl}),n.createElement("div",{className:"mt-2"},n.createElement(l.h,Object.assign({},e,{video:s,appLink:e.getAppLink(s)}))),n.createElement("div",{className:"mt-1"},n.createElement(r.F,{appLink:m,className:"cursor-pointer"},n.createElement(i.x,{namespace:"shared.interactiveWidgetItem",phrase:"previewQuestions",options:{count:p,smartCount:p}}))))}))},9098:(e,t,a)=>{a.d(t,{s:()=>P,R:()=>S});var n=a(32735),r=a(39202),i=a(49985),l=a(65858),o=a(36848),c=a(11607),s=a(86073),d=a(54610),u=a(1164),m=a(67453),p=a(45778),v=a(75163);const g={imageStyle:"FFgf3",imageTypeResource:"z4O5p",fallBackImage:"Xy4zX"};var f={width:200,resizeType:d.Nq.Cover};function h(e){var t;return p.G.isResource(e)?e.metadata.type===u.L.Pdf||(null===(t=e.pdf)||void 0===t?void 0:t.url)?d.__.Pdf:d.__.Thumbnails:d.__.Link}function y(e){var t,a,r,i=null,l=0;p.G.isResource(e.resource)&&(i=e.resource.metadata,l=null!==(r=null===(a=null===(t=e.resource.thumbnail)||void 0===t?void 0:t.metadata)||void 0===a?void 0:a.rotation)&&void 0!==r?r:0);var o=function(e,t){var a,n,r,i=h(t);if("thumbnail"in t&&(null===(a=t.thumbnail)||void 0===a?void 0:a.url))return m.j.createUrl(null===(n=t.thumbnail)||void 0===n?void 0:n.url,Object.assign({},f));var l=s._.safeUrlConcat(e,"/v1/previews");return p.G.isResource(t)?i===d.__.Pdf?t.metadata.type===u.L.Pdf?m.j.createResourceImage(l,t.url,Object.assign({},f)):m.j.createResourceImage(l,null===(r=t.pdf)||void 0===r?void 0:r.url,Object.assign({},f)):t.metadata.type!==u.L.Zip?m.j.createUrl(t.url,{size:d.h2.Medium,resizeType:d.Nq.Cover}):"/images/zip-resource.png":m.j.createResourceImage(l,t.url,Object.assign({},f))}(e.imageCdnUrl,e.resource);return n.createElement(v.Z,{data:o,imageType:h(e.resource),imageStyle:{transform:"rotate(".concat(l,"deg)")},alt:e.resource.name,errorFallbackImageSrc:e.imageErrorFallbackUrl,errorFallbackImageClassName:g.fallBackImage,imageClassName:(null==i?void 0:i.type)===u.L.Image?"".concat(g.imageTypeResource," ").concat(g.imageStyle):"",preload:e.preloadImage,preventLoad:!e.preloadImage})}var b=a(83914),E=a(60995),k=a(76177),N=a(61150),w=a(71063),C=a(4594),I=a(79967),A={getResourceTypeName:function(e){switch(e){case"additional-materials":return"Additional Materials";case"atom-guide":return"ATOM Guide";case"teacher-pack":return"Teacher Pack";case"student-activity":return"Student Activity";default:return"N/A"}}},T=a(35223);const O={imageStyle:"I9E5O",item:"tqUFn",dashboard:"o7j7p",playPage:"V2RwX",aspectRatio:"OnJDH",outerContainer:"CIFy7",innerContainer:"oUZPD",actions:"jzGAm",titleBelow:"Cpjs3",thumbnailContainer:"EDiGi",titleAbove:"e9ejn",teacherPack:"_tdVE",text:"g5NWS",hoverState:"xRYhX",atomGuide:"X39wU",studentActivity:"X9pMl",additionalMaterials:"qRVUo",userUploaded:"_18JaV",imageTypeResource:"KYtZL",download:"fbb_e"};function P(e){var t,a,r,i,l=null;"metadata"in e.data&&(l=e.data.metadata);var o=p.G.isType(e.data,C.E.Resource);return n.createElement(n.Fragment,null,n.createElement("div",{className:O.aspectRatio},n.createElement("div",{className:O.outerContainer},n.createElement("div",{className:function(t){var a,n="\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ".concat(function(e){switch(e){case"atom-guide":return O.atomGuide;case"student-activity":return O.studentActivity;case"teacher-pack":return O.teacherPack;case"additional-materials":return O.additionalMaterials;default:return O.userUploaded}}(t)," ").concat(O.innerContainer);return(null===(a=e.theme)||void 0===a?void 0:a.containerClass)?n+=" ".concat(e.theme.containerClass):n+=" pt-3 px-3",e.applyHoverState&&(n+=" ".concat(O.hoverState)),n}(null==l?void 0:l.resourceType)},"above"===e.titlePosition&&n.createElement(k.u,{title:e.data.name},n.createElement("h3",{className:"text-center text-break h5 mb-3 ".concat(O.text)},n.createElement("span",{className:"clamp-1"},e.data.name))),n.createElement("div",{className:"\n ".concat(null!==(a=null===(t=e.theme)||void 0===t?void 0:t.thumbnailContainerClass)&&void 0!==a?a:""," w-75 overflow-hidden \n ").concat(O.thumbnailContainer," ").concat("above"===e.titlePosition?O.titleAbove:""," \n ").concat(O.imageStyle,"\n ")},n.createElement(y,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage})),o&&e.onClickDownload&&"normal"===e.actionBehaviour&&n.createElement("div",{className:O.actions},n.createElement(c.L,{onClick:function(t){t.preventDefault(),t.stopPropagation(),p.G.isResource(e.data)&&"function"==typeof e.onClickDownload&&e.onClickDownload(e.data)},className:"".concat(O.download," d-flex align-items-center justify-content-center")},n.createElement(b.x,{svgName:T.vn.Download}))),!e.hideTypeBadge&&o&&n.createElement(N.y,{typeId:C.E.Resource})))),"below"===e.titlePosition&&p.G.isType(e.data,C.E.Resource)&&n.createElement("div",{className:"mt-1 ".concat(O.titleBelow)},!!(null===(i=null===(r=e.data)||void 0===r?void 0:r.metadata)||void 0===i?void 0:i.resourceType)&&n.createElement(E.m,null,A.getResourceTypeName(e.data.metadata.resourceType)),n.createElement("h3",{className:"h6 clamp-2"},e.data.name)))}P.defaultProps={preloadImage:!0,actionBehaviour:"normal"};var S=n.memo((function(e){var t,a,c,s,d=(t=e.data,a=e.actionBehaviour,s=(0,I.k)(),"public"===a||!s.xs&&!s.sm&&"resource"===t.type&&"metadata"in t&&(t.metadata.type===u.L.Image||(t.metadata.type===u.L.Pdf?!!t.url:!!(null===(c=t.pdf)||void 0===c?void 0:c.url)))),m=Object.assign(Object.assign({},e.analyticsData),e.data),p=Object.assign(Object.assign({},e.analyticsOptions),{actionType:l.Vw.Click,entity:e.data.typeId===C.E.Resource?l.py.Resource:l.py.Link});function v(){i.k.logUserAction(m,p)}var g,f=Object.assign(Object.assign({},e),{applyHoverState:d||!!e.data.url});return n.createElement("div",{className:"px-1 flex-shrink-0 ".concat(O.item," ").concat("play-page"===e.location?O.playPage:O.dashboard," ").concat(w.M.RESOURCE_ITEM_SELECTOR)},(g="d-block ".concat("above"===e.titlePosition?"no-decoration":""),"link"===e.data.type?n.createElement("a",{href:e.data.url,target:"_blank",className:g,onClick:v},n.createElement(P,Object.assign({},f))):d?"public"===e.actionBehaviour?n.createElement("div",{className:"".concat(g," cursor-pointer d-inline"),onClick:function(){v(),r.C$.trigger(e.getAppLink(e.data))}},n.createElement(P,Object.assign({},f))):n.createElement(o.F,{appLink:e.getAppLink(e.data),className:g,analyticsData:m,analyticsOptions:p},n.createElement(P,Object.assign({},f))):e.data.url?n.createElement("a",{href:e.data.url,className:g,onClick:v},n.createElement(P,Object.assign({},f))):n.createElement("div",{className:g},n.createElement(P,Object.assign({},f)))))}))},28907:(e,t,a)=>{a.d(t,{r:()=>i});var n=a(99940),r=a(97395),i={theme:function(e){return{url:"/api/domain/v1/themes/".concat(e),key:"themes:".concat(e)}},themeImages:function(e,t){return{url:r._.urlBuilder("/api/domain/v1/themes",{name:e,type:t}),key:"themes:".concat(e,":").concat(t)}},themes:function(e){var t="/api/domain/v1/themes",a="themes";return e&&(t+="?type=".concat(e),a+=":type:".concat(e)),{url:t,key:a,formatData:function(e){return e.sort((function(e,t){return e.name.localeCompare(t.name)}))}}},createTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes",key:"theme",data:e,type:n.k.POST,invalidationKeys:"themes",success:t,error:a,always:r}},updateTheme:function(e,t,a,r,i){return{url:"/api/domain/v1/themes/".concat(e),key:"update:theme:".concat(e),data:t,type:n.k.PUT,success:a,error:r,always:i}},deleteTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes/".concat(e),key:"delete:theme:".concat(e),type:n.k.DELETE,invalidationKeys:"themes",success:t,error:a,always:r}}}},94631:(e,t,a)=>{a.d(t,{D:()=>r});var n=a(32735);function r(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},9907:(e,t,a)=>{a.d(t,{P:()=>l});var n=a(32735),r=a(94631);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var l=function(e,t){var a,l,o=(a=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(a,l)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?i(e,t):void 0}}(a,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.")}()),c=o[0],s=o[1],d=(0,r.D)(t),u=t;n.useLayoutEffect((function(){if(!c||d!==u){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===u}));if(t){var a=t.getBoundingClientRect();window.scrollBy({top:a.top-80,behavior:"smooth"}),c||s(!0)}}}),[e,d,u,c])}},74237:(e,t,a)=>{a.d(t,{T:()=>o});var n=a(97395),r=a(49985),i=a(65858),l=null,o={getVideoDownloadUrl:function(e,t){return n._.safeUrlConcat(n._.makeHttps(e),"/download?token=".concat(t))},downloadResource:function(e,t,a){var n,o=l;l||(o=l=document.createElement("iframe"),document.body.appendChild(o),o.style.display="none"),o.src=e.url,r.k.logUserAction(Object.assign({id:null==e?void 0:e.id,name:null==e?void 0:e.name,resourceType:null===(n=null==e?void 0:e.metadata)||void 0===n?void 0:n.resourceType},t),Object.assign({actionType:i.Vw.Download,entity:i.py.Resource,workflowPhase:i.eu.Complete},a))}}},26492:(e,t,a)=>{a.d(t,{T:()=>d});var n=a(32735),r=a(23481),i=a(65858),l=a(83914),o=a(4594),c=a(35223),s="shared.playPage";function d(e){var t=r.T.encloseNamespace(s),a=function(e){switch(e){case o.E.Video:return"video";case o.E.Clip:return"clip";case o.E.Interactive:return"interactive";default:return""}}(e.typeId);return n.createElement("div",{className:"alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center"},n.createElement(l.x,{svgName:c.vn.Archive,size:l.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},t("archivedInfoTitle",{type:a})),(!e.hasStudentExperience||a===i.py.Video)&&n.createElement("p",{className:"mb-1"},t("archivedInfo",{type:"".concat(a,"s")}))))}},47938:(e,t,a)=>{a.d(t,{W:()=>m});var n=a(32735),r=a(36848),i=a(83914),l=a(83345),o=a(5345),c=a(26361),s=a(14070),d=a(97291),u="shared.playPage";function m(e){var t,a;if(!(null===(a=null===(t=e.restrictions)||void 0===t?void 0:t.value)||void 0===a?void 0:a.length)||!e.yearGroups||!e.canManageVideoAccess)return n.createElement(n.Fragment,null);if(c.l.getWeightedRestriction(e.restrictions.value).type!==o.c.Custom)return n.createElement(n.Fragment,null);var m=c.l.mapRestrictionToClass(e.restrictions),p="".concat(m," fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center");return n.createElement("div",{className:p},n.createElement("div",{className:"d-flex align-items-center"},n.createElement(i.x,{svgName:c.l.mapRestrictionToSvg(e.restrictions),size:i.S.Large}),n.createElement("span",{className:"ps-1"},c.l.mapRestrictionToText(e.restrictions,e.yearGroups))),n.createElement(r.F,{appLink:{application:d.O.DEFAULT,action:s.e.Default.APPROVE_VIDEO,params:{objectId:e.objectId,objectTypeId:e.objectTypeId}},className:"btn btn-outline-dark"},n.createElement(l.x,{namespace:u,phrase:"approve"})))}},76162:(e,t,a)=>{a.d(t,{O:()=>f});var n=a(32735),r=a(23481),i=a(28400),l=a(11518),o=a(22843),c=a(3332),s=a(68626);var d=n.memo((function(e){var t=e.data,a=e.thumbnailSize,r=e.preloadImage,i=e.getAppLink;return n.createElement("div",{className:"flex-shrink-0 px-1 ".concat("hzP5u")},n.createElement(c.u,{type:"cosmetic",textPosition:s.z.Independent,video:t,appLink:i(t),imageOptions:{size:a},preload:r,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,hideDuration:!1}),n.createElement("div",{className:"mt-2"},n.createElement(o.h,Object.assign({},e,{video:t,appLink:e.getAppLink(t)}))))})),u=a(58704),m=a(31908),p=a(14070),v=a(97291),g="shared.playPageClips";function f(e){var t;return e.canViewClips&&(null===(t=e.clips)||void 0===t?void 0:t.length)?n.createElement("section",{className:"pb-3"},n.createElement(l.kM,{name:r.T.getPhrase(g,"clips",{count:e.clips.length}),contents:u.z.Clips,collection:e.clips,prefetched:!0,getChildAppLink:function(e){return{application:v.O.CLIPS,action:p.e.Clips.PLAY_CLIP,args:[e.id,i.m.slugify(e.name)]}},appLink:{action:p.e.Videos.VIDEO_CLIPS,application:v.O.VIDEOS,args:[e.video.id],params:{parentType:m.M.isClip(e.video)?"clip":"video"}},childComponent:d,extraChildComponentProps:{yearGroups:e.yearGroups,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite},analyticsData:e.analyticsData})):n.createElement(n.Fragment,null)}},31261:(e,t,a)=>{a.d(t,{J:()=>v});var n=a(32735),r=a(23481),i=a(28400),l=a(11518),o=a(47862),c=a(58704),s=a(59598),d=a(31908),u=a(14070),m=a(97291),p="shared.playPageInteractives";function v(e){var t,a;return e.canViewInteractives&&(null===(a=null===(t=e.video.interactives)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)?n.createElement("section",{className:"pb-3",ref:e.containerRef,id:s.K.Interactives},n.createElement(l.kM,{name:r.T.getPhrase(p,"interactives",{count:e.video.interactives.data.length}),contents:c.z.Interactives,collection:e.video.interactives.data,prefetched:!0,getChildAppLink:function(e){return{application:m.O.INTERACTIVES,action:u.e.Interactives.VIEW_INTERACTIVE,args:[e.id,i.m.slugify(e.name)]}},appLink:{action:u.e.Videos.VIDEO_INTERACTIVES,application:m.O.VIDEOS,args:[e.video.id],params:{parentType:d.M.isClip(e.video)?"clip":"video"}},childComponent:o.K,extraChildComponentProps:{yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,questionsAppLink:{application:m.O.INTERACTIVES,action:u.e.Interactives.PREVIEW_QUESTIONS}},analyticsData:e.analyticsData})):n.createElement(n.Fragment,null)}},91479:(e,t,a)=>{a.d(t,{v:()=>y});var n=a(32735),r=a(65858),i=a(83657),l=a(36848),o=a(40955),c=a(18559),s=a(17464),d=a(83345),u=a(38647),m=a(11882),p=a(80143),v=a(31908),g=a(10671);const f={series:"wTlJJ",badgeListContainer:"Vaout"};var h="shared.playPage";function y(e){var t,a,y,b,E,k,N=(0,p.n)(null===(t=e.media.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),w=n.useRef(null),C=n.useRef(null),I=v.M.isVideo(e.media)&&!!(null===(a=e.media.rating)||void 0===a?void 0:a.value)||v.M.isVideo(e.media)&&!!e.media.productionYear||!!(null===(b=null===(y=e.media.subjectPresentationAudiences)||void 0===y?void 0:y.data)||void 0===b?void 0:b.length),A=(0,g._)({location:g.i.PlayPage,shareId:e.shareId}),T=!!e.originalVideoAppLink&&v.M.isClip(e.media)&&v.M.canViewOriginalVideo(e.media);return n.createElement("section",{className:"mb-3 position-relative",ref:w},n.createElement("div",{className:"d-inline-block w-100",ref:C},e.featureAccess.canNavigate&&n.createElement("div",{className:"ms-2 float-end"},n.createElement(i.e,{actions:A.getVideoActions(e.media),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return A.fetchMoreActions(e.media)}})),!!v.M.isVideo(e.media)&&n.createElement(m.$,{type:"series",video:e.media,appLink:null===(E=e.getSeriesAppLink)||void 0===E?void 0:E.call(e,e.media.series),className:"".concat(f.series," text-truncate mw-100"),analyticsOptions:{location:r.LZ.PlayPage}}),n.createElement("h1",{className:"h4 mb-2 mw-100"},n.createElement("span",{className:"align-self-center"},e.media.name),n.createElement(u.m,{tooltipPlacement:"right",className:"d-inline-block ps-1",video:e.media,yearGroups:e.yearGroups})),I&&n.createElement(s.c,{className:f.badgeListContainer},n.createElement(o.P,{audience:N,className:"bg-white text-dark",border:"dark"}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.Rating,data:e.media.rating}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.ProductionYear,data:e.media.productionYear}))),v.M.isClip(e.media)&&T&&n.createElement("p",{className:"clamp-1"},n.createElement(d.x,{namespace:h,phrase:"viewOriginal"})," ",n.createElement(l.F,{className:"info-link",appLink:e.originalVideoAppLink},null===(k=e.media._parentVideo)||void 0===k?void 0:k.name)))}},81024:(e,t,a)=>{a.d(t,{S:()=>g});var n=a(32735),r=a(23481),i=a(65858),l=a(36848),o=a(83914),c=a(54610),s=a(67453),d=a(35223),u=a(31908);const m="LL7My",p="QoLgZ";var v=r.T.encloseNamespace("shared.playerPlaceholder");function g(e){switch(e.type){case"pip":return n.createElement(f,Object.assign({},e));case"public":return n.createElement(h,Object.assign({},e));default:return n.createElement(n.Fragment,null)}}var f=function(e){var t,a;return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(null!==(a=null===(t=u.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"","')")}},n.createElement("p",{className:"m-0 text-white h3 ".concat("BcnSH")},v("playingPiP")),n.createElement("div",{className:m}))},h=function(e){var t,a,r=s.j.createUrl(null!==(a=null===(t=u.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"",{size:c.h2.Large});return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(r,"')")}},n.createElement(l.F,{appLink:e.appLink,analyticsOptions:{actionType:i.Vw.Click,location:i.LZ.PlayPage,entity:i.py.AppLink,workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:{}},n.createElement(o.x,{svgName:d.vn.PlayCircle,className:"x_1f6"}),n.createElement("div",{className:m})))}},78166:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(32735),r=a(71020),i=a(83345),l=a(74696),o=a(13231),c=a(51365),s=a(22902),d=a(31908),u=a(10671),m=a(10741),p=a(82431),v="shared.relatedVideos";function g(e){var t,a,g=(0,u._)({location:u.i.VideoItem}),f=(0,s.T)().hasPermissions;if(!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated))return n.createElement(n.Fragment,null);if(e.relatedVideos.hasError)return n.createElement(n.Fragment,null);if(e.relatedVideos.hasCompleted&&!(null===(a=e.relatedVideos.videos)||void 0===a?void 0:a.length))return n.createElement(n.Fragment,null);if(!e.relatedVideos.isFetching&&!e.relatedVideos.hasCompleted)return n.createElement(n.Fragment,null);var h=!d.M.isInteractive(e.currentVideo);return n.createElement(c.M.Provider,{value:g},n.createElement("h2",{className:"h4 mb-0"},n.createElement(i.x,{namespace:v,phrase:h?"upNext":"relatedVideos"})),e.relatedVideos.hasCompleted?n.createElement(o.E4,{videos:e.relatedVideos.videos,yearGroups:e.yearGroups,getSubTextAppLink:function(t){return p.j.getSeriesAppLink(t.series,e.moviesAndTv?{mtv:!0}:null)},getVideoAppLink:e.getVideoAppLink,hasPermissions:f,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return m.j.getPreviewQuestionsAppLink(e)}}):n.createElement(l.S,null),e.relatedVideos.hasMore&&n.createElement(r._,{isFetching:e.relatedVideos.isFetching,fetchNext:e.relatedVideos.fetchNext}))}},35014:(e,t,a)=>{a.d(t,{I:()=>d});var n=a(20354),r=a(16714),i=a(12754),l=a(39151),o=a(22902),c=a(15311),s=a(11387);function d(){var e=(0,o.T)(),t=e.hasPermissions,a=e.hasLocalPermissions,d=(0,c.r)().hasProduct,u=n.a.useBasicFetch(l.L.config()),m=d(i.x.Primary);return{canWatchPublicly:function(e){var t,a;return!!e&&!!(null===(a=null===(t=u.data)||void 0===t?void 0:t.allowedPublicVideos)||void 0===a?void 0:a[e])},canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:m&&t(r.C.ViewVideoInteractives),canViewClips:m&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:a(r.E.UseVideoActions),canViewPublicLayout:!a(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:a(r.E.ViewVideoResourceItems),canNavigate:m}}},97816:(e,t,a)=>{a.d(t,{V:()=>d});var n=a(32735),r=a(20354),i=a(21750),l=a(31949),o=a(1575);function c(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function d(e){var t,a,d,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(l.N.currentUser()),p=n.useRef(new Set),v=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),g=(a=n.useState([]),d=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(a,d)||c(a,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.")}()),f=g[0],h=g[1];n.useEffect((function(){var e;if((null==v?void 0:v.length)&&(null===(e=m.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];v.forEach((function(e){p.current.has(e)||(t.push(e),p.current.add(e))})),t.length&&h((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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.")}()}(e),[i.x.hasCurriculumLinks(t,null,u.flightNamespace),o.R.videoMixinAssocs(t,u.flightNamespace)])}))}}),[null==v?void 0:v.length,null===(t=m.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(f)}}}]);
|
|
2
|
-
//# sourceMappingURL=3854-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3854],{71020:(e,t,a)=>{a.d(t,{_:()=>d});var n=a(32735),r=a(80247),i=a(34152),l=a(83914),o=a(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function d(e){var t,a,d=(t=(0,i.YD)(),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,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.")}()),u=d[0],m=d[1];return n.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),n.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:u},e.isFetching?n.createElement(r.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):n.createElement(l.x,{svgName:o.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}d.defaultProps={fetchOnScroll:!1}},21473:(e,t,a)=>{a.d(t,{M:()=>f});var n=a(32735),r=a(23481),i=a(65858),l=a(11518),o=a(9098),c=a(16714),s=a(58704),d=a(22902),u=a(59598),m=a(74237);function p(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?v(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var g="shared.playPageResources";function f(e){var t=(0,d.T)().hasPermissions,a=function(e,t){var a,n,r,i,l=null!==(n=null===(a=e.resources)||void 0===a?void 0:a.data)&&void 0!==n?n:[],o=null!==(i=null===(r=e.links)||void 0===r?void 0:r.data)&&void 0!==i?i:[];if(!t)return[].concat(p(l),p(o));var c=l.filter((function(e){var t;return["additional-materials","student-activity"].includes(null===(t=e.metadata)||void 0===t?void 0:t.resourceType)}));return[].concat(p(c),p(o))}(e.video,t(c.C.StudentExperience));return a.length?n.createElement("section",{id:u.K.Resources,className:"pb-4",ref:e.containerRef},n.createElement(l.kM,{name:r.T.getPhrase(g,"resources",{count:a.length}),contents:s.z.PlayPageResources,collection:a,prefetched:!0,childComponent:o.R,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceThumbnailFallbackUrl,actionBehaviour:e.canViewResources?"normal":"public",location:"play-page",titlePosition:"below",onClickDownload:e.canViewResources?function(t){m.T.downloadResource(t,e.analyticsData,{location:i.LZ.PlayPage,actionType:i.Vw.Download,entity:i.py.Resource})}:null},getChildAppLink:e.getAppLink,analyticsOptions:e.canViewResources?{}:{workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:e.analyticsData})):n.createElement(n.Fragment,null)}},18913:(e,t,a)=>{a.d(t,{o:()=>b});var n=a(32735),r=a(42648),i=a(11607),l=a(83345),o=a(93264);const c={poiEntry:"Nmm9o",poiText:"c75aW",public:"R689i",poiTimeStamp:"Wad94"};var s="shared.pointsOfInterestList";function d(e){return n.createElement("div",null,n.createElement("h2",{className:"h6 my-2"},n.createElement(l.x,{namespace:s,phrase:"heading"})),n.createElement("div",null,e.pointsOfInterest.map((function(t){var a=o.T.ToDisplayDuration(1e3*t.startTime);return e.suppressInteractivity?n.createElement("div",{key:t.startTime,className:"d-flex ".concat(c.poiEntry," mb-2")},n.createElement("span",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold ".concat(c.poiTimeStamp)},a),n.createElement("div",{className:"".concat(c.public)},t.description)):n.createElement(i.L,{key:t.startTime,className:"d-flex ".concat(c.poiEntry," mb-2 cursor-pointer"),onClick:function(){return e.onClickPoiItem(t.startTime)}},n.createElement("div",{className:"d-flex rounded-pill justify-content-center align-items-center fw-semibold ".concat(c.poiTimeStamp)},a),n.createElement("div",{className:"ms-2 ".concat(c.poiText)},t.description))}))))}var u=a(87311),m=a(91743),p=a(44829),v=a(31908),g=a(39347);const f={learningIntention:"T2LIU"};var h="shared.videoAtAGlance",y=350;function b(e){var t,a=(0,g.W)(e.video),i=(0,g.N)(e.video,a),o=function(){var t,a,n,r;return v.M.isInteractive(e.video)||!(null===(a=null===(t=e.video.tags)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)?null:null===(r=null===(n=e.video.tags)||void 0===n?void 0:n.data)||void 0===r?void 0:r.filter((function(e){return e.tagType===p.Q.Pedagogy||e.tagType===p.Q.Skill}))}();return a?n.createElement("div",{className:"rounded border mb-4 bg-white"},n.createElement(r.ZP,{autoHeight:!0,autoHeightMax:null!==(t=e.height)&&void 0!==t?t:y},n.createElement("div",{className:"px-3 px-3 pt-3 pb-2"},n.createElement("h2",{className:"h6 mb-2"},n.createElement(l.x,{namespace:h,phrase:"learningIntention"})),n.createElement("div",{className:"".concat(f.learningIntention," mb-3")},n.createElement("div",{dangerouslySetInnerHTML:{__html:i}})),!!(null==o?void 0:o.length)&&n.createElement("div",{className:"mb-1"},n.createElement(m.P,Object.assign({tags:o},u.G.getTagActionProps(e.getTagAppLink,e.suppressInteractivity),{className:"mt-2"}))),!!e.pointsOfInterest.length&&n.createElement(d,{pointsOfInterest:e.pointsOfInterest,suppressInteractivity:e.suppressInteractivity,onClickPoiItem:function(t){e.setStartTime(t)}})))):n.createElement(n.Fragment,null)}},39347:(e,t,a)=>{a.d(t,{N:()=>o,W:()=>c});var n=a(32735),r=a(16367);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var l=/\[\]\(cv:\/\/poi\?id=\d+\)\n*/g;function o(e,t){var a,o,c,s=(o=(0,n.useState)(""),c=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(o,c)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?i(e,t):void 0}}(o,c)||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.")}()),d=s[0],u=s[1];return(0,n.useEffect)((function(){if(t){var a=(n=e.glance,i=n.content.replace(l,""),r(i));u(a)}var n,i}),[null===(a=e.glance)||void 0===a?void 0:a.content,t]),d}function c(e){var t,a;return(null===(t=e.glance)||void 0===t?void 0:t.content)&&"text/markdown"===(null===(a=e.glance)||void 0===a?void 0:a.format)}},92805:(e,t,a)=>{a.d(t,{H:()=>r});var n=a(32735);function r(){return n.createElement("div",{className:"p-3 mb-3 border rounded"},n.createElement("div",{className:"row"},n.createElement("div",{className:"pe-3 col-md-7 border-right"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"4.5rem"}}),n.createElement("div",{className:"partial-loading-background",style:{height:"1.5rem",width:"15rem"}})),n.createElement("div",{className:"col-md-5 ps-md-3 pt-3 pt-md-0"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"7rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"10rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3.5rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4.5rem"}}))))}},74696:(e,t,a)=>{a.d(t,{S:()=>s});var n=a(32735),r=a(68050),i=a(69111),l=a(9977),o=a(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return n.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,a){return n.createElement("div",{className:"d-flex",key:a},e.allowBulkActions&&n.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.createElement(d,Object.assign({},e)))})))}function d(e){var t=(0,o.k)(),a="sm"===l.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return n.createElement(r.Z,{className:"".concat(a?"":"py-2"," flex-grow-1")},n.createElement(i.Z,Object.assign({},l.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(a?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),n.createElement(r.Z,null,!!s&&n.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},n.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),n.createElement(i.Z,{xs:l.O.getThumbnailColSize(s)},n.createElement("div",{className:"partial-loading-background ".concat(a?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),n.createElement(i.Z,Object.assign({},l.O.getDetailsColumns(),{className:a?"pb-2":"px-2"}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},47862:(e,t,a)=>{a.d(t,{K:()=>s});var n=a(32735),r=a(36848),i=a(83345),l=a(22843),o=a(3332),c=a(68626);var s=n.memo((function(e){var t,a,s=e.data,d=e.thumbnailSize,u=e.preloadImage,m=Object.assign(Object.assign({},e.questionsAppLink),{args:[e.data.id]}),p=null===(a=null===(t=s._timepoints)||void 0===t?void 0:t.value)||void 0===a?void 0:a.length;return n.createElement("div",{className:"flex-shrink-0 px-1 ".concat("rXatl")},n.createElement(o.u,{type:"cosmetic",textPosition:c.z.Independent,video:s,appLink:e.getAppLink(s),imageOptions:{size:d},preload:u,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,hideDuration:!1,imageCdnUrl:e.imageCdnUrl}),n.createElement("div",{className:"mt-2"},n.createElement(l.h,Object.assign({},e,{video:s,appLink:e.getAppLink(s)}))),n.createElement("div",{className:"mt-1"},n.createElement(r.F,{appLink:m,className:"cursor-pointer"},n.createElement(i.x,{namespace:"shared.interactiveWidgetItem",phrase:"previewQuestions",options:{count:p,smartCount:p}}))))}))},9098:(e,t,a)=>{a.d(t,{s:()=>P,R:()=>S});var n=a(32735),r=a(39202),i=a(49985),l=a(65858),o=a(36848),c=a(11607),s=a(86073),d=a(54610),u=a(1164),m=a(67453),p=a(45778),v=a(75163);const g={imageStyle:"FFgf3",imageTypeResource:"z4O5p",fallBackImage:"Xy4zX"};var f={width:200,resizeType:d.Nq.Cover};function h(e){var t;return p.G.isResource(e)?e.metadata.type===u.L.Pdf||(null===(t=e.pdf)||void 0===t?void 0:t.url)?d.__.Pdf:d.__.Thumbnails:d.__.Link}function y(e){var t,a,r,i=null,l=0;p.G.isResource(e.resource)&&(i=e.resource.metadata,l=null!==(r=null===(a=null===(t=e.resource.thumbnail)||void 0===t?void 0:t.metadata)||void 0===a?void 0:a.rotation)&&void 0!==r?r:0);var o=function(e,t){var a,n,r,i=h(t);if("thumbnail"in t&&(null===(a=t.thumbnail)||void 0===a?void 0:a.url))return m.j.createUrl(null===(n=t.thumbnail)||void 0===n?void 0:n.url,Object.assign({},f));var l=s._.safeUrlConcat(e,"/v1/previews");return p.G.isResource(t)?i===d.__.Pdf?t.metadata.type===u.L.Pdf?m.j.createResourceImage(l,t.url,Object.assign({},f)):m.j.createResourceImage(l,null===(r=t.pdf)||void 0===r?void 0:r.url,Object.assign({},f)):t.metadata.type!==u.L.Zip?m.j.createUrl(t.url,{size:d.h2.Medium,resizeType:d.Nq.Cover}):"/images/zip-resource.png":m.j.createResourceImage(l,t.url,Object.assign({},f))}(e.imageCdnUrl,e.resource);return n.createElement(v.Z,{data:o,imageType:h(e.resource),imageStyle:{transform:"rotate(".concat(l,"deg)")},alt:e.resource.name,errorFallbackImageSrc:e.imageErrorFallbackUrl,errorFallbackImageClassName:g.fallBackImage,imageClassName:(null==i?void 0:i.type)===u.L.Image?"".concat(g.imageTypeResource," ").concat(g.imageStyle):"",preload:e.preloadImage,preventLoad:!e.preloadImage})}var b=a(83914),E=a(60995),k=a(76177),N=a(61150),C=a(71063),w=a(4594),I=a(79967),A={getResourceTypeName:function(e){switch(e){case"additional-materials":return"Additional Materials";case"atom-guide":return"ATOM Guide";case"teacher-pack":return"Teacher Pack";case"student-activity":return"Student Activity";default:return"N/A"}}},T=a(35223);const O={imageStyle:"I9E5O",item:"tqUFn",dashboard:"o7j7p",playPage:"V2RwX",aspectRatio:"OnJDH",outerContainer:"CIFy7",innerContainer:"oUZPD",actions:"jzGAm",titleBelow:"Cpjs3",thumbnailContainer:"EDiGi",titleAbove:"e9ejn",teacherPack:"_tdVE",text:"g5NWS",hoverState:"xRYhX",atomGuide:"X39wU",studentActivity:"X9pMl",additionalMaterials:"qRVUo",userUploaded:"_18JaV",imageTypeResource:"KYtZL",download:"fbb_e"};function P(e){var t,a,r,i,l=null;"metadata"in e.data&&(l=e.data.metadata);var o=p.G.isType(e.data,w.E.Resource);return n.createElement(n.Fragment,null,n.createElement("div",{className:O.aspectRatio},n.createElement("div",{className:O.outerContainer},n.createElement("div",{className:function(t){var a,n="\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ".concat(function(e){switch(e){case"atom-guide":return O.atomGuide;case"student-activity":return O.studentActivity;case"teacher-pack":return O.teacherPack;case"additional-materials":return O.additionalMaterials;default:return O.userUploaded}}(t)," ").concat(O.innerContainer);return(null===(a=e.theme)||void 0===a?void 0:a.containerClass)?n+=" ".concat(e.theme.containerClass):n+=" pt-3 px-3",e.applyHoverState&&(n+=" ".concat(O.hoverState)),n}(null==l?void 0:l.resourceType)},"above"===e.titlePosition&&n.createElement(k.u,{title:e.data.name},n.createElement("h3",{className:"text-center text-break h5 mb-3 ".concat(O.text)},n.createElement("span",{className:"clamp-1"},e.data.name))),n.createElement("div",{className:"\n ".concat(null!==(a=null===(t=e.theme)||void 0===t?void 0:t.thumbnailContainerClass)&&void 0!==a?a:""," w-75 overflow-hidden \n ").concat(O.thumbnailContainer," ").concat("above"===e.titlePosition?O.titleAbove:""," \n ").concat(O.imageStyle,"\n ")},n.createElement(y,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage})),o&&e.onClickDownload&&"normal"===e.actionBehaviour&&n.createElement("div",{className:O.actions},n.createElement(c.L,{onClick:function(t){t.preventDefault(),t.stopPropagation(),p.G.isResource(e.data)&&"function"==typeof e.onClickDownload&&e.onClickDownload(e.data)},className:"".concat(O.download," d-flex align-items-center justify-content-center")},n.createElement(b.x,{svgName:T.vn.Download}))),!e.hideTypeBadge&&o&&n.createElement(N.y,{typeId:w.E.Resource})))),"below"===e.titlePosition&&p.G.isType(e.data,w.E.Resource)&&n.createElement("div",{className:"mt-1 ".concat(O.titleBelow)},!!(null===(i=null===(r=e.data)||void 0===r?void 0:r.metadata)||void 0===i?void 0:i.resourceType)&&n.createElement(E.m,null,A.getResourceTypeName(e.data.metadata.resourceType)),n.createElement("h3",{className:"h6 clamp-2"},e.data.name)))}P.defaultProps={preloadImage:!0,actionBehaviour:"normal"};var S=n.memo((function(e){var t,a,c,s,d=(t=e.data,a=e.actionBehaviour,s=(0,I.k)(),"public"===a||!s.xs&&!s.sm&&"resource"===t.type&&"metadata"in t&&(t.metadata.type===u.L.Image||(t.metadata.type===u.L.Pdf?!!t.url:!!(null===(c=t.pdf)||void 0===c?void 0:c.url)))),m=Object.assign(Object.assign({},e.analyticsData),e.data),p=Object.assign(Object.assign({},e.analyticsOptions),{actionType:l.Vw.Click,entity:e.data.typeId===w.E.Resource?l.py.Resource:l.py.Link});function v(){i.k.logUserAction(m,p)}var g,f=Object.assign(Object.assign({},e),{applyHoverState:d||!!e.data.url});return n.createElement("div",{className:"px-1 flex-shrink-0 ".concat(O.item," ").concat("play-page"===e.location?O.playPage:O.dashboard," ").concat(C.M.RESOURCE_ITEM_SELECTOR)},(g="d-block ".concat("above"===e.titlePosition?"no-decoration":""),"link"===e.data.type?n.createElement("a",{href:e.data.url,target:"_blank",className:g,onClick:v},n.createElement(P,Object.assign({},f))):d?"public"===e.actionBehaviour?n.createElement("div",{className:"".concat(g," cursor-pointer d-inline"),onClick:function(){v(),r.C$.trigger(e.getAppLink(e.data))}},n.createElement(P,Object.assign({},f))):n.createElement(o.F,{appLink:e.getAppLink(e.data),className:g,analyticsData:m,analyticsOptions:p},n.createElement(P,Object.assign({},f))):e.data.url?n.createElement("a",{href:e.data.url,className:g,onClick:v},n.createElement(P,Object.assign({},f))):n.createElement("div",{className:g},n.createElement(P,Object.assign({},f)))))}))},28907:(e,t,a)=>{a.d(t,{r:()=>i});var n=a(99940),r=a(97395),i={theme:function(e){return{url:"/api/domain/v1/themes/".concat(e),key:"themes:".concat(e)}},themeImages:function(e,t){return{url:r._.urlBuilder("/api/domain/v1/themes",{name:e,type:t}),key:"themes:".concat(e,":").concat(t)}},themes:function(e){var t="/api/domain/v1/themes",a="themes";return e&&(t+="?type=".concat(e),a+=":type:".concat(e)),{url:t,key:a,formatData:function(e){return e.sort((function(e,t){return e.name.localeCompare(t.name)}))}}},createTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes",key:"theme",data:e,type:n.k.POST,invalidationKeys:"themes",success:t,error:a,always:r}},updateTheme:function(e,t,a,r,i){return{url:"/api/domain/v1/themes/".concat(e),key:"update:theme:".concat(e),data:t,type:n.k.PUT,success:a,error:r,always:i}},deleteTheme:function(e,t,a,r){return{url:"/api/domain/v1/themes/".concat(e),key:"delete:theme:".concat(e),type:n.k.DELETE,invalidationKeys:"themes",success:t,error:a,always:r}}}},94631:(e,t,a)=>{a.d(t,{D:()=>r});var n=a(32735);function r(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},9907:(e,t,a)=>{a.d(t,{P:()=>l});var n=a(32735),r=a(94631);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var l=function(e,t){var a,l,o=(a=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(a,l)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?i(e,t):void 0}}(a,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.")}()),c=o[0],s=o[1],d=(0,r.D)(t),u=t;n.useLayoutEffect((function(){if(!c||d!==u){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===u}));if(t){var a=t.getBoundingClientRect();window.scrollBy({top:a.top-80,behavior:"smooth"}),c||s(!0)}}}),[e,d,u,c])}},74237:(e,t,a)=>{a.d(t,{T:()=>o});var n=a(97395),r=a(49985),i=a(65858),l=null,o={getVideoDownloadUrl:function(e,t){return n._.safeUrlConcat(n._.makeHttps(e),"/download?token=".concat(t))},downloadResource:function(e,t,a){var n,o=l;l||(o=l=document.createElement("iframe"),document.body.appendChild(o),o.style.display="none"),o.src=e.url,r.k.logUserAction(Object.assign({id:null==e?void 0:e.id,name:null==e?void 0:e.name,resourceType:null===(n=null==e?void 0:e.metadata)||void 0===n?void 0:n.resourceType},t),Object.assign({actionType:i.Vw.Download,entity:i.py.Resource,workflowPhase:i.eu.Complete},a))}}},26492:(e,t,a)=>{a.d(t,{T:()=>d});var n=a(32735),r=a(23481),i=a(65858),l=a(83914),o=a(4594),c=a(35223),s="shared.playPage";function d(e){var t=r.T.encloseNamespace(s),a=function(e){switch(e){case o.E.Video:return"video";case o.E.Clip:return"clip";case o.E.Interactive:return"interactive";default:return""}}(e.typeId);return n.createElement("div",{className:"alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center"},n.createElement(l.x,{svgName:c.vn.Archive,size:l.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},t("archivedInfoTitle",{type:a})),(!e.hasStudentExperience||a===i.py.Video)&&n.createElement("p",{className:"mb-1"},t("archivedInfo",{type:"".concat(a,"s")}))))}},47938:(e,t,a)=>{a.d(t,{W:()=>m});var n=a(32735),r=a(36848),i=a(83914),l=a(83345),o=a(5345),c=a(26361),s=a(14070),d=a(97291),u="shared.playPage";function m(e){var t,a;if(!(null===(a=null===(t=e.restrictions)||void 0===t?void 0:t.value)||void 0===a?void 0:a.length)||!e.yearGroups||!e.canManageVideoAccess)return n.createElement(n.Fragment,null);if(c.l.getWeightedRestriction(e.restrictions.value).type!==o.c.Custom)return n.createElement(n.Fragment,null);var m=c.l.mapRestrictionToClass(e.restrictions),p="".concat(m," fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center");return n.createElement("div",{className:p},n.createElement("div",{className:"d-flex align-items-center"},n.createElement(i.x,{svgName:c.l.mapRestrictionToSvg(e.restrictions),size:i.S.Large}),n.createElement("span",{className:"ps-1"},c.l.mapRestrictionToText(e.restrictions,e.yearGroups))),n.createElement(r.F,{appLink:{application:d.O.DEFAULT,action:s.e.Default.APPROVE_VIDEO,params:{objectId:e.objectId,objectTypeId:e.objectTypeId}},className:"btn btn-outline-dark"},n.createElement(l.x,{namespace:u,phrase:"approve"})))}},76162:(e,t,a)=>{a.d(t,{O:()=>f});var n=a(32735),r=a(23481),i=a(28400),l=a(11518),o=a(22843),c=a(3332),s=a(68626);var d=n.memo((function(e){var t=e.data,a=e.thumbnailSize,r=e.preloadImage,i=e.getAppLink;return n.createElement("div",{className:"flex-shrink-0 px-1 ".concat("hzP5u")},n.createElement(c.u,{type:"cosmetic",textPosition:s.z.Independent,video:t,appLink:i(t),imageOptions:{size:a},preload:r,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,hideDuration:!1}),n.createElement("div",{className:"mt-2"},n.createElement(o.h,Object.assign({},e,{video:t,appLink:e.getAppLink(t)}))))})),u=a(58704),m=a(31908),p=a(14070),v=a(97291),g="shared.playPageClips";function f(e){var t;if(!e.canViewClips||!(null===(t=e.clips)||void 0===t?void 0:t.length))return n.createElement(n.Fragment,null);var a=m.M.isVideo(e.video);return n.createElement("section",{className:"pb-4"},n.createElement(l.kM,{name:r.T.getPhrase(g,a?"clips":"otherClips",{count:e.clips.length}),contents:u.z.Clips,collection:e.clips,prefetched:!0,getChildAppLink:function(e){return{application:v.O.CLIPS,action:p.e.Clips.PLAY_CLIP,args:[e.id,i.m.slugify(e.name)]}},appLink:m.M.isVideo(e.video)?{action:p.e.Videos.VIDEO_CLIPS,application:v.O.VIDEOS,args:[e.video.id]}:{action:p.e.Clips.CLIP_CLIPS,application:v.O.CLIPS,args:[e.video.id]},childComponent:d,extraChildComponentProps:{yearGroups:e.yearGroups,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite},analyticsData:e.analyticsData}))}},31261:(e,t,a)=>{a.d(t,{J:()=>v});var n=a(32735),r=a(23481),i=a(28400),l=a(11518),o=a(47862),c=a(58704),s=a(59598),d=a(31908),u=a(14070),m=a(97291),p="shared.playPageInteractives";function v(e){var t,a;return e.canViewInteractives&&(null===(a=null===(t=e.video.interactives)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)?n.createElement("section",{className:"pb-4",ref:e.containerRef,id:s.K.Interactives},n.createElement(l.kM,{name:r.T.getPhrase(p,"interactives",{count:e.video.interactives.data.length}),contents:c.z.Interactives,collection:e.video.interactives.data,prefetched:!0,getChildAppLink:function(e){return{application:m.O.INTERACTIVES,action:u.e.Interactives.VIEW_INTERACTIVE,args:[e.id,i.m.slugify(e.name)]}},appLink:d.M.isVideo(e.video)?{action:u.e.Videos.VIDEO_INTERACTIVES,application:m.O.VIDEOS,args:[e.video.id]}:{action:u.e.Clips.CLIP_INTERACTIVES,application:m.O.CLIPS,args:[e.video.id]},childComponent:o.K,extraChildComponentProps:{yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,imageCdnUrl:e.imageCdnUrl,questionsAppLink:{application:m.O.INTERACTIVES,action:u.e.Interactives.PREVIEW_QUESTIONS}},analyticsData:e.analyticsData})):n.createElement(n.Fragment,null)}},91479:(e,t,a)=>{a.d(t,{v:()=>y});var n=a(32735),r=a(65858),i=a(83657),l=a(36848),o=a(40955),c=a(18559),s=a(17464),d=a(83345),u=a(38647),m=a(11882),p=a(80143),v=a(31908),g=a(10671);const f={series:"wTlJJ",badgeListContainer:"Vaout"};var h="shared.playPage";function y(e){var t,a,y,b,E,k,N=(0,p.n)(null===(t=e.media.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),C=n.useRef(null),w=n.useRef(null),I=v.M.isVideo(e.media)&&!!(null===(a=e.media.rating)||void 0===a?void 0:a.value)||v.M.isVideo(e.media)&&!!e.media.productionYear||!!(null===(b=null===(y=e.media.subjectPresentationAudiences)||void 0===y?void 0:y.data)||void 0===b?void 0:b.length),A=(0,g._)({location:g.i.PlayPage,shareId:e.shareId}),T=!!e.originalVideoAppLink&&v.M.isClip(e.media)&&v.M.canViewOriginalVideo(e.media);return n.createElement("section",{className:"mb-3 position-relative",ref:C},n.createElement("div",{className:"d-inline-block w-100",ref:w},e.featureAccess.canNavigate&&n.createElement("div",{className:"ms-2 float-end"},n.createElement(i.e,{actions:A.getVideoActions(e.media),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return A.fetchMoreActions(e.media)}})),!!v.M.isVideo(e.media)&&n.createElement(m.$,{type:"series",video:e.media,appLink:null===(E=e.getSeriesAppLink)||void 0===E?void 0:E.call(e,e.media.series),className:"".concat(f.series," text-truncate mw-100"),analyticsOptions:{location:r.LZ.PlayPage}}),n.createElement("h1",{className:"h4 mb-2 mw-100"},n.createElement("span",{className:"align-self-center"},e.media.name),n.createElement(u.m,{tooltipPlacement:"right",className:"d-inline-block ps-1",video:e.media,yearGroups:e.yearGroups})),I&&n.createElement(s.c,{className:f.badgeListContainer},n.createElement(o.P,{audience:N,className:"bg-white text-dark",border:"dark"}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.Rating,data:e.media.rating}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.ProductionYear,data:e.media.productionYear}))),v.M.isClip(e.media)&&T&&n.createElement("p",{className:"clamp-1"},n.createElement(d.x,{namespace:h,phrase:"viewOriginal"})," ",n.createElement(l.F,{className:"info-link",appLink:e.originalVideoAppLink},null===(k=e.media._parentVideo)||void 0===k?void 0:k.name)))}},81024:(e,t,a)=>{a.d(t,{S:()=>g});var n=a(32735),r=a(23481),i=a(65858),l=a(36848),o=a(83914),c=a(54610),s=a(67453),d=a(35223),u=a(31908);const m="LL7My",p="QoLgZ";var v=r.T.encloseNamespace("shared.playerPlaceholder");function g(e){switch(e.type){case"pip":return n.createElement(f,Object.assign({},e));case"public":return n.createElement(h,Object.assign({},e));default:return n.createElement(n.Fragment,null)}}var f=function(e){var t,a;return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(null!==(a=null===(t=u.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"","')")}},n.createElement("p",{className:"m-0 text-white h3 ".concat("BcnSH")},v("playingPiP")),n.createElement("div",{className:m}))},h=function(e){var t,a,r=s.j.createUrl(null!==(a=null===(t=u.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==a?a:"",{size:c.h2.Large});return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(r,"')")}},n.createElement(l.F,{appLink:e.appLink,analyticsOptions:{actionType:i.Vw.Click,location:i.LZ.PlayPage,entity:i.py.AppLink,workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:{}},n.createElement(o.x,{svgName:d.vn.PlayCircle,className:"x_1f6"}),n.createElement("div",{className:m})))}},78166:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(32735),r=a(71020),i=a(83345),l=a(74696),o=a(13231),c=a(51365),s=a(22902),d=a(31908),u=a(10671),m=a(10741),p=a(82431),v="shared.relatedVideos";function g(e){var t,a,g=(0,u._)({location:u.i.VideoItem}),f=(0,s.T)().hasPermissions;if(!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated))return n.createElement(n.Fragment,null);if(e.relatedVideos.hasError)return n.createElement(n.Fragment,null);if(e.relatedVideos.hasCompleted&&!(null===(a=e.relatedVideos.videos)||void 0===a?void 0:a.length))return n.createElement(n.Fragment,null);if(!e.relatedVideos.isFetching&&!e.relatedVideos.hasCompleted)return n.createElement(n.Fragment,null);var h=!d.M.isInteractive(e.currentVideo);return n.createElement(c.M.Provider,{value:g},n.createElement("h2",{className:"h4 mb-0"},n.createElement(i.x,{namespace:v,phrase:h?"upNext":"relatedVideos"})),e.relatedVideos.hasCompleted?n.createElement(o.E4,{videos:e.relatedVideos.videos,yearGroups:e.yearGroups,getSubTextAppLink:function(t){return p.j.getSeriesAppLink(t.series,e.moviesAndTv?{mtv:!0}:null)},getVideoAppLink:e.getVideoAppLink,hasPermissions:f,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return m.j.getPreviewQuestionsAppLink(e)}}):n.createElement(l.S,null),e.relatedVideos.hasMore&&n.createElement(r._,{isFetching:e.relatedVideos.isFetching,fetchNext:e.relatedVideos.fetchNext}))}},35014:(e,t,a)=>{a.d(t,{I:()=>d});var n=a(20354),r=a(16714),i=a(12754),l=a(39151),o=a(22902),c=a(15311),s=a(11387);function d(){var e=(0,o.T)(),t=e.hasPermissions,a=e.hasLocalPermissions,d=(0,c.r)().hasProduct,u=n.a.useBasicFetch(l.L.config()),m=d(i.x.Primary);return{canWatchPublicly:function(e){var t,a;return!!e&&!!(null===(a=null===(t=u.data)||void 0===t?void 0:t.allowedPublicVideos)||void 0===a?void 0:a[e])},canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:m&&t(r.C.ViewVideoInteractives),canViewClips:m&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:a(r.E.UseVideoActions),canViewPublicLayout:!a(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:a(r.E.ViewVideoResourceItems),canNavigate:m}}},97816:(e,t,a)=>{a.d(t,{V:()=>d});var n=a(32735),r=a(20354),i=a(21750),l=a(31949),o=a(1575);function c(e,t){if(e){if("string"==typeof e)return s(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function d(e){var t,a,d,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(l.N.currentUser()),p=n.useRef(new Set),v=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),g=(a=n.useState([]),d=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,l,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return o}}(a,d)||c(a,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.")}()),f=g[0],h=g[1];n.useEffect((function(){var e;if((null==v?void 0:v.length)&&(null===(e=m.data)||void 0===e?void 0:e.isAuthenticated)){var t=[];v.forEach((function(e){p.current.has(e)||(t.push(e),p.current.add(e))})),t.length&&h((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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.")}()}(e),[i.x.hasCurriculumLinks(t,null,u.flightNamespace),o.R.videoMixinAssocs(t,u.flightNamespace)])}))}}),[null==v?void 0:v.length,null===(t=m.data)||void 0===t?void 0:t.isAuthenticated]),r.a.useBasicFetchAll(f)}}}]);
|
|
2
|
+
//# sourceMappingURL=3854-9e1422da99-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3854-9e1422da99-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/components/play-page/resources/PlayPageResources.tsx","file:///app/packages/libs/shared/src/components/points-of-interest-list/points-of-interest-list.scss","file:///app/packages/libs/shared/src/components/points-of-interest-list/PointsOfInterestList.tsx","file:///app/packages/libs/shared/src/components/video-at-a-glance/video-at-a-glance.scss","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlance.tsx","file:///app/packages/libs/shared/src/components/video-at-a-glance/VideoAtAGlanceUtils.ts","file:///app/packages/libs/shared/src/components/video-details/VideoDetailsPartial.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/components/widgets/items/interactive-widget-item/InteractiveWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/interactive-widget-item/interactive-widget-item.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/resource-thumbnail.scss","file:///app/packages/libs/shared/src/components/resource-thumbnail/ResourceThumbnail.tsx","file:///app/packages/libs/shared/src/utils/ResourceHelper.ts","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/resource-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.tsx","file:///app/packages/libs/shared/src/flight-requests/ThemeRequests.ts","file:///app/packages/libs/shared/src/hooks/usePrevious.ts","file:///app/packages/libs/shared/src/hooks/useTableOfContentsScroll.tsx","file:///app/packages/libs/shared/src/utils/DownloadHelper.ts","file:///app/packages/projects/lite/src/shared/components/play-page/ArchivedBanner.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/RestrictionBanner.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/ClipWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/clip-widget-item/clip-widget-item.scss","file:///app/packages/projects/lite/src/shared/components/play-page/components/clips/PlayPageClips.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/components/interactives/PlayPageInteractives.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/components/title-and-actions/title-and-actions.scss","file:///app/packages/projects/lite/src/shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions.tsx","file:///app/packages/projects/lite/src/shared/components/player-placeholder/player-placeholder.scss","file:///app/packages/projects/lite/src/shared/components/player-placeholder/PlayerPlaceholder.tsx","file:///app/packages/projects/lite/src/shared/components/related-videos/RelatedVideos.tsx","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ResourceWidgetItem, ResourceWidgetItemProps } from 'libs/shared/components/widgets/items/resource-widget-item/ResourceWidgetItem';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\n\nconst namespace = 'shared.playPageResources';\n\nfunction getResources(\n video: Video,\n isLearner: boolean\n): Array<Resource | Link> {\n const resources = video.resources?.data ?? [];\n const links = video.links?.data ?? [];\n\n if (!isLearner)\n return [ ...resources, ...links ];\n\n const filteredResources = resources.filter(r => {\n return [ 'additional-materials', 'student-activity' ].includes(r.metadata?.resourceType);\n });\n\n return [ ...filteredResources, ...links ];\n}\n\ninterface PlayPageResourcesProps {\n video: Video | Clip;\n imageCdnUrl: string;\n canViewResources: boolean;\n getAppLink: (resource: Resource) => Core.AppLink;\n analyticsData: HashObject;\n resourceThumbnailFallbackUrl: string;\n containerRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport function PlayPageResources(props: PlayPageResourcesProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n function onClickDownload(resource: Resource): void {\n DownloadHelper.downloadResource(\n resource,\n props.analyticsData,\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n }\n\n const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n\n if (!resources.length)\n return <></>;\n\n return (\n <section id={PlayPageAnchor.Resources} className='pb-4' ref={props.containerRef}>\n <FixedWidget<ResourceWidgetItemProps>\n name={LanguageService.getPhrase(namespace, 'resources', { count: resources.length })}\n contents={WidgetContents.PlayPageResources}\n collection={resources}\n prefetched\n childComponent={ResourceWidgetItem}\n extraChildComponentProps={{\n imageCdnUrl: props.imageCdnUrl,\n imageErrorFallbackUrl: props.resourceThumbnailFallbackUrl,\n actionBehaviour: props.canViewResources ? 'normal' : 'public',\n location: 'play-page',\n titlePosition: 'below',\n onClickDownload: props.canViewResources ? onClickDownload : null\n }}\n getChildAppLink={props.getAppLink}\n analyticsOptions={(() => {\n if (props.canViewResources)\n return {};\n \n return {\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n };\n })()}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"poiEntry\":\"Nmm9o\",\"poiText\":\"c75aW\",\"public\":\"R689i\",\"poiTimeStamp\":\"Wad94\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PointOfInterest } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './points-of-interest-list.scss';\n\ninterface PointOfInterestListProps{\n pointsOfInterest: PointOfInterest[];\n suppressInteractivity?: boolean;\n onClickPoiItem: (time: number) => void\n}\n\nconst namespace = 'shared.pointsOfInterestList';\n\nexport function PointOfInterestList(props: PointOfInterestListProps) {\n return (\n <div>\n <h2 className='h6 my-2'><Text namespace={namespace} phrase='heading' /></h2>\n\n <div>\n {props.pointsOfInterest.map(poi => {\n const timeStamp = DurationHelper.ToDisplayDuration(poi.startTime * 1000);\n if (props.suppressInteractivity)\n return (\n <div key={poi.startTime} className={`d-flex ${styles.poiEntry} mb-2`}>\n <span className={`d-flex rounded-pill justify-content-center align-items-center fw-semibold ${styles.poiTimeStamp}`}>{timeStamp}</span>\n <div className={`${styles.public}`}>{poi.description}</div>\n </div>\n );\n\n return (\n <DivButton\n key={poi.startTime}\n className={`d-flex ${styles.poiEntry} mb-2 cursor-pointer`}\n onClick={() => props.onClickPoiItem(poi.startTime)}\n >\n <div className={`d-flex rounded-pill justify-content-center align-items-center fw-semibold ${styles.poiTimeStamp}`}>{timeStamp}</div>\n <div className={`ms-2 ${styles.poiText}`}>{poi.description}</div>\n </DivButton>\n );\n })}\n\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"learningIntention\":\"T2LIU\"};","import * as React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/core';\n\nimport { PointOfInterestList } from 'libs/shared/components/points-of-interest-list/PointsOfInterestList';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { PointOfInterest, Tag, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasGlanceData, useLearningIntentionMarkdown } from './VideoAtAGlanceUtils';\n\nimport styles from './video-at-a-glance.scss';\n\nconst namespace = 'shared.videoAtAGlance';\n\nconst SCROLL_HEIGHT_MAX = 350; // in px\n\ninterface VideoAtAGlanceProps {\n video: Video;\n pointsOfInterest?: PointOfInterest[];\n suppressInteractivity?: boolean;\n setStartTime?: (time: number) => void;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n height?: number;\n}\n\nexport function VideoAtAGlance(props: VideoAtAGlanceProps): JSX.Element {\n const canViewGlance = hasGlanceData(props.video);\n\n const learningIntentionMarkdownHTML = useLearningIntentionMarkdown(props.video, canViewGlance);\n \n function getTags(): Tag[] {\n if (VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags?.data?.filter(tag => tag.tagType === TagType.Pedagogy || tag.tagType === TagType.Skill);\n }\n const tags = getTags();\n\n if (!canViewGlance)\n return <></>;\n\n function onClickPoiItem(time: number) {\n props.setStartTime(time);\n }\n\n return (\n <div className='rounded border mb-4 bg-white'>\n <Scrollbars autoHeight autoHeightMax={props.height ?? SCROLL_HEIGHT_MAX} >\n <div className='px-3 px-3 pt-3 pb-2'>\n\n <h2 className='h6 mb-2'><Text namespace={namespace} phrase='learningIntention' /></h2>\n <div className={`${styles.learningIntention} mb-3`}>\n <div dangerouslySetInnerHTML={{ __html: learningIntentionMarkdownHTML }}/>\n </div>\n\n {!!tags?.length && (\n <div className='mb-1'>\n <TagList\n tags={tags}\n {...TagHelper.getTagActionProps(props.getTagAppLink, props.suppressInteractivity)}\n className='mt-2'\n />\n </div>\n )}\n\n {!!props.pointsOfInterest.length && (\n <PointOfInterestList\n pointsOfInterest={props.pointsOfInterest}\n suppressInteractivity={props.suppressInteractivity}\n onClickPoiItem={onClickPoiItem}\n />\n )}\n </div>\n </Scrollbars>\n </div>\n );\n}","import { useEffect, useState } from 'react';\nimport * as marked from 'marked';\n\nimport { Clip, Glance, Video } from 'libs/shared/interfaces';\n\nconst POI_LINK_LINE = /\\[\\]\\(cv:\\/\\/poi\\?id=\\d+\\)\\n*/g;\n\nfunction stripPoisFromGlanceContent(glanceContent: string): string {\n return glanceContent.replace(POI_LINK_LINE, '');\n}\n\nfunction getLearningIntentionHTML(glance: Glance): string {\n const learningIntention = stripPoisFromGlanceContent(glance.content);\n\n return marked(learningIntention);\n}\n\nexport function useLearningIntentionMarkdown(\n video: Video,\n hasGlanceData?: boolean\n): string {\n const [ markdownHTML, setMarkdownHTML ] = useState('');\n\n useEffect(() => {\n if (!hasGlanceData)\n return;\n\n const content = getLearningIntentionHTML(video.glance);\n\n setMarkdownHTML(content);\n }, [ video.glance?.content, hasGlanceData ]);\n\n return markdownHTML;\n}\n\nexport function hasGlanceData(video: Video | Clip): boolean {\n return video.glance?.content && video.glance?.format === 'text/markdown';\n}","import React from 'react';\n\nexport function VideoDetailsPartial(): JSX.Element {\n return (\n <div className='p-3 mb-3 border rounded'>\n <div className='row'>\n <div className='pe-3 col-md-7 border-right'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '4.5rem' }}></div>\n <div className='partial-loading-background' style={{ height: '1.5rem', width: '15rem' }}></div>\n </div>\n <div className='col-md-5 ps-md-3 pt-3 pt-md-0'>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '7rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '10rem' }}></div>\n <div className='partial-loading-background mb-2' style={{ height: '1.5rem', width: '12rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '3.5rem' }}></div>\n <div className='partial-loading-background mb-2 me-2 d-inline-block' style={{ height: '1.5rem', width: '4.5rem' }}></div>\n </div>\n </div>\n </div>\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","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './interactive-widget-item.scss';\n\nconst namespace = 'shared.interactiveWidgetItem';\n\nexport interface InteractiveWidgetItemProps extends FixedWidgetItemProps<InteractiveMetadata> {\n imageCdnUrl: string;\n questionsAppLink: Core.AppLink;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n yearGroups: YearGroup[];\n}\n\nexport const InteractiveWidgetItem = React.memo(function(props: InteractiveWidgetItemProps): JSX.Element {\n const { data: interactive, thumbnailSize, preloadImage } = props;\n\n const questionsAppLink: Core.AppLink = {\n ...props.questionsAppLink,\n args: [props.data.id]\n };\n\n const questionsNumber = interactive._timepoints?.value?.length;\n\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <VideoThumbnail\n type='cosmetic'\n textPosition={ThumbnailTextPosition.Independent}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n hideDuration={false}\n imageCdnUrl={props.imageCdnUrl}\n />\n\n <div className='mt-2'>\n <ThumbnailText\n {...props}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n />\n </div>\n\n <div className='mt-1'>\n <AppLink appLink={questionsAppLink} className='cursor-pointer'>\n <Text namespace={namespace} phrase='previewQuestions' options={{ count: questionsNumber, smartCount: questionsNumber }}/>\n </AppLink>\n </div>\n\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"rXatl\",\"thumbnail\":\"WHqSi\",\"smallItemIconWidth\":\"Pq45z\",\"smallItemInfoWidth\":\"rjvTM\",\"smallProgressBarContainer\":\"W_aym\"};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"FFgf3\",\"imageTypeResource\":\"z4O5p\",\"fallBackImage\":\"Xy4zX\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Link, Resource } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { BaseImage } from '../image/BaseImage';\n\nimport styles from './resource-thumbnail.scss';\n\n// Used for both PDFs and Links where we don't know the image ratio\nconst DYNAMIC_RATIO_IMAGE_OPTIONS: ImageOptions = {\n width: 200,\n resizeType: ResizeType.Cover\n};\n\nfunction getThumbnailUrl(imageCdnUrl: string, resource: Resource | Link): string {\n const imageType = getImageType(resource);\n\n // Use the thumbnail if defined\n if ('thumbnail' in resource && resource.thumbnail?.url)\n return ImageHelper.createUrl(resource.thumbnail?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n \n const previewUrl = UrlHelper.safeUrlConcat(imageCdnUrl, '/v1/previews');\n\n if (!MasterTypeHelper.isResource(resource))\n return ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n\n if (imageType === ImageType.Pdf) {\n return resource.metadata.type === ResourceFileType.Pdf\n ? ImageHelper.createResourceImage(previewUrl, resource.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS })\n : ImageHelper.createResourceImage(previewUrl, resource.pdf?.url, { ...DYNAMIC_RATIO_IMAGE_OPTIONS });\n }\n\n if (resource.metadata.type !== ResourceFileType.Zip)\n return ImageHelper.createUrl(resource.url, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return '/images/zip-resource.png';\n}\n\nfunction getImageType(resource: Resource | Link): ImageType {\n if (!MasterTypeHelper.isResource(resource))\n return ImageType.Link;\n\n if (resource.metadata.type === ResourceFileType.Pdf || resource.pdf?.url)\n return ImageType.Pdf;\n\n return ImageType.Thumbnails;\n}\n\ninterface ResourceThumbnailProps {\n imageCdnUrl: string;\n resource: Resource | Link;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n}\n\nexport function ResourceThumbnail(props: ResourceThumbnailProps): JSX.Element {\n let metadata = null;\n let rotation = 0;\n\n if (MasterTypeHelper.isResource(props.resource)) {\n metadata = props.resource.metadata;\n rotation = props.resource.thumbnail?.metadata?.rotation ?? 0;\n }\n\n const thumbnailUrl = getThumbnailUrl(props.imageCdnUrl, props.resource);\n\n return (\n <BaseImage\n data={thumbnailUrl}\n imageType={getImageType(props.resource)}\n imageStyle={{ transform: `rotate(${rotation}deg)` }}\n alt={props.resource.name}\n errorFallbackImageSrc={props.imageErrorFallbackUrl}\n errorFallbackImageClassName={styles.fallBackImage}\n imageClassName={metadata?.type === ResourceFileType.Image ? `${styles.imageTypeResource} ${styles.imageStyle}` : ''}\n preload={props.preloadImage}\n preventLoad={!props.preloadImage}\n >\n </BaseImage>\n );\n}","import { ResourceType } from 'libs/shared/interfaces';\n\nexport const ResourceHelper = {\n getResourceTypeName(resourceType: ResourceType): string {\n switch (resourceType) {\n case 'additional-materials':\n return 'Additional Materials';\n\n case 'atom-guide':\n return 'ATOM Guide';\n\n case 'teacher-pack':\n return 'Teacher Pack';\n\n case 'student-activity':\n return 'Student Activity';\n\n default:\n return 'N/A';\n }\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"I9E5O\",\"item\":\"tqUFn\",\"dashboard\":\"o7j7p\",\"playPage\":\"V2RwX\",\"aspectRatio\":\"OnJDH\",\"outerContainer\":\"CIFy7\",\"innerContainer\":\"oUZPD\",\"actions\":\"jzGAm\",\"titleBelow\":\"Cpjs3\",\"thumbnailContainer\":\"EDiGi\",\"titleAbove\":\"e9ejn\",\"teacherPack\":\"_tdVE\",\"text\":\"g5NWS\",\"hoverState\":\"xRYhX\",\"atomGuide\":\"X39wU\",\"studentActivity\":\"X9pMl\",\"additionalMaterials\":\"qRVUo\",\"userUploaded\":\"_18JaV\",\"imageTypeResource\":\"KYtZL\",\"download\":\"fbb_e\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './resource-widget-item.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nfunction useCanPreview(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n}\n\nResourceTile.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTile(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n function onDownload() {\n if (!MasterTypeHelper.isResource(props.data))\n return;\n\n if (typeof props.onClickDownload === 'function') {\n props.onClickDownload(props.data);\n }\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDownload();\n }}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svgName={cvSvgLibrary.Download} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {!!props.data?.metadata?.resourceType && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemProps extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItem = React.memo(function(props: ResourceWidgetItemProps): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreview(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block ${props.titlePosition === 'above' ? 'no-decoration' : ''}`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTile {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTile {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTile {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Theme } from 'libs/shared/interfaces';\n\nimport { ThemeType } from '../enums/ThemeType';\n\nexport const ThemeRequests = {\n theme(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `themes:${id}`\n };\n },\n\n themeImages(name: string, type: ThemeType): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v1/themes', { name, type }),\n key: `themes:${name}:${type}`\n };\n },\n\n themes(type?: string): Flight.Request {\n let url = '/api/domain/v1/themes';\n let key = 'themes';\n\n if (type) {\n url += `?type=${type}`;\n key += `:type:${type}`;\n }\n\n return {\n url,\n key,\n formatData: (themes: Theme[]) => {\n return themes.sort((a, b) => a.name.localeCompare(b.name));\n }\n };\n },\n\n createTheme(\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/themes',\n key: 'theme',\n data,\n type: HttpVerbs.POST,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n },\n\n updateTheme(\n id: string,\n data: Theme,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `update:theme:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteTheme(\n id: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/themes/${id}`,\n key: `delete:theme:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: 'themes',\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import React from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nconst HEADER_OFFSET = 80; // Size of header + some extra spacing\n\nexport const useTableOfContentsScroll = (elements: Element[], activeId: string) => {\n const [ hasDoneInitialScroll, setHasDoneInitialScroll ] = React.useState(false);\n\n const previousId = usePrevious(activeId);\n const currentId = activeId;\n\n React.useLayoutEffect(() => {\n if (!hasDoneInitialScroll || previousId !== currentId) {\n const target = elements.find(heading => heading && (heading?.id === currentId));\n\n if (target) {\n const rec = target.getBoundingClientRect();\n\n window.scrollBy({\n top: rec.top - HEADER_OFFSET,\n behavior: 'smooth'\n });\n \n if (!hasDoneInitialScroll)\n setHasDoneInitialScroll(true);\n }\n }\n }, [ elements, previousId, currentId, hasDoneInitialScroll ]);\n};","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Resource } from '../interfaces';\n\nlet downloadRef: HTMLIFrameElement = null;\n\nexport const DownloadHelper = {\n getVideoDownloadUrl(downloadProxyUrl: string, token: string): string {\n return UrlHelper.safeUrlConcat(UrlHelper.makeHttps(downloadProxyUrl), `/download?token=${token}`);\n },\n\n downloadResource(\n resource: Resource,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions\n ): void {\n let iframe = downloadRef;\n\n if (!downloadRef) {\n iframe = downloadRef = document.createElement('iframe');\n document.body.appendChild(iframe);\n\n iframe.style.display = 'none';\n }\n\n iframe.src = resource.url;\n\n AnalyticsHelper.logUserAction({\n id: resource?.id,\n name: resource?.name,\n resourceType: resource?.metadata?.resourceType,\n ...analyticsData\n }, {\n actionType: UserAction.Download,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete,\n ...analyticsOptions\n });\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType } from 'libs/analytics/interfaces';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.playPage';\n\ninterface ArchivedBannerProps {\n typeId: MasterType;\n hasStudentExperience: boolean;\n}\n\nfunction mapTypeId(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Video:\n return 'video';\n case MasterType.Clip:\n return 'clip';\n case MasterType.Interactive:\n return 'interactive';\n default:\n return '';\n }\n}\n\nexport function ArchivedBanner(props: ArchivedBannerProps): JSX.Element {\n const getPhrase = LanguageService.encloseNamespace(namespace);\n const type = mapTypeId(props.typeId);\n\n return (\n <div className='alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center'>\n <SvgContainer\n svgName={cvSvgLibrary.Archive}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle', { type })}</p>\n {(!props.hasStudentExperience || type === EntityType.Video) && (\n <p className='mb-1'>{getPhrase('archivedInfo', { type: `${type}s` })}</p>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.playPage';\n\ninterface RestrictionBannerProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n objectId: string;\n objectTypeId: MasterType;\n canManageVideoAccess: boolean;\n}\n\nexport function RestrictionBanner(props: RestrictionBannerProps): JSX.Element {\n if (!props.restrictions?.value?.length || !props.yearGroups || !props.canManageVideoAccess)\n return <></>;\n\n const restriction = RestrictionHelper.getWeightedRestriction(props.restrictions.value);\n\n if (restriction.type !== RestrictionType.Custom)\n return <></>;\n\n const baseClassName = RestrictionHelper.mapRestrictionToClass(props.restrictions);\n const className = `${baseClassName} fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center`;\n\n return (\n <div className={className}>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={RestrictionHelper.mapRestrictionToSvg(props.restrictions)}\n size={SvgContainerSize.Large}\n />\n <span className='ps-1'>\n {RestrictionHelper.mapRestrictionToText(props.restrictions, props.yearGroups)}\n </span>\n </div>\n \n <AppLink\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.APPROVE_VIDEO,\n params: {\n objectId: props.objectId,\n objectTypeId: props.objectTypeId\n }\n }}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='approve' />\n </AppLink>\n </div>\n );\n}","import React from 'react';\n\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './clip-widget-item.scss';\n\nexport interface ClipWidgetItemProps extends FixedWidgetItemProps<Clip> {\n imageCdnUrl: string;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n yearGroups: YearGroup[];\n}\n\nexport const ClipWidgetItem = React.memo(function(props: ClipWidgetItemProps): JSX.Element {\n const { data: clip, thumbnailSize, preloadImage, getAppLink } = props;\n\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <VideoThumbnail\n type='cosmetic'\n textPosition={ThumbnailTextPosition.Independent}\n video={clip}\n appLink={getAppLink(clip)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n imageCdnUrl={props.imageCdnUrl}\n hideDuration={false}\n />\n\n <div className='mt-2'>\n <ThumbnailText\n {...props}\n video={clip}\n appLink={props.getAppLink(clip)}\n />\n </div>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"hzP5u\",\"thumbnail\":\"z2JjL\",\"smallItemIconWidth\":\"PfCrs\",\"smallItemInfoWidth\":\"AHFZu\",\"smallProgressBarContainer\":\"WfOtB\",\"smallItemNameWidth\":\"Rq6Cd\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ClipWidgetItem, ClipWidgetItemProps } from 'libs/shared/components/widgets/items/clip-widget-item/ClipWidgetItem';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.playPageClips';\n\ninterface PlayPageClipsProps {\n video: Video | Clip;\n clips: Clip[];\n canViewClips: boolean;\n yearGroups: YearGroup[];\n imageCdnUrl: string;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n analyticsData: HashObject;\n}\n\nexport function PlayPageClips(props: PlayPageClipsProps): JSX.Element {\n if (!props.canViewClips || !props.clips?.length)\n return <></>;\n\n const parentIsVideo = VideoHelper.isVideo(props.video);\n\n function getAppLink() {\n if (VideoHelper.isVideo(props.video)) {\n return {\n action: Actions.Videos.VIDEO_CLIPS,\n application: AppChannels.VIDEOS,\n args: [props.video.id]\n };\n }\n return {\n action: Actions.Clips.CLIP_CLIPS,\n application: AppChannels.CLIPS,\n args: [props.video.id]\n };\n }\n\n return (\n <section className='pb-4'>\n <FixedWidget<ClipWidgetItemProps>\n name={LanguageService.getPhrase(\n namespace,\n parentIsVideo ? 'clips' : 'otherClips',\n { count: props.clips.length }\n )}\n contents={WidgetContents.Clips}\n collection={props.clips}\n prefetched\n getChildAppLink={(clip: Clip) => {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ clip.id, TextHelper.slugify(clip.name) ]\n };\n }}\n appLink={getAppLink()}\n childComponent={ClipWidgetItem}\n extraChildComponentProps={{\n yearGroups: props.yearGroups,\n imageCdnUrl: props.imageCdnUrl,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite\n }}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { InteractiveWidgetItem, InteractiveWidgetItemProps } from 'libs/shared/components/widgets/items/interactive-widget-item/InteractiveWidgetItem';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, Interactive, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.playPageInteractives';\n\ninterface PlayPageInteractivesProps {\n canViewInteractives: boolean;\n video: Video | Clip;\n imageCdnUrl: string;\n analyticsData: HashObject;\n containerRef: React.RefObject<HTMLDivElement>;\n yearGroups: YearGroup[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n}\n\nexport function PlayPageInteractives(props: PlayPageInteractivesProps): JSX.Element {\n if (!props.canViewInteractives || !props.video.interactives?.data?.length)\n return <></>;\n\n function getAppLink() {\n if (VideoHelper.isVideo(props.video))\n return {\n action: Actions.Videos.VIDEO_INTERACTIVES,\n application: AppChannels.VIDEOS,\n args: [props.video.id]\n };\n\n return {\n action: Actions.Clips.CLIP_INTERACTIVES,\n application: AppChannels.CLIPS,\n args: [props.video.id]\n };\n }\n\n return (\n <section className='pb-4' ref={props.containerRef} id={PlayPageAnchor.Interactives}>\n <FixedWidget<InteractiveWidgetItemProps>\n name={LanguageService.getPhrase(namespace, 'interactives', { count: props.video.interactives.data.length })}\n contents={WidgetContents.Interactives}\n collection={props.video.interactives.data}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n appLink={getAppLink()}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n yearGroups: props.yearGroups,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n imageCdnUrl: props.imageCdnUrl,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n }\n }}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"series\":\"wTlJJ\",\"badgeListContainer\":\"Vaout\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { Clip, PresentationAudience, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\n\nimport styles from './title-and-actions.scss';\n\nconst namespace = 'shared.playPage';\n\ninterface PlayPageTitleAndActionsProps {\n media: Clip | Video;\n yearGroups: YearGroup[];\n audiences: PresentationAudience[];\n featureAccess: VideoFeaturesHash;\n getSeriesAppLink?: (series: Series) => Core.AppLink;\n originalVideoAppLink?: Core.AppLink;\n shareId: string;\n}\n\nexport function PlayPageTitleAndActions(props: PlayPageTitleAndActionsProps): JSX.Element {\n const mergedAudience = useMergeAudiences(props.media.subjectPresentationAudiences?.data, props.audiences);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const titleContainerRef = React.useRef<HTMLDivElement>(null);\n\n const hasBadges = (\n (VideoHelper.isVideo(props.media) && !!props.media.rating?.value) ||\n (VideoHelper.isVideo(props.media) && !!props.media.productionYear) ||\n !!props.media.subjectPresentationAudiences?.data?.length\n );\n\n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n const canViewOriginal = !!props.originalVideoAppLink &&\n VideoHelper.isClip(props.media) &&\n VideoHelper.canViewOriginalVideo(props.media);\n\n return (\n <section className='mb-3 position-relative' ref={containerRef}>\n <div className='d-inline-block w-100' ref={titleContainerRef}>\n {props.featureAccess.canNavigate &&\n <div className='ms-2 float-end'>\n <Actions\n actions={videoActions.getVideoActions(props.media)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.media)}\n />\n </div>\n }\n\n {!!VideoHelper.isVideo(props.media) && (\n <VideoSubText\n type='series'\n video={props.media}\n appLink={props.getSeriesAppLink?.(props.media.series)}\n className={`${styles.series} text-truncate mw-100`}\n analyticsOptions={{ location: LocationContext.PlayPage }}\n />\n )}\n <h1 className='h4 mb-2 mw-100'>\n <span className='align-self-center'>{props.media.name}</span>\n <RestrictionPadlock\n tooltipPlacement='right'\n className='d-inline-block ps-1'\n video={props.media}\n yearGroups={props.yearGroups}\n />\n </h1>\n\n {hasBadges && (\n <BadgeListContainer className={styles.badgeListContainer}>\n <AudienceLabel\n audience={mergedAudience}\n className='bg-white text-dark'\n border='dark'\n />\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.Rating} data={props.media.rating} />\n )}\n {VideoHelper.isVideo(props.media) && (\n <Badge type={BadgeType.ProductionYear} data={props.media.productionYear} />\n )}\n </BadgeListContainer>\n )}\n </div>\n\n {VideoHelper.isClip(props.media) && canViewOriginal && (\n <p className='clamp-1'>\n <Text namespace={namespace} phrase='viewOriginal' />\n \n <AppLink className='info-link' appLink={props.originalVideoAppLink}>\n {props.media._parentVideo?.name}\n </AppLink>\n </p>\n )}\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"LL7My\",\"centeredIcon\":\"x_1f6\",\"bgImage\":\"QoLgZ\",\"centeredOverlay\":\"BcnSH\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './player-placeholder.scss';\n\nconst namespace = 'shared.playerPlaceholder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlayerPlaceholderProps {\n video: VideoTypes;\n type: 'pip' | 'public';\n appLink?: Core.AppLink;\n}\n\nexport function PlayerPlaceholder(props: PlayerPlaceholderProps): JSX.Element {\n switch (props.type) {\n case 'pip':\n return <PipPlaceholder {...props} />;\n case 'public':\n return <PublicPlaceholder {...props} />;\n default:\n return <></>;\n }\n}\n\nconst PipPlaceholder = (props: PlayerPlaceholderProps) => (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${VideoHelper.getThumbnail(props.video)?.url ?? ''}')` }}\n >\n <p className={`m-0 text-white h3 ${styles.centeredOverlay}`}>{getPhrase('playingPiP')}</p>\n <div className={styles.mask} />\n </div>\n);\n\nconst PublicPlaceholder = (props: PlayerPlaceholderProps) => {\n const thumbnailUrl = ImageHelper.createUrl(VideoHelper.getThumbnail(props.video)?.url ?? '', {\n size: ImageSize.Large\n });\n\n return (\n <div\n className={`position-relative responsive-img ${styles.bgImage}`}\n style={{ backgroundImage: `url('${thumbnailUrl}')` }}\n >\n <AppLink\n appLink={props.appLink}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.PlayPage,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n analyticsData={{}}\n >\n <SvgContainer\n svgName={cvSvgLibrary.PlayCircle}\n className={styles.centeredIcon}\n />\n <div className={styles.mask} />\n </AppLink>\n </div>\n );\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, CurrentUser, FavouriteFunc, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.relatedVideos';\n\ninterface RelatedVideosProps {\n currentVideo: VideoTypes;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n getVideoAppLink: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n moviesAndTv: boolean;\n}\n\nexport function RelatedVideos(props: RelatedVideosProps): JSX.Element {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { hasPermissions } = usePermissions();\n\n if (!props.currentUser?.isAuthenticated) // Don't render if user is unauthenticated\n return <></>;\n\n if (props.relatedVideos.hasError) // Don't render if request has errored\n return <></>;\n\n if (props.relatedVideos.hasCompleted && !props.relatedVideos.videos?.length) // Don't render if response is empty\n return <></>;\n\n if (!props.relatedVideos.isFetching && !props.relatedVideos.hasCompleted) // Don't render if request is never made\n return <></>;\n\n // We don't support autoplaying from interactives. This means the related videos heading won't say \"Up next\"\n const canAutoplay = !VideoHelper.isInteractive(props.currentVideo);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase={canAutoplay ? 'upNext' : 'relatedVideos'} />\n </h2>\n {props.relatedVideos.hasCompleted\n ? (\n <VideoList\n videos={props.relatedVideos.videos}\n yearGroups={props.yearGroups}\n getSubTextAppLink={video => {\n return SeriesAppLinkHelper.getSeriesAppLink(video.series, props.moviesAndTv ? { mtv: true } : null);\n }}\n getVideoAppLink={props.getVideoAppLink}\n hasPermissions={hasPermissions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n />\n ) : <PartialVideoList />\n }\n {props.relatedVideos.hasMore &&\n <InfiniteScrollFooter\n isFetching={props.relatedVideos.isFetching}\n fetchNext={props.relatedVideos.fetchNext}\n />\n }\n </VideoActionsContext.Provider>\n );\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 { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(videos: VideoCollection | Video[], options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videoIds = videos && (Array.isArray(videos)\n ? videos.filter(Boolean).map(v => v.id)\n : videos.data.filter(Boolean).map(v => v.id));\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.data?.isAuthenticated)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => [\n ...r,\n ClassificationRequests.hasCurriculumLinks(unhydratedVideos, null, options.flightNamespace),\n VideoRequests.videoMixinAssocs(unhydratedVideos, options.flightNamespace)\n ]);\n }, [ videoIds?.length, currentUser.data?.isAuthenticated ]);\n\n Flight.useBasicFetchAll(request);\n}"],"names":["InfiniteScrollFooter","props","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","className","Spinner","as","animation","role","SvgContainer","svgName","size","S","onClick","defaultProps","namespace","PlayPageResources","hasPermissions","resources","video","isLearner","data","links","filteredResources","filter","r","includes","metadata","resourceType","getResources","length","id","containerRef","name","count","contents","collection","prefetched","childComponent","R","extraChildComponentProps","imageCdnUrl","imageErrorFallbackUrl","resourceThumbnailFallbackUrl","actionBehaviour","canViewResources","location","titlePosition","onClickDownload","resource","analyticsData","actionType","entity","getChildAppLink","getAppLink","analyticsOptions","workflowPhase","descriptor","SignUp","PointOfInterestList","Text","phrase","pointsOfInterest","map","poi","timeStamp","DurationHelper","startTime","suppressInteractivity","key","description","DivButton","onClickPoiItem","SCROLL_HEIGHT_MAX","VideoAtAGlance","canViewGlance","learningIntentionMarkdownHTML","tags","VideoHelper","tag","tagType","TagType","getTags","autoHeight","autoHeightMax","height","dangerouslySetInnerHTML","__html","TagList","TagHelper","getTagAppLink","time","setStartTime","POI_LINK_LINE","useLearningIntentionMarkdown","hasGlanceData","useState","markdownHTML","setMarkdownHTML","useEffect","content","glance","learningIntention","replace","format","VideoDetailsPartial","style","width","PartialVideoList","Array","numVideos","fill","_","i","allowBulkActions","PartialVideoItem","breakpoints","useBreakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","InteractiveWidgetItem","interactive","thumbnailSize","preloadImage","questionsAppLink","args","questionsNumber","_timepoints","value","VideoThumbnail","type","textPosition","ThumbnailTextPosition","appLink","imageOptions","preload","setFavourite","canFavourite","hideDuration","ThumbnailText","AppLink","options","smartCount","DYNAMIC_RATIO_IMAGE_OPTIONS","resizeType","getImageType","MasterTypeHelper","ResourceFileType","pdf","url","ResourceThumbnail","rotation","thumbnail","thumbnailUrl","imageType","ImageHelper","previewUrl","UrlHelper","getThumbnailUrl","BaseImage","imageStyle","transform","alt","errorFallbackImageSrc","errorFallbackImageClassName","imageClassName","preventLoad","ResourceHelper","getResourceTypeName","ResourceTile","isResource","MasterType","baseClass","getColour","theme","containerClass","applyHoverState","getInnerContainerClass","Tooltip","title","thumbnailContainerClass","e","preventDefault","stopPropagation","hideTypeBadge","TypeBadge","typeId","TitleSubText","ResourceWidgetItem","canPreview","sm","logAction","AnalyticsHelper","tileProps","SeoConstants","href","target","ThemeRequests","themeImages","themes","formatData","sort","a","b","localeCompare","createTheme","success","error","always","invalidationKeys","updateTheme","deleteTheme","usePrevious","current","useTableOfContentsScroll","elements","activeId","hasDoneInitialScroll","setHasDoneInitialScroll","previousId","currentId","find","heading","rec","getBoundingClientRect","window","scrollBy","top","behavior","downloadRef","DownloadHelper","getVideoDownloadUrl","downloadProxyUrl","token","downloadResource","iframe","document","createElement","body","appendChild","display","src","ArchivedBanner","getPhrase","mapTypeId","hasStudentExperience","RestrictionBanner","restrictions","yearGroups","canManageVideoAccess","baseClassName","application","action","params","objectId","objectTypeId","ClipWidgetItem","clip","PlayPageClips","canViewClips","clips","parentIsVideo","LanguageService","WidgetContents","TextHelper","PlayPageInteractives","canViewInteractives","interactives","PlayPageTitleAndActions","mergedAudience","media","subjectPresentationAudiences","audiences","titleContainerRef","hasBadges","rating","productionYear","videoActions","useVideoActions","shareId","canViewOriginal","originalVideoAppLink","featureAccess","canNavigate","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","VideoSubText","getSeriesAppLink","series","RestrictionPadlock","tooltipPlacement","BadgeListContainer","AudienceLabel","audience","border","Badge","_parentVideo","PlayerPlaceholder","PipPlaceholder","PublicPlaceholder","backgroundImage","RelatedVideos","currentUser","isAuthenticated","relatedVideos","hasError","hasCompleted","videos","canAutoplay","currentVideo","getSubTextAppLink","moviesAndTv","mtv","getVideoAppLink","presentationAudiences","getPreviewQuestionsAppLink","hasMore","useVideoFeatureAccess","hasLocalPermissions","hasProduct","config","hasNP","canWatchPublicly","videoId","allowedPublicVideos","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","useVideoMixin","hydratedVideos","Set","videoIds","isArray","Boolean","v","request","setRequest","unhydratedVideos","forEach","has","push","add","flightNamespace"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4291],{49935:(e,a,t)=>{t.d(a,{Oo:()=>d,b2:()=>u});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)))},d=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})}))))},u=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:" "}}))}))))}))},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,d=n.a.useBasicFetch(c.L.config()),u=m(r.x.Primary);return{canWatchPublicly:function(e){var a,t;return!!e&&!!(null===(t=null===(a=d.data)||void 0===a?void 0:a.allowedPublicVideos)||void 0===t?void 0:t[e])},canViewGlance:a(i.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&a(i.C.ViewVideoInteractives),canViewClips:u&&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:u}}},94191:(e,a,t)=>{t.r(a),t.d(a,{VideoClipsView:()=>L});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),d=t(51365),u=t(183),p=t(39151),v=t(1666),b=t(31949),g=t(1575),f=t(22902),h=t(14070),E=t(97291),y=t(10671),V=t(27638),w=t(44110),N=t(35014),k=t(22490),I=t(16747),O=t(98620),C=t(82431),x=r.T.encloseNamespace("shared.videoMedia");function L(e){var a,t,r,L,P,A=e.videoId,S=(0,V.u)(s.LZ.VideoThumbnail),j=S.setFavourite,F=S.canFavourite,T=(0,y._)({location:y.i.VideoItem}),_=(0,N.I)(),B=c.a.useBasicFetch(b.N.currentUser()),D=c.a.useBasicFetch(B.data.isAuthenticated&&v.h.yearGroups(B.data.customerId)),R=c.a.useBasicFetch(g.R.video(A,null,B.data.id)),M=null===(t=null===(a=R.data)||void 0===a?void 0:a.clips)||void 0===t?void 0:t.data,W=(null==M?void 0:M.length)||0,Z=c.a.useBasicFetch(p.L.config()),G="".concat(x("clipHeading")," (").concat(W||"",")"),$=(0,w.i)(),H=(0,f.T)().hasPermissions,U=[{name:null===(r=R.data)||void 0===r?void 0:r.name,appLink:Object.assign(Object.assign({},O.Y.playVideo),{args:[A,l.m.slugify(null===(L=R.data)||void 0===L?void 0:L.name)]})},{name:G,appLink:{application:E.O.VIDEOS,action:h.e.Videos.VIDEO_CLIPS,args:[A]},active:!0}];return n.useEffect((function(){_.canViewClips||function(){var e;i.Q.C$.trigger(Object.assign(Object.assign({},O.Y.playVideo),{args:[A,l.m.slugify(null===(e=R.data)||void 0===e?void 0:e.name)]}),{replace:!0})}()}),[_.canViewClips]),R.data&&(null==M?void 0:M.length)&&Z.hasCompleted?n.createElement(d.M.Provider,{value:T},n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2 mb-2"},G),n.createElement("div",{className:"mb-2"},n.createElement(o.Oo,{breadcrumbs:U})),n.createElement(m.E4,{videos:M,yearGroups:D.data,getVideoAppLink:function(a,t){return k.W.getAppLink(a,Object.assign(Object.assign({},t),{context:u.Q.Widget,contextId:e.videoId}))},hasPermissions:H,getSubTextAppLink:function(e){return C.j.getSeriesAppLink(e.series)},setFavourite:j,canFavourite:F,presentationAudiences:$.data,imageCdnUrl:null===(P=Z.data)||void 0===P?void 0:P.imageCdnUrl}))):n.createElement(I.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)(),d=`${s}-cols`,u=[];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&&u.push(`${d}${i}-${t}`)})),(0,l.jsx)(t,{ref:r,...n,className:i()(a,s,...u)})}));s.displayName="Row";const o=s}}]);
|
|
2
|
+
//# sourceMappingURL=4291-4ea61b3610-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/4291-4ea61b3610-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/VideoClipsView.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: ' ' }} />\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 { 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, 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 { 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 VideoMediaViewProps {\n videoId: string;\n}\n\nexport function VideoClipsView(props: VideoMediaViewProps): 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>(\n VideoRequests.video(videoId, null, currentUser.data.id)\n );\n\n const content = video.data?.clips?.data;\n const count = content?.length || 0;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const title = `${getPhrase('clipHeading')} (${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_CLIPS,\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.canViewClips) {\n redirectToPlaypage();\n }\n }, [featureAccess.canViewClips]);\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 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","VideoClipsView","u","setFavourite","canFavourite","videoActions","location","featureAccess","currentUser","yearGroups","isAuthenticated","customerId","video","content","clips","count","title","audiences","args","application","action","replace","redirectToPlaypage","hasCompleted","value","videos","getVideoAppLink","context","contextId","getSubTextAppLink","series","presentationAudiences","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([[6723],{49935:(e,a,t)=>{t.d(a,{Oo:()=>d,b2:()=>u});var n=t(32735),i=t(36848),r=t(86764),l=t(3747),c=t(5859),s=t(35223),o=t(83914),m=function(e){var a=e.breadcrumb,t=a.name,r=a.appLink,l=a.active,c=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?n.createElement("strong",null,t):n.createElement(i.F,{appLink:r},c&&n.createElement(o.x,{svgName:s.vn.ChevronLeft,size:o.S.Small}),n.createElement("span",{className:c?"ms-2":""},t)))},d=function(e){var a=e.breadcrumbs,t=(0,l.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})}))))},u=n.memo((function(e){var a=e.numItems,t=void 0===a?3:a;return(0,l.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"},c.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:" "}}))}))))}))},74696:(e,a,t)=>{t.d(a,{S:()=>o});var n=t(32735),i=t(68050),r=t(69111),l=t(9977),c=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,c.k)(),t="sm"===l.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({},l.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:l.O.getThumbnailColSize(o)},n.createElement("div",{className:"partial-loading-background ".concat(t?"rounded":"rounded-3"," ").concat(s.partialThumbnail)})))),n.createElement(r.Z,Object.assign({},l.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:()=>l});var n=t(20354),i=t(89454),r=t(86698),l=function(){var e=(0,r.y)({redirectOnError:!0}),a=e.activePresentation,t=e.getFallbackPresentation,l=a||t();return n.a.useBasicFetch(!!l&&i.O.presentationAudiences(l.id))}},35014:(e,a,t)=>{t.d(a,{I:()=>m});var n=t(20354),i=t(16714),r=t(12754),l=t(39151),c=t(22902),s=t(15311),o=t(11387);function m(){var e=(0,c.T)(),a=e.hasPermissions,t=e.hasLocalPermissions,m=(0,s.r)().hasProduct,d=n.a.useBasicFetch(l.L.config()),u=m(r.x.Primary);return{canWatchPublicly:function(e){var a,t;return!!e&&!!(null===(t=null===(a=d.data)||void 0===a?void 0:a.allowedPublicVideos)||void 0===t?void 0:t[e])},canViewGlance:a(i.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&a(i.C.ViewVideoInteractives),canViewClips:u&&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:u}}},78630:(e,a,t)=>{t.r(a),t.d(a,{ClipClipsView:()=>P});var n=t(32735),i=t(81886),r=t(23481),l=t(20354),c=t(28400),s=t(65858),o=t(49935),m=t(13231),d=t(51365),u=t(183),p=t(43012),v=t(39151),b=t(1666),g=t(31949),f=t(1575),h=t(22902),E=t(14070),y=t(97291),w=t(10671),C=t(27638),N=t(44110),k=t(35014),V=t(22490),I=t(98620),x=t(82431),O=t(16747),L=r.T.encloseNamespace("shared.videoMedia");function P(e){var a,t,r,P,A,S,j,F,_,T,B=e.clipId,R=(0,C.u)(s.LZ.VideoThumbnail),M=R.setFavourite,W=R.canFavourite,Z=(0,w._)({location:w.i.VideoItem}),D=(0,k.I)(),G=l.a.useBasicFetch(g.N.currentUser()),$=l.a.useBasicFetch(G.data.isAuthenticated&&b.h.yearGroups(G.data.customerId)),H=l.a.useBasicFetch(p.e.clip(B)),U=null===(j=null===(S=null===(A=l.a.useBasicFetch((null===(t=null===(a=H.data)||void 0===a?void 0:a._parentVideo)||void 0===t?void 0:t.id)&&f.R.video(null===(P=null===(r=H.data)||void 0===r?void 0:r._parentVideo)||void 0===P?void 0:P.id,null,null==G?void 0:G.data.id)).data)||void 0===A?void 0:A.clips)||void 0===S?void 0:S.data)||void 0===j?void 0:j.filter((function(e){return e.id!==B})),Y=(null==U?void 0:U.length)||0,z=l.a.useBasicFetch(v.L.config()),Q="".concat(L("clipHeading")," (").concat(Y||"",")"),q=(0,N.i)(),X=(0,h.T)().hasPermissions,J=[{name:null===(F=H.data)||void 0===F?void 0:F.name,appLink:Object.assign(Object.assign({},I.Y.playClip),{args:[B,c.m.slugify(null===(_=H.data)||void 0===_?void 0:_.name)]})},{name:Q,appLink:{application:y.O.CLIPS,action:E.e.Clips.CLIP_CLIPS,args:[B]},active:!0}];return n.useEffect((function(){D.canViewClips||function(){var e;i.Q.C$.trigger(Object.assign(Object.assign({},I.Y.playClip),{args:[B,c.m.slugify(null===(e=H.data)||void 0===e?void 0:e.name)]}),{replace:!0})}()}),[D.canViewClips]),H.data&&(null==U?void 0:U.length)&&z.hasCompleted?n.createElement(d.M.Provider,{value:Z},n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2 mb-2"},Q),n.createElement("div",{className:"mb-2"},n.createElement(o.Oo,{breadcrumbs:J})),n.createElement(m.E4,{videos:U,yearGroups:$.data,getVideoAppLink:function(a,t){return V.W.getAppLink(a,Object.assign(Object.assign({},t),{context:u.Q.Widget,contextId:e.clipId}))},hasPermissions:X,getSubTextAppLink:function(e){return x.j.getSeriesAppLink(e.series)},setFavourite:M,canFavourite:W,presentationAudiences:q.data,imageCdnUrl:null===(T=z.data)||void 0===T?void 0:T.imageCdnUrl}))):n.createElement(O.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:()=>c});var n=t(32735),i=t(49935),r=t(74696);const l={partialHeading:"okxfx"};function c(){return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"partial-loading-background mb-2 ".concat(l.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),l=t(46304),c=t(74512);const s=r.forwardRef((({bsPrefix:e,className:a,as:t="div",...n},r)=>{const s=(0,l.vE)(e,"row"),o=(0,l.pi)(),m=(0,l.zG)(),d=`${s}-cols`,u=[];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&&u.push(`${d}${i}-${t}`)})),(0,c.jsx)(t,{ref:r,...n,className:i()(a,s,...u)})}));s.displayName="Row";const o=s}}]);
|
|
2
|
+
//# sourceMappingURL=6723-ece2125bab-lite.chunk.js.map
|