@clickview/lite 0.66.0-rc.0 → 0.66.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1958-46fa15e385-lite.chunk.js +2 -0
- package/dist/scripts/1958-46fa15e385-lite.chunk.js.map +1 -0
- package/dist/scripts/2431-d7d95fc5e6-lite.chunk.js +2 -0
- package/dist/scripts/2431-d7d95fc5e6-lite.chunk.js.map +1 -0
- package/dist/scripts/301-eccaa4c313-lite.chunk.js +2 -0
- package/dist/scripts/301-eccaa4c313-lite.chunk.js.map +1 -0
- package/dist/scripts/4359-e928b3edc9-lite.chunk.js +2 -0
- package/dist/scripts/4359-e928b3edc9-lite.chunk.js.map +1 -0
- package/dist/scripts/6965-46edd86c90-lite.chunk.js +2 -0
- package/dist/scripts/6965-46edd86c90-lite.chunk.js.map +1 -0
- package/dist/scripts/9182-95605d2b04-lite.chunk.js +2 -0
- package/dist/scripts/9182-95605d2b04-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-80560f5679.min.js → bundle-f772739f5d.min.js} +3 -3
- package/dist/scripts/{bundle-80560f5679.min.js.map → bundle-f772739f5d.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1958-0883952491-lite.chunk.js +0 -2
- package/dist/scripts/1958-0883952491-lite.chunk.js.map +0 -1
- package/dist/scripts/2431-f91a102c7b-lite.chunk.js +0 -2
- package/dist/scripts/2431-f91a102c7b-lite.chunk.js.map +0 -1
- package/dist/scripts/301-089f4b9e0c-lite.chunk.js +0 -2
- package/dist/scripts/301-089f4b9e0c-lite.chunk.js.map +0 -1
- package/dist/scripts/4359-55d1d30bcf-lite.chunk.js +0 -2
- package/dist/scripts/4359-55d1d30bcf-lite.chunk.js.map +0 -1
- package/dist/scripts/6965-3ae3c81898-lite.chunk.js +0 -2
- package/dist/scripts/6965-3ae3c81898-lite.chunk.js.map +0 -1
- package/dist/scripts/9182-db74c44406-lite.chunk.js +0 -2
- package/dist/scripts/9182-db74c44406-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-80560f5679.min.js.LICENSE.txt → bundle-f772739f5d.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1958],{3278:(e,t,n)=>{n.d(t,{z:()=>p});var a=n(32735),r=n(39202),i=n(23481),o=n(65858),l=n(38502),c=n(83345),s=n(40424);const u={pillTab:"bMJM0"};var f="discover.header";function p(e){var t,n,p,d,m,v;if(!e.type)return a.createElement(a.Fragment,null);if(e.type===s.Yv.Learner||e.hasStudentExperience)return a.createElement("div",{className:"py-3"},a.createElement("h1",{className:"h2 mb-0"},a.createElement(c.x,{namespace:f,phrase:"heading"})));var y=[{name:i.T.getPhrase(f,"forYou"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.forYou,active:"forYou"===e.active,analyticsData:{name:i.T.getPhrase(f,"forYou"),url:r.C$.getHref(null===(n=e.appLinks)||void 0===n?void 0:n.forYou)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:i.T.getPhrase(f,"whatsNew"),appLink:null===(p=e.appLinks)||void 0===p?void 0:p.whatsNew,active:"whatsNew"===e.active,analyticsData:{name:i.T.getPhrase(f,"whatsNew"),url:r.C$.getHref(null===(d=e.appLinks)||void 0===d?void 0:d.whatsNew)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}];return e.showCalendar&&y.push({name:i.T.getPhrase(f,"calendar"),appLink:null===(m=e.appLinks)||void 0===m?void 0:m.calendar,active:"calendar"===e.active,analyticsData:{name:i.T.getPhrase(f,"calendar"),url:r.C$.getHref(null===(v=e.appLinks)||void 0===v?void 0:v.calendar)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}),a.createElement("div",{className:"py-3 text-center mx-n3"},a.createElement(l.r,{tabs:y,className:u.pillTab}))}},38502:(e,t,n)=>{n.d(t,{r:()=>f});var a=n(32735),r=n(49985),i=n(36848),o=n(18559),l=n(11607),c=n(83914),s=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(c.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function f(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(s.Z.pillTabSelector,"\n ").concat(e.borderRadius?s.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(s.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?s.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(s.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(s.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}f.defaultProps={borderRadius:"lg"}},39902:(e,t,n)=>{n.d(t,{f:()=>o});var a=n(20354),r=n(75896);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t){var n=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),o=a.a.useBasicFetchAll(n);return{items:o.data.length?r.m.flatten(o.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},a=t.id,r=t,(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n));var n,a,r}),{}):null,isFetching:o.isFetching}}},38972:(e,t,n)=>{n.d(t,{a:()=>v});var a=n(32735),r=n(36848),i=n(83345),o=n(80247),l=n(57900),c=n(2948),s=n(10874),u=n(38143),f=n(35223);const p={banner:"B7jhq"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var m="contentUpdates.classificationBanner";function v(e){var t,n,v=e.classification,y=e.backgroundUrl,b=e.followed,h=e.follow,g=e.showFollowSpinner,w=(t=(0,c.D)(u.g.AUDIENCE_FILTER,void 0,{storage:l.Z1.SessionStorage}),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return a.createElement("div",{className:"banner mb-2 d-flex justify-content-between align-items-center rounded ".concat(p.banner),style:{backgroundImage:"url('".concat(y,"')")}},a.createElement(r.F,{className:"text-white text-shadow",appLink:e.getClassificationAppLink(v,w)},a.createElement("h2",{className:"h3 mb-0"},v.name)),e.canFollow&&a.createElement(s.h,{className:"btn follow-btn ".concat(b?"btn-outline-dark":"btn-dark"),svgName:b?f.vn.BellFilled:f.vn.Bell,onClick:function(){return h(v.id,v.name,!b)}},g?a.createElement(o.Z,{as:"span",animation:"border",role:"status",size:"sm"}):a.createElement(i.x,{namespace:m,phrase:b?"following":"follow"})))}},75772:(e,t,n)=>{n.r(t),n.d(t,{ContentUpdatesView:()=>te});var a=n(32735),r=n(70680),i=n(23481),o=n(20354),l=n(110),c=n(49985),s=n(65858),u=n(54644),f=n(3278),p=n(36848),d=n(83345),m=n(51365),v=n(16714),y=n(39151),b=n(1666),h=n(61699),g=n(31949),w=n(69883),E=n(39902),S=n(22902),k=n(79612),L=n(37802),N=n(40424),A=n(76753),C=n(14070),O=n(97291),T=n(51855),j=n(10671),F=n(27638),P=n(86698),x=n(44110),U=n(85369),I=n(97816),M=n(33192),D=n(13231),B=n(54610),V=n(67453),R=n(10741),G=n(22490),Z=n(38972),Y=n(82431),_="contentUpdates.contentUpdatesView";function $(e){var t=e.classification,n=e.videos,r=e.imageCdnUrl,i=e.showMore,o=e.followed,l=(0,S.T)().hasPermissions;if(!t)return a.createElement(a.Fragment,null);var c=V.j.createBannerUrl(t.banner,{fallbackBaseUrl:r,fallbackCategoryName:t.name,type:B.__.Banners},{size:B.h2.Medium,resizeType:B.Nq.Cover});return a.createElement("div",{className:"mb-3"},a.createElement(Z.a,{classification:t,backgroundUrl:c,getClassificationAppLink:e.appLinks.getClassificationAppLink,followed:o,follow:e.follow,canFollow:e.canFollow,showFollowSpinner:e.showFollowSpinner}),a.createElement(D.E4,{videos:n,yearGroups:e.yearGroups,getVideoAppLink:e.appLinks.getVideoAppLink,getSubTextAppLink:function(e){return Y.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:l,getPreviewQuestionsAppLink:function(e){return R.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:G.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:G.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:G.W.getResourceGuidanceAppLink,showNewVideoIndicator:e.showNewVideoIndicator}),i&&a.createElement("div",{className:"show-more"},a.createElement(p.F,{className:"info-link",appLink:e.appLinks.getClassificationUpdateAppLink(t)},a.createElement(d.x,{namespace:_,phrase:"showMore",options:{classificationName:t.name}}))))}var z=n(74696);const H={partialBanner:"bxaA6"};function W(){return a.createElement(a.Fragment,null,Array(4).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(H.partialBanner)}),a.createElement(z.S,null))})))}function q(e){return q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},q(e)}function J(e,t,n){return(t=function(e){var t=function(e){if("object"!=q(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==q(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var K=5,X="contentUpdates.contentUpdatesView",ee=i.T.encloseNamespace(X);function te(e){var t,n,i,D,B,V,R,G=(V=a.useState({}),R=2,function(e){if(Array.isArray(e))return e}(V)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(V,R)||function(e,t){if(e){if("string"==typeof e)return Q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Q(e,t):void 0}}(V,R)||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.")}()),Z=G[0],Y=G[1],_=(0,r.I0)(),z=(0,w.Z)(),H=(0,T.G)().isPlugin,q=(0,S.T)().hasPermissions,te=(0,L.r)(null).hasTopicDirectories,ne=q(v.C.FollowSubjects),ae=new Date,re=l.O.format(l.O.endOf(l.O.subtract(ae,1,"year"),"day"),"YYYY-MM-DD"),ie=l.O.format(l.O.endOf(ae,"day"),"YYYY-MM-DD"),oe=o.a.useBasicFetch(y.L.config()),le=o.a.useBasicFetch(g.N.currentUser()),ce=o.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&b.h.yearGroups(le.data.customerId)),se=(0,P.y)({redirectOnError:!0}).activePresentation;(0,k.M)(A.CG.getDefaultMetadata({title:null==se?void 0:se.name,phraseContext:{phraseHandler:ee,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:M.f.getCanonicalLink(),allowIndexing:M.f.allowIndexing(),hrefLang:M.f.getStaticRouteHrefLang(null==se?void 0:se.learningLevel,(function(){return{application:O.O.CONTENT_UPDATES,action:C.e.ContentUpdates.CONTENT_UPDATES}}))}));var ue=u.v.getContentUpdates(null==se?void 0:se.id,re,ie),fe=o.a.useBasicFetch(se&&ue),pe=o.a.useBasicFetch(ne&&h.o.mySubjectPreferences()),de=(0,x.i)(),me=[],ve=[];fe.data&&fe.data.forEach((function(e){me.push(e.id),ve=ve.concat(e.videos)}));var ye=(0,E.f)(me,(function(e){return u.v.getClassifications(e)})).items,be=(0,j._)({location:j.i.VideoItem});(0,I.V)(ve,{flightNamespace:null===(n=ue.normalizeOptions)||void 0===n?void 0:n.namespace});var he=(0,F.u)(s.LZ.VideoThumbnail,null===(i=ue.normalizeOptions)||void 0===i?void 0:i.namespace),ge=he.setFavourite,we=he.canFavourite;function Ee(e,t,n){Y((function(t){return Object.assign(Object.assign({},t),J({},e,!0))}));var a=function(){var a;Y((function(t){return Object.assign(Object.assign({},t),J({},e,!1))})),c.k.logUserAction({id:e,name:t},{location:s.LZ.ContentUpdatesClassificationBanner,workflowPhase:s.eu.Complete,descriptor:n?s.DL.On:s.DL.Off,actionType:s.Vw.Follow,entity:s.py.Classification}),z.success(ee(n?"followed":"unfollowed",{classification:null===(a=ye[e])||void 0===a?void 0:a.name,escapeText:!0}))},r=function(){Y((function(t){return Object.assign(Object.assign({},t),J({},e,!1))})),z.error(ee("error"))},i=n?h.o.followSubjects([e],a,r):h.o.unfollowSubjects([e],a,r);o.a.fetch(_,i)}var Se=(0,U.N)(),ke=Se.showCalendar,Le=Se.isLoading,Ne=!(!(fe.hasCompleted&&oe.hasCompleted&&de.hasCompleted)||ne&&!pe.hasCompleted||!ye||Le),Ae=function(e,t){return e&&t?e.map((function(e){return{showMore:e.videos.length>K,classification:t[e.id],videos:e.videos.slice(0,K).map((function(e){return e.classification=t[e.id],e})).filter((function(e){return e}))}})).filter((function(e){return e.classification})):null}(fe.data,ye),Ce=null!==(B=null===(D=pe.data)||void 0===D?void 0:D.map((function(e){return e.id})))&&void 0!==B?B:[],Oe=q(v.C.ManageSubjectPreferences),Te=q(v.C.ManageVideoAccess);return a.createElement(m.M.Provider,{value:be},a.createElement("div",{className:"bg-white px-3"},!Le&&a.createElement(f.z,{type:N.Yv.Staff,appLinks:{forYou:e.appLinks.dashboardAppLink,whatsNew:e.appLinks.whatsNewAppLink,calendar:e.appLinks.calendarAppLink},showCalendar:ke,active:"whatsNew"}),a.createElement("h1",null,a.createElement(d.x,{namespace:X,phrase:"heading"})),(Oe||Te)&&a.createElement("p",null,Oe&&a.createElement(a.Fragment,null,a.createElement(d.x,{namespace:X,phrase:"onlyRelevant"})," ",a.createElement(p.F,{className:"info-link",appLink:{application:O.O.SETTINGS,action:C.e.Settings.TOPIC_PREFERENCES}},a.createElement(d.x,{namespace:X,phrase:"updatePreferences"}))),Te&&a.createElement("span",{className:"d-block"},a.createElement(p.F,{className:"info-link",appLink:{application:O.O.SETTINGS,action:C.e.Settings.CONTENT_REVIEW}},a.createElement(d.x,{namespace:X,phrase:"contentReview"})))),Ne?a.createElement(a.Fragment,null,Ae.map((function(t,n){var r,i;return a.createElement($,{key:n,classification:t.classification,videos:t.videos,yearGroups:ce.data,imageCdnUrl:oe.data.imageCdnUrl,showMore:t.showMore,appLinks:e.appLinks,followed:Ce.includes(null===(r=t.classification)||void 0===r?void 0:r.id),follow:Ee,showFollowSpinner:Z[null===(i=t.classification)||void 0===i?void 0:i.id],canFollow:ne,setFavourite:ge,canFavourite:we,audiences:de.data,isPlugin:H,showNewVideoIndicator:te})}))):a.createElement(W,null)))}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var a=n(20354),r=n(89454),i=n(86698),o=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return a.a.useBasicFetch(!!o&&r.O.presentationAudiences(o.id))}},85369:(e,t,n)=>{n.d(t,{N:()=>b});var a=n(32735),r=n(35242),i=n(20354),o=n(27022),l=n(72639),c=n(31949),s=n(37802),u=n(87114),f=n(86698);function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function v(e,t,n){return(t=function(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=p(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var y=v(v(v(v(v(v({},o.t.AU,[l.p.Level_1]),o.t.US,[l.p.Level_1]),o.t.UK,[l.p.Level_1]),o.t.SCOT,[l.p.Level_1]),o.t.NZ,[]),o.t.GLOBAL,[]);function b(){var e,t=(0,s.r)(null),n=t.hasSpecialEventCalendar,o=t.isLoadingSettings,l=(0,f.y)({redirectOnError:!0}).activePresentation,p=i.a.useBasicFetch(c.N.currentUser()),m=y[null===(e=p.data)||void 0===e?void 0:e.contentRegion],v=u.i.getMappedPresentationLevel(null==l?void 0:l.learningLevel),b=!(null==m?void 0:m.find((function(e){return e.toString()===(null==v?void 0:v.toString())}))),h=!o&&!n,g=d(a.useState(!h&&!b),2),w=g[0],E=g[1],S=d(a.useState(o||!(null==l?void 0:l.id)),2),k=S[0],L=S[1];return a.useEffect((function(){h||b?E(!1):k||E(!0),L(o||!(null==l?void 0:l.id))}),[n,null==l?void 0:l.id,k]),r.h.isDevelopment?{showCalendar:!0,isLoading:!1}:{showCalendar:w,isLoading:k}}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var a=n(32735),r=n(20354),i=n(75896),o=n(21750),l=n(31949),c=n(1575),s=n(31908);function u(e,t){if(e){if("string"==typeof e)return f(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p=50;function d(e){var t,n,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(l.N.currentUser()),v=a.useRef(new Set),y=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):[]:[]}(e),b=y.map((function(e){return e.id})),h=(t=a.useState([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||u(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],w=h[1];a.useEffect((function(){if((null==b?void 0:b.length)&&m.hasCompleted){var e=[];b.forEach((function(t){v.current.has(t)||(e.push(t),v.current.add(t))})),e.length&&w((function(t){var n=function(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(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.")}()}(t);return i.m.chunk(e,p).forEach((function(e){var t;n.push(c.R.videoMixinAssocs(e,d.flightNamespace)),(null===(t=m.data)||void 0===t?void 0:t.isAuthenticated)&&n.push(o.x.hasCurriculumLinks(e,null,d.flightNamespace))})),n}))}}),[null==b?void 0:b.length,m.hasCompleted]),r.a.useBasicFetchAll(g)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(95685),r=n.n(a),i=n(32735),o=n(46304),l=n(74512);const c=i.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},i)=>{const c=(0,o.vE)(e,"row"),s=(0,o.pi)(),u=(0,o.zG)(),f=`${c}-cols`,p=[];return s.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&p.push(`${f}${r}-${n}`)})),(0,l.jsx)(n,{ref:i,...a,className:r()(t,c,...p)})}));c.displayName="Row";const s=c}}]);
|
|
2
|
+
//# sourceMappingURL=1958-46fa15e385-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1958-46fa15e385-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/classification-banner.scss","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/ClassificationBanner.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/components/ContentUpdateClassification.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/partial-content-updates.scss","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/PartialContentUpdates.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/ContentUpdatesView.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center mx-n3'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, 25);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const items = responses.data.length\n ? ArrayHelper.flatten(responses.data).reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n items,\n isFetching: responses.isFetching\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"B7jhq\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { Classification, PresentationAudience } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './classification-banner.scss';\n\nconst namespace = 'contentUpdates.classificationBanner';\n\ninterface ClassificationBannerProps {\n classification: Classification;\n backgroundUrl: string;\n getClassificationAppLink: (classification: Classification, activeAudiences: PresentationAudience[]) => Core.AppLink;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n}\n\nexport function ClassificationBanner(props: ClassificationBannerProps): JSX.Element {\n const { classification, backgroundUrl, followed, follow, showFollowSpinner } = props;\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n return (\n <div\n className={`banner mb-2 d-flex justify-content-between align-items-center rounded ${styles.banner}`}\n style={{ backgroundImage: `url('${backgroundUrl}')` }}\n >\n <AppLink className='text-white text-shadow' appLink={props.getClassificationAppLink(classification, activeAudiences)}>\n <h2 className='h3 mb-0'>{classification.name}</h2>\n </AppLink>\n\n {props.canFollow && (\n <IconButton\n className={`btn follow-btn ${followed ? 'btn-outline-dark' : 'btn-dark'}`}\n svgName={followed ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell}\n onClick={() => follow(classification.id, classification.name, !followed)}\n >\n {showFollowSpinner\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase={followed ? 'following' : 'follow'} />\n }\n </IconButton>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { ContentUpdateAppLinks, VideoWithClassification } from 'libs/shared/apps/content-updates/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Classification, FavouriteFunc, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { ClassificationBanner } from 'apps/content-updates/components';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'contentUpdates.contentUpdatesView';\n\ninterface ClassificationProps {\n classification: Classification;\n videos: VideoWithClassification[];\n yearGroups: YearGroup[];\n imageCdnUrl: string;\n showMore: boolean;\n appLinks: ContentUpdateAppLinks;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n isPlugin: boolean;\n showNewVideoIndicator: boolean;\n}\n\nexport function ContentUpdateClassification(props: ClassificationProps): JSX.Element {\n const { classification, videos, imageCdnUrl, showMore, followed } = props;\n\n const { hasPermissions } = usePermissions();\n\n if (!classification)\n return <></>;\n \n const url = ImageHelper.createBannerUrl(classification.banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: classification.name,\n type: ImageType.Banners\n }, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return (\n <div className='mb-3'>\n <ClassificationBanner\n classification={classification}\n backgroundUrl={url}\n getClassificationAppLink={props.appLinks.getClassificationAppLink}\n followed={followed}\n follow={props.follow}\n canFollow={props.canFollow}\n showFollowSpinner={props.showFollowSpinner}\n />\n <VideoList\n videos={videos}\n yearGroups={props.yearGroups}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n showNewVideoIndicator={props.showNewVideoIndicator}\n />\n {showMore &&\n <div className={'show-more'}>\n <AppLink className='info-link' appLink={props.appLinks.getClassificationUpdateAppLink(classification)}>\n <Text namespace={namespace} phrase='showMore' options={{\n classificationName: classification.name\n }} />\n </AppLink>\n </div>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialBanner\":\"bxaA6\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-content-updates.scss';\n\nexport function PartialContentUpdates(): JSX.Element {\n return (\n <>\n {Array(4).fill(null).map((s, i) => (\n <div key={i} className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialBanner}`} />\n <PartialVideoList />\n </div>\n ))}\n </>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ContentUpdateRequests } from 'libs/shared/apps/content-updates/flight-requests/ContentUpdateRequests';\nimport { ClassificationVideosGrouping, ContentUpdate, ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\nimport { DiscoverHeader } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, Config, CurrentUser, DashboardUserType, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { ContentUpdateClassification } from './components/ContentUpdateClassification';\nimport { PartialContentUpdates } from './partial-loading/PartialContentUpdates';\n\nconst INITIAL_VIDEO_COUNT = 5;\nconst namespace = 'contentUpdates.contentUpdatesView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction map(\n contentUpdates: ClassificationVideosGrouping[],\n classifications: {[key: string]: Classification}\n): ContentUpdate[] {\n if (!contentUpdates || !classifications)\n return null;\n\n return contentUpdates.map((c): ContentUpdate => {\n return {\n showMore: c.videos.length > INITIAL_VIDEO_COUNT,\n classification: classifications[c.id],\n videos: c.videos.slice(0, INITIAL_VIDEO_COUNT).map((m: any) => {\n m.classification = classifications[m.id];\n return m;\n }).filter(v => v)\n };\n }).filter(v => v.classification);\n}\n\ninterface FollowSpinnersMap {\n [classificationId: string]: boolean;\n}\n\ninterface ContentUpdatesViewProps {\n appLinks: ContentUpdateAppLinks;\n presentationSlug?: string;\n}\n\nexport function ContentUpdatesView(props: ContentUpdatesViewProps): JSX.Element {\n const [ followSpinners, setFollowSpinners ] = React.useState<FollowSpinnersMap>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const { isPlugin } = usePluginHelper();\n\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories } = useSettings(null);\n const canFollowSubjects = hasPermissions(PermissionName.FollowSubjects);\n\n const date = new Date();\n const from = DateHelper.format(DateHelper.endOf(DateHelper.subtract(date, 1, 'year'), 'day'), 'YYYY-MM-DD');\n const to = DateHelper.format(DateHelper.endOf(date, 'day'), 'YYYY-MM-DD');\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const { activePresentation } = usePresentation({ redirectOnError: true });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: activePresentation?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n activePresentation?.learningLevel,\n () => ({ application: AppChannels.CONTENT_UPDATES, action: Actions.ContentUpdates.CONTENT_UPDATES })\n )\n }));\n\n const contentUpdatesRequest = ContentUpdateRequests.getContentUpdates(activePresentation?.id, from, to);\n const contentUpdates = Flight.useBasicFetch<ClassificationVideosGrouping[]>(\n activePresentation && contentUpdatesRequest\n );\n const subjectPreferences = Flight.useBasicFetch<Classification[]>(canFollowSubjects &&\n PreferenceRequests.mySubjectPreferences());\n\n const audiences = usePresentationAudiences();\n\n /* Map content update response into list of video ids and classification ids*/\n const classificationIds: string[] = [];\n let videos: Video[] = [];\n contentUpdates.data && contentUpdates.data.forEach(c => {\n classificationIds.push(c.id);\n videos = videos.concat(c.videos);\n });\n\n /* Batch fetch the videos and classifications by id */\n const { items: classifications } = useBatchFetch<Classification>(\n classificationIds,\n (ids: string[]) => ContentUpdateRequests.getClassifications(ids)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n \n useVideoMixin(videos, {\n flightNamespace: contentUpdatesRequest.normalizeOptions?.namespace\n });\n\n const { setFavourite, canFavourite } = useLiteFavourites(\n LocationContext.VideoThumbnail,\n contentUpdatesRequest.normalizeOptions?.namespace\n );\n\n /** Callbacks */\n function onFollow(classificationId: string, classificationName: string, follow: boolean): void {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: true\n }));\n\n const onSuccess = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n AnalyticsHelper.logUserAction({\n id: classificationId,\n name: classificationName\n }, {\n location: LocationContext.ContentUpdatesClassificationBanner,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: follow ? ToggleDescriptor.On : ToggleDescriptor.Off,\n actionType: UserAction.Follow,\n entity: EntityType.Classification\n });\n\n alerts.success(getPhrase(\n follow ? 'followed' : 'unfollowed',\n { classification: classifications[classificationId]?.name, escapeText: true }\n ));\n };\n\n const onError = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n alerts.error(getPhrase('error'));\n };\n\n const request = follow ?\n PreferenceRequests.followSubjects([classificationId], onSuccess, onError) :\n PreferenceRequests.unfollowSubjects([classificationId], onSuccess, onError);\n\n Flight.fetch(dispatch, request);\n }\n\n const { showCalendar, isLoading } = useShowCalendar();\n\n const dataLoaded = !!(\n contentUpdates.hasCompleted &&\n config.hasCompleted &&\n audiences.hasCompleted &&\n (!canFollowSubjects || subjectPreferences.hasCompleted) &&\n classifications &&\n !isLoading\n );\n\n /* Build out array of content updates from our lists of videos and classifications */\n const mappedUpdates = map(contentUpdates.data, classifications);\n const preferredSubjectIds = subjectPreferences.data?.map(subject => subject.id) ?? [];\n\n const managePreferences = hasPermissions(PermissionName.ManageSubjectPreferences);\n const manageVideoAccess = hasPermissions(PermissionName.ManageVideoAccess);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='bg-white px-3'>\n {!isLoading && <DiscoverHeader\n type={DashboardUserType.Staff} // Students never see this page\n appLinks={{\n forYou: props.appLinks.dashboardAppLink,\n whatsNew: props.appLinks.whatsNewAppLink,\n calendar: props.appLinks.calendarAppLink\n }}\n showCalendar={showCalendar}\n active='whatsNew'\n />}\n <h1><Text namespace={namespace} phrase='heading' /></h1>\n {(managePreferences || manageVideoAccess) && (\n <p>\n {managePreferences &&\n <>\n <Text namespace={namespace} phrase='onlyRelevant' /> \n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TOPIC_PREFERENCES\n }}\n >\n <Text namespace={namespace} phrase='updatePreferences' />\n </AppLink>\n </>\n }\n {manageVideoAccess &&\n <span className='d-block'>\n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_REVIEW\n }}\n >\n <Text namespace={namespace} phrase='contentReview' />\n </AppLink>\n </span>\n }\n </p>\n )}\n\n {dataLoaded ? (\n <>\n {mappedUpdates.map((c: ContentUpdate, key: number) => (\n <ContentUpdateClassification\n key={key}\n classification={c.classification}\n videos={c.videos}\n yearGroups={yearGroups.data}\n imageCdnUrl={config.data.imageCdnUrl}\n showMore={c.showMore}\n appLinks={props.appLinks}\n followed={preferredSubjectIds.includes(c.classification?.id)}\n follow={onFollow}\n showFollowSpinner={followSpinners[c.classification?.id]}\n canFollow={canFollowSubjects}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n audiences={audiences.data}\n isPlugin={isPlugin}\n showNewVideoIndicator={hasTopicDirectories}\n />\n ))}\n </>\n ) : (\n <PartialContentUpdates />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst CHUNK_SIZE = 50;\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [...r] ;\n\n ArrayHelper.chunk<string>(unhydratedVideos, CHUNK_SIZE).forEach(chunk => {\n newRequests.push(VideoRequests.videoMixinAssocs(chunk, options.flightNamespace));\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(chunk, null, options.flightNamespace));\n });\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};","\"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":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","TabContents","tab","svgName","count","data","ref","containerRef","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","useBatchFetch","itemIds","getRequest","requests","chunk","responses","items","length","reduce","acc","item","id","isFetching","ClassificationBanner","classification","backgroundUrl","followed","follow","showFollowSpinner","activeAudiences","SharedViewModelKeys","undefined","storage","style","backgroundImage","getClassificationAppLink","canFollow","IconButton","Spinner","as","animation","role","size","ContentUpdateClassification","videos","imageCdnUrl","showMore","hasPermissions","usePermissions","ImageHelper","banner","fallbackBaseUrl","fallbackCategoryName","resizeType","VideoList","yearGroups","getVideoAppLink","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","isPlugin","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","AppLink","getClassificationUpdateAppLink","options","classificationName","PartialContentUpdates","Array","fill","s","i","PartialVideoList","INITIAL_VIDEO_COUNT","getPhrase","ContentUpdatesView","followSpinners","setFollowSpinners","dispatch","alerts","usePluginHelper","hasTopicDirectories","useSettings","canFollowSubjects","PermissionName","date","Date","from","DateHelper","to","config","ConfigRequests","currentUser","UserRequests","isAuthenticated","CustomerRequests","customerId","activePresentation","usePresentation","redirectOnError","useSetPageMetadata","PageMetadataHelper","title","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","learningLevel","application","action","contentUpdatesRequest","ContentUpdateRequests","contentUpdates","subjectPreferences","PreferenceRequests","usePresentationAudiences","classificationIds","forEach","c","concat","classifications","ids","videoActions","useVideoActions","useVideoMixin","flightNamespace","normalizeOptions","useLiteFavourites","u","onFollow","classificationId","currentState","onSuccess","AnalyticsHelper","workflowPhase","descriptor","success","escapeText","onError","error","request","useShowCalendar","isLoading","dataLoaded","hasCompleted","mappedUpdates","slice","m","filter","v","preferredSubjectIds","subject","managePreferences","manageVideoAccess","VideoActionsContext","value","dashboardAppLink","whatsNewAppLink","calendarAppLink","includes","getFallbackPresentation","presentation","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","allowedLearningLevels","contentRegion","learningLevelCantAccess","find","l","toString","noSetting","setShowCalendar","setIsLoading","CHUNK_SIZE","objects","hydratedVideos","Set","isArray","o","getValidObjects","videoIds","setRequest","unhydratedVideos","current","has","add","r","newRequests","Row","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2431],{40955:(e,t,a)=>{a.d(t,{P:()=>i});var n=a(32735);function i(e){return e.audience?n.createElement("div",{className:"audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ".concat("border-"+e.border," ").concat(e.className?e.className:"")},e.audience.name):n.createElement(n.Fragment,null)}},17464:(e,t,a)=>{a.d(t,{c:()=>r});var n=a(32735),i=a(7121);function r(e){var t="d-flex align-items-center badge-list ".concat(i.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},89682:(e,t,a)=>{a.d(t,{I:()=>u,h:()=>d});var n=a(32735),i=a(91967),r=a(83914),o=a(35223),c=a(11607);const l={unchecked:"bup9I",outline:"ealw_",checked:"A1Ov0",checkMark:"c14lI"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d;function u(e){var t,a,u=(t=n.useState(e.status===d.Complete),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,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?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.")}()),m=u[0],v=u[1];n.useEffect((function(){v(e.status===d.Complete)}),[e.status]);var p="cursor-pointer rounded-circle ".concat(m?l.checked:l.unchecked);return e.className&&(p+=" ".concat(e.className)),"outline"===e.style&&(p+=" ".concat(l.outline)),e.status&&e.status!==d.None&&i.q.isFunction(e.setStatus)?n.createElement(c.L,{className:p,onClick:function(){var t=!m;v(t);var a=t?d.Complete:d.Incomplete;e.setStatus(a).catch((function(){v(!t)}))},disabled:e.disabled},n.createElement(r.x,{svgName:o.vn.Tick,className:"svg-container ".concat(l.checkMark)})):n.createElement(n.Fragment,null)}!function(e){e.None="None",e.Complete="Complete",e.Incomplete="Incomplete"}(d||(d={})),u.defaultProps={style:"filled"}},24900:(e,t,a)=>{a.d(t,{z:()=>l,O:()=>c});var n=a(32735),i=a(83914),r=a(35223);const o={mask:"qpc7L",small:"L8Oxs",video:"b8kJW",playlist:"eo2p2",maskContainer:"lpwag"};var c;function l(e){var t=e.type,a=e.size,l=function(e){return e===c.Video?o.video:e===c.Playlist?o.playlist:""}(t),s=function(e){return e===c.Video?r.vn.PlayCircle:""}(t);return n.createElement("div",{className:"".concat(o.maskContainer," ").concat("sm"===a?o.small:"")},n.createElement("div",{className:o.mask}),n.createElement(i.x,{svgName:s,className:l}))}!function(e){e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series"}(c||(c={})),l.defaults={size:"md"}},22843:(e,t,a)=>{a.d(t,{h:()=>d});var n=a(32735),i=a(65858),r=a(36848),o=a(11882),c=a(29598),l=a(31908);const s={container:"r70GR",titleContainer:"rULXI",badgeContainer:"QaDDX",audienceBadge:"hvsne"};function d(e){var t=e.video,a=e.appLink,d=e.subTextAppLink,u=e.showNewVideoIndicator,m=l.M.getCanBeConsumed(t).canNavigate;return n.createElement("div",{className:"mt-2 ".concat(s.container)},n.createElement("div",{className:"d-flex flex-column ".concat(s.titleContainer)},l.M.isVideo(t)&&n.createElement(o.$,{type:e.subTextType,className:"text-truncate",video:t,appLink:d,analyticsOptions:{location:i.LZ.VideoThumbnail}}),n.createElement(r.F,{className:"text-reset clamp-2 align-middle",appLink:m?a:null},n.createElement(c.O,{video:e.video,yearGroups:e.yearGroups,lockSize:"sm",showNewVideoIndicator:u}))))}},72431:(e,t,a)=>{a.d(t,{u:()=>ke});var n=a(32735),i=a(1048),r=a(65858),o=a(18559),c=a(17464),l=a(23481),s=a(91967),d=a(11607),u=a(83914),m=a(69883),v=a(1643),p=a(35223),g=a(31908);const y={favourited:"t0svX",favouriteButton:"CFRo3",heart:"ZMMQu",heartOutline:"truFo"};function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E=l.T.encloseNamespace("shared.favouriteButton");function h(e){var t,a,i=(0,m.Z)(),r=v.h.isFavouritedByCurrentUser(e.video),o=(t=n.useState(r),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,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?f(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.")}()),c=o[0],l=o[1];n.useEffect((function(){l(r)}),[r]);var h="".concat("d-flex align-items-center justify-content-center"," cursor-pointer ").concat(y.favouriteButton," ").concat(c?y.favourited:"");return e.className&&(h+=" ".concat(e.className)),s.q.isFunction(e.setFavourite)&&s.q.isFunction(e.canFavourite)&&e.canFavourite(e.video)?n.createElement(d.L,{className:h,onClick:function(){var t=!c;l(t),e.setFavourite(e.video,t,null,(function(){i.error(E(g.M.isClip(e.video)?t?"favouriteClipError":"unfavouriteClipError":g.M.isInteractive(e.video)?t?"favouriteInteractiveError":"unfavouriteInteractiveError":t?"favouriteVideoError":"unfavouriteVideoError")),l(!t)}),e.analyticsData,e.analyticsOptions)},tabIndex:e.preventFocus?-1:void 0},n.createElement(u.x,{svgName:p.vn.Heart,className:"svg-container ".concat(y.heart)}),n.createElement(u.x,{svgName:p.vn.HeartOutline,className:"svg-container ".concat(y.heartOutline)})):n.createElement(n.Fragment,null)}var b=a(75163),k=a(5465);function C(e){var t=g.M.getVideoProgress(e.video),a=t&&e.video.duration&&t/e.video.duration*1e5;return a?n.createElement("div",{className:"bg-primary h-100",style:{width:"".concat(a,"%")}}):n.createElement(n.Fragment,null)}const N={bottomBar:"YnXtZ"};function O(e){return g.M.isVideo(e.video)?n.createElement("div",{className:N.bottomBar},n.createElement(C,{video:e.video})):n.createElement(n.Fragment,null)}var w=a(20789),x=a(86794),I=a(2786),F=a(64818);const L={std:"ct8Ht",sm:"dvCes",stdIcon:"iy0pu",smIcon:"Z_mZf"};function j(e){var t,a,i;return(g.M.isInteractive(e.video)||g.M.isClip(e.video))&&(e.video._liteOwner||(null===(t=e.video._isClickViewCurated)||void 0===t?void 0:t.value))?(null===(a=e.video._isClickViewCurated)||void 0===a?void 0:a.value)?n.createElement("div",{className:"".concat("sm"===e.size?L.sm:L.std," me-1 rounded-circle position-relative bg-white")},n.createElement(x.b,{className:"me-1 ".concat("sm"===e.size?L.smIcon:L.stdIcon)},n.createElement(I.Sd,null))):n.createElement("div",{className:"".concat("sm"===e.size?L.sm:L.std," me-1")},n.createElement(w.q,{imageCdnUrl:e.imageCdnUrl,initials:F.l.getInitials(e.video._liteOwner.name,e.video._liteOwner.surname),imageUrl:null===(i=e.video._liteOwner.avatar)||void 0===i?void 0:i.url})):n.createElement(n.Fragment,null)}var T=a(36848),S=a(83345);const M={pluginHover:"h4RQa"};var A="shared.pluginHover";function z(e){return e.isPlugin?n.createElement(T.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,onClick:e.onClick,className:"\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ".concat(M.pluginHover,"\n ").concat(e.className?e.className:"","\n ")},n.createElement("span",{className:"position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white"},n.createElement(S.x,{namespace:A,phrase:"embed"}))):n.createElement(n.Fragment,null)}const D={padlock:"w4cg8",sm:"JpIYd"};function P(e){var t="sm"===e.size?u.S.Small:u.S.Standard;return n.createElement("div",{className:"".concat(D.padlock," ").concat("sm"===e.size?D.sm:""," bg-white cursor-default d-flex align-items-center justify-content-center")},n.createElement(u.x,{svgName:p.vn.Lock,size:t}))}var V=a(7733),R=a(54610),G=a(9085),B=a(67453),H=a(36532);const U={logo:"OA9ft",sm:"fyo2J"};function _(e){var t,a,i,r,o,c;if(!g.M.isVideo(e.video)||!e.companyLogoFallbackUrl)return n.createElement(n.Fragment,null);var l=null===(a=null===(t=e.video.productionCompanies)||void 0===t?void 0:t.data)||void 0===a?void 0:a[0],s=B.j.createUrl(null!==(r=null===(i=null==l?void 0:l.logo)||void 0===i?void 0:i.url)&&void 0!==r?r:e.companyLogoFallbackUrl,{size:R.h2.Small}),d=(0,G.x)(l.name,V.o);return s?n.createElement("div",null,n.createElement(H.u,{title:null==l?void 0:l.name,spanHack:!0},n.createElement("div",{className:"".concat(U.logo," ").concat("sm"===e.size?U.sm:""," ").concat(!(null===(o=null==l?void 0:l.metadata)||void 0===o?void 0:o.colour)&&d),style:{backgroundImage:"url(".concat(s,")"),backgroundColor:null===(c=null==l?void 0:l.metadata)||void 0===c?void 0:c.colour}}))):n.createElement(n.Fragment,null)}_.defaultProps={size:"md"};var Z=a(11882),W=a(4594),q=a(61150);function Q(e){return g.M.isClip(e.video)?n.createElement(q.y,{typeId:W.E.Clip,size:e.size,inContainer:!0}):g.M.isInteractive(e.video)?n.createElement(q.y,{typeId:W.E.Interactive,status:e.video.status,size:e.size,inContainer:!0}):n.createElement(n.Fragment,null)}Q.default={size:"md"};var X=a(10439),$=a(49439);const J={overlayContainer:"qu3A3",topLeftContainer:"gjhMe",topRightContainer:"XAfZW",overlay:"NTrtm",downScale:"puKcM",title:"_6FukN",gradient:"rXzR8",playIcon:"dndOA",videoProgress:"yhWf4",badgeContainer:"AtgmC",clipProgress:"E2egN",interactiveProgress:"WycwR"};function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function Y(e){var t="mb-1";return e&&(t+=J.downScale),t}function ee(e){var t,a,l,s=e.video,d=e.appLink,m=e.imageOptions,y=e.setFavourite,f=e.canFavourite,E=e.preload,C=e.hovering,N=e.hoverToPlay,w=e.companyLogoFallbackUrl,x=g.M.getCanBeConsumed(e.video),I=x.canNavigate,F=x.canConsume,L=i.t.isObject(null==d?void 0:d.params)?null==d?void 0:d.params:{},T=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(s)}),S=v.h.showFavouriteButton(e.video,C),M=g.M.isVideo(s),A=g.M.getRating(e.video),D=(a=(0,$.L)({delay:100}),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,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?K(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.")}()),V=D[0],G=D[1]&&F&&N,B=Object.assign(Object.assign({},e.analyticsData),{id:s.id,name:s.name}),U=Object.assign(Object.assign({},T),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement(H.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement("div",{className:"position-relative rounded-3 overflow-hidden",ref:V},n.createElement(z,{isPlugin:e.isPlugin,className:"rounded-3",appLink:I?d:null,analyticsData:B,analyticsOptions:U}),S&&n.createElement("div",{className:J.topRightContainer},n.createElement(h,{setFavourite:y,canFavourite:f,video:s,analyticsData:e.analyticsData,analyticsOptions:T})),!I&&n.createElement("div",{className:J.topRightContainer},n.createElement(P,null)),n.createElement("div",{className:"".concat(J.topLeftContainer," d-flex flex-no-wrap")},e.showOwner&&n.createElement(j,{video:s,imageCdnUrl:e.imageCdnUrl}),n.createElement(Q,{video:s}),n.createElement(_,{video:s,companyLogoFallbackUrl:w})),n.createElement(b.Z,{data:g.M.getThumbnail(s),appLink:I?d:null,imageType:R.__.Thumbnails,imageOptions:m,preload:E,className:J.gradient,alt:("series"in s&&(null===(t=s.series)||void 0===t?void 0:t.name)?"".concat(s.series.name,": "):"")+s.name,analyticsData:B,analyticsOptions:U,preventFocus:!0},!(!C||!I)&&n.createElement(u.x,{className:J.playIcon,svgName:p.vn.PlayCircle}),n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:J.overlayContainer},n.createElement("div",{className:J.overlay},n.createElement("div",{className:"".concat(Y(C)," ").concat(J.title)},M&&n.createElement(Z.$,{type:e.subTextType,className:"text-shadow clamp-1",video:s,appLink:null,analyticsOptions:null}),n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},g.M.getTitle(s))),n.createElement(O,{video:s}),C&&n.createElement(c.c,{className:"mt-1"},g.M.isVideo(s)&&n.createElement(n.Fragment,null,n.createElement(o.C,{type:o.g.Rating,data:A}),s.hasSubtitle&&n.createElement("span",{className:"badge p-0"},n.createElement(u.x,{svgName:p.vn.CloseCaptionBadge})),n.createElement(o.C,{type:o.g.Interactive,data:s.hasInteractives}),n.createElement(o.C,{type:o.g.DurationExact,data:g.M.getDuration(e.video)})))))),G&&n.createElement(X.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:L.context,contextId:L.contextId,moviesAndTv:L.mtv})))}a(82182);var te=a(64446),ae=a(40955);const ne={badgeContainer:"fy9Un",sm:"Rb0TL"};function ie(e){var t=g.M.getRating(e.video),a=!!e.audience&&"sm"!==e.size,i=!a&&!e.hideRating&&!!t&&"sm"!==e.size;return!e.hideDuration||a||i?n.createElement(c.c,{className:"".concat(ne.badgeContainer," ").concat("sm"===e.size?ne.sm:"")},a&&n.createElement(ae.P,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),i&&n.createElement(o.C,{type:o.g.Rating,data:t}),!e.hideDuration&&n.createElement(o.C,{type:e.newDurationStyle?o.g.DurationApproximate:o.g.DurationExact,data:e.duration||g.M.getDuration(e.video)})):n.createElement(n.Fragment,null)}ie.defaultProps={newDurationStyle:!0,size:"md"};var re=a(22843),oe=a(60318);var ce=function(e){var t,a=e.video,o=e.appLink,c=e.imageOptions,l=e.preload,s=e.setFavourite,d=e.canFavourite,u=e.isHovering,m=e.hoverToPlay,p=e.companyLogoFallbackUrl,y=i.t.isObject(null==o?void 0:o.params)?null==o?void 0:o.params:{},f=g.M.getCanBeConsumed(a),E=f.canNavigate,C=f.canConsume;n.useEffect((function(){return function(){var t;null===(t=e.cleanPortalNode)||void 0===t||t.call(e)}}),[]);var N="position-relative bg-white";e.extraClasses&&(N+=" ".concat(e.extraClasses)),u&&(N+=" rounded-3 shadow-lg");var w=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(a)}),x=e.isHovering&&C&&m,I=v.h.showFavouriteButton(e.video,u),F=Object.assign(Object.assign({},e.analyticsData),{id:a.id,name:a.name}),L=Object.assign(Object.assign({},w),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement("div",{className:N},n.createElement("div",{className:"FAuzc"},!1,I&&n.createElement(h,{setFavourite:s,canFavourite:d,video:a,analyticsData:e.analyticsData,analyticsOptions:w,preventFocus:!0}),!E&&n.createElement(H.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement(P,null))),n.createElement("div",{className:"position-relative"},n.createElement(z,{isPlugin:e.isPlugin,className:u?"rounded-top-3":"rounded-3",onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},appLink:E?o:null,analyticsData:F,analyticsOptions:L}),n.createElement(b.Z,{onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},data:g.M.getThumbnail(a),appLink:E?o:null,imageType:R.__.Thumbnails,imageOptions:c,preload:l,alt:("series"in a&&(null===(t=a.series)||void 0===t?void 0:t.name)?"".concat(a.series.name,": "):"")+a.name,analyticsData:F,analyticsOptions:L,preventFocus:!e.hideTitle,appLinkClassName:"position-absolute top-0 start-0 h-100 w-100 overflow-hidden ".concat(u?"rounded-top-3":"rounded-3"),imageClassName:u?"rounded-top-3":"rounded-3"},n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:"p-absolute w-100 h-100 text-white"},n.createElement("div",{className:"".concat("wHY80"," d-flex flex-no-wrap")},e.showOwner&&n.createElement(j,{video:a,imageCdnUrl:e.imageCdnUrl}),n.createElement(Q,{video:a}),n.createElement(_,{video:a,companyLogoFallbackUrl:p})),n.createElement(ie,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),n.createElement(O,{video:a}))),x&&n.createElement(X.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:y.context,contextId:y.contextId,moviesAndTv:y.mtv,location:"popout-video"})),!u&&!e.hideTitle&&n.createElement(re.h,Object.assign({},e)),n.createElement("div",{className:"".concat("vMaXP"," ").concat(u?"".concat("tR1jA"," box-shadow"):"")},u&&n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(u?"KJrT1":"")},n.createElement(re.h,Object.assign({},e)),e.showVideoGuidance&&u&&n.createElement(oe.u,{getClassroomGuideAppLink:e.getClassroomGuideAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,responsiveClassName:"OixHb",containerClassName:"d-flex justify-content-start align-items-center pt-2"})))))};function le(e){return n.createElement(n.Fragment,null,n.createElement(te.K,{hoverableComponent:ce,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:e.video.id,name:e.video.name}),analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(e.video)})}))}var se=a(24900),de=a(89682);const ue={container:"efxnE",cvIcon:"OJ_ZQ",action:"vWvGn"};function me(e){return g.M.getCanBeConsumed(e.video).canNavigate?function(e){var t;return!(null===(t=g.M.getCanBeConsumed(e.video))||void 0===t?void 0:t.canConsume)||!(!s.q.isFunction(e.setFavourite)||!s.q.isFunction(e.canFavourite))||!!s.q.isFunction(e.setCheckMarkStatus)}(e)?n.createElement("div",{className:"".concat(ue.container," d-flex align-items-center")},n.createElement(h,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:ue.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,preventFocus:!0}),n.createElement(de.I,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:ue.action})):n.createElement(n.Fragment,null):n.createElement("div",{className:ue.container},n.createElement(P,{size:e.size}))}var ve=a(29598),pe=a(68626);const ge={titleOverlay:"krg9f",clip:"MPRU6",large:"g5_ww",interactive:"Zzo3e",titleBelow:"tZjPt",overlayContainer:"EElm1",topLeftContainer:"hrw3I",gradient:"LS_EH"};function ye(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return fe(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?fe(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var Ee="shared.staticVideoThumbnail";function he(e){var t,a=e.video,i=e.subTextAppLink,o=e.textPosition,c=e.appLink,s=o===pe.z.Overlay,d=g.M.getCanBeConsumed(e.video).canNavigate,u="";return s?(u=ge.titleOverlay,d&&(g.M.isClip(a)&&(u+=" "+ge.clip),g.M.isInteractive(a)&&(u+=" "+ge.interactive))):u=ge.titleBelow,n.createElement("div",{className:u},g.M.isVideo(a)&&n.createElement(Z.$,{type:e.subTextType,className:s?"text-shadow clamp-1":"clamp-2",video:a,appLink:s?null:i,analyticsOptions:{location:r.LZ.VideoThumbnail}}),s||!d?n.createElement("span",{className:"h6 text-reset clamp-1"},n.createElement(ve.O,{video:a,title:null!==(t=a.name)&&void 0!==t?t:l.T.getPhrase(Ee,"videoUnavailable"),showNewVideoIndicator:e.showNewVideoIndicator})):n.createElement(T.F,{className:"h6 text-reset clamp-2",appLink:c},n.createElement(ve.O,{video:a,showNewVideoIndicator:e.showNewVideoIndicator})))}function be(e){var t,a,o=e.video,c=e.appLink,l=e.textPosition,s=e.imageOptions,d=e.setFavourite,u=e.preload,m=e.hoverToPlay,p=i.t.isObject(null==c?void 0:c.params)?null==c?void 0:c.params:{},y=ye((0,$.X)(),2),f=y[0],E=y[1],h=ye((0,$.L)({delay:100}),2),C=h[0],N=h[1],w=g.M.getCanBeConsumed(o),x=w.canNavigate,I=w.canConsume,F=N&&I&&m,L=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(o)}),T=!!c&&!e.hideMask&&x,S=g.M.getPrivacyReasoning(e.video,e.showSignIn),M=Object.assign(Object.assign({},e.analyticsData),{id:o.id,name:o.name}),A=Object.assign(Object.assign({},L),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement(H.u,{title:S,spanHack:!0,spanHackClassName:""},n.createElement("div",{className:(a="position-relative",a+=c&&x?" cursor-pointer":"",e.extraClasses&&(a+=" ".concat(e.extraClasses)),l===pe.z.Overlay&&(a+=" rounded overflow-hidden"),a),ref:function(e){f.current=e,C.current=e}},n.createElement(z,{isPlugin:e.isPlugin,className:"sm"===e.size?"rounded":"rounded-3",appLink:x?c:null,analyticsData:M,analyticsOptions:A}),n.createElement(me,{video:o,checkMarkStatus:e.checkMarkStatus,setCheckMarkStatus:e.setCheckMarkStatus,setFavourite:d,canFavourite:function(){var t;return(null===(t=e.canFavourite)||void 0===t?void 0:t.call(e,e.video))&&v.h.showFavouriteButton(o,E)},analyticsData:e.analyticsData,analyticsOptions:L,size:e.size}),n.createElement(b.Z,{data:g.M.getThumbnail(o),appLink:x?c:null,onClick:x?e.onClick:void 0,imageType:R.__.Thumbnails,imageOptions:s,preload:u,className:function(){var t="overflow-hidden ".concat("sm"===e.size?"rounded":"rounded-3");return e.imageClassName&&(t+=" ".concat(e.imageClassName)),l===pe.z.Overlay&&(t+=" ".concat(ge.gradient)),t}(),alt:("series"in o&&(null===(t=o.series)||void 0===t?void 0:t.name)?"".concat(o.series.name,": "):"")+o.name,analyticsData:M,analyticsOptions:A,preventFocus:!0},T&&n.createElement(se.z,{type:se.O.Video,size:e.size}),n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:ge.overlayContainer},l===pe.z.Overlay&&n.createElement(he,Object.assign({},e)),n.createElement("div",{className:"".concat(ge.topLeftContainer," d-flex flex-no-wrap")},e.showOwner&&n.createElement(j,{video:o,imageCdnUrl:e.imageCdnUrl}),!e.hideVideoTypeBadge&&n.createElement(Q,{video:o,size:e.size}),n.createElement(_,{video:o,companyLogoFallbackUrl:e.companyLogoFallbackUrl,size:e.size})),n.createElement(O,{video:o}),n.createElement(ie,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size}))),F&&n.createElement(X.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:p.context,contextId:p.contextId,moviesAndTv:p.mtv}),l===pe.z.Below&&n.createElement(he,Object.assign({},e))))}function ke(e){switch(e.type){case"static":return n.createElement(be,Object.assign({},e));case"cosmetic":return n.createElement(be,Object.assign({},e,{hoverToPlay:!1}));case"expandable":return n.createElement(ee,Object.assign({},e));case"popout":return n.createElement(le,Object.assign({},e));default:return}}ke.defaultProps={hideRating:!0,size:"md",hoverToPlay:!0}},61150:(e,t,a)=>{a.d(t,{y:()=>v});var n=a(32735),i=a(23481),r=a(83914),o=a(5960),c=a(4594),l=a(35223);const s={topLeftContainer:"iwBld",draft:"QBpxh",badge:"KcvGx",svg:"gW733",text:"QiH5Q",sm:"tn2BH"};var d=i.T.encloseNamespace("shared.typeBadge");function u(e){switch(e){case c.E.Clip:return l.vn.Clip;case c.E.Interactive:return l.vn.Interactive;case c.E.Resource:return l.vn.Resources;default:return""}}function m(e,t){switch(e){case c.E.Clip:return"bg-ultramarine";case c.E.Interactive:return t===o.X.Draft?s.draft:"bg-green";case c.E.Resource:return"bg-indigo";default:return""}}function v(e){var t="".concat(s.badge," rounded-pill text-white ps-0 ").concat("sm"===e.size?s.sm:"");return n.createElement("div",{className:e.inContainer?"":s.topLeftContainer},n.createElement("div",{className:"".concat(t," ").concat(m(e.typeId,e.status))},n.createElement(r.x,{className:"svg-container d-block ".concat(s.svg),size:"sm"===e.size?r.S.Small:r.S.Standard,svgName:u(e.typeId)}),n.createElement("span",{className:s.text},function(e){switch(e){case c.E.Clip:return d("clip");case c.E.Interactive:return d("interactive");case c.E.Resource:return d("resource");default:return""}}(e.typeId))))}v.default={size:"md"}},38647:(e,t,a)=>{a.d(t,{m:()=>s});var n=a(32735),i=a(83914),r=a(36532),o=a(26361),c=a(35223),l=a(31908);function s(e){if(!e.yearGroups)return n.createElement(n.Fragment,null);var t=o.l.mapRestrictionToText(e.video._restrictions,e.yearGroups);return l.M.getCanBeConsumed(e.video).canConsume&&t?n.createElement(r.u,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:t,placement:e.tooltipPlacement||"top"},n.createElement(i.x,{svgName:c.vn.Lock,size:"sm"===e.size?i.S.Small:i.S.Standard})):n.createElement(n.Fragment,null)}},60318:(e,t,a)=>{a.d(t,{u:()=>h});var n=a(32735),i=a(23481),r=a(65858),o=a(83914),c=a(36848);const l={tag:"OjHQZ",icon:"SS2zL",disabled:"eGiNR",active:"kD1xM"};function s(e){var t,a;return e.appLink?n.createElement(c.F,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions,className:"\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ".concat(null===(t=e.theme)||void 0===t?void 0:t.container," ").concat(l.tag," ").concat(e.active?l.active:"","\n ")},n.createElement(d,Object.assign({},e))):n.createElement("div",{className:"p-1 pe-2 rounded-pill d-inline-flex align-items-center ".concat(null===(a=e.theme)||void 0===a?void 0:a.container," ").concat(l.tag," ").concat(l.disabled)},n.createElement(d,Object.assign({},e)))}function d(e){var t;return n.createElement(n.Fragment,null,n.createElement(o.x,{className:"".concat(l.icon," rounded-circle bg-").concat(e.iconVariant," text-white"),svgName:e.svgName}),n.createElement("span",{className:"ps-1 text-nowrap user-select-none ".concat(null===(t=e.theme)||void 0===t?void 0:t.tabLabel)},e.text))}var u=a(35223),m=a(31908),v="shared.classroomGuideTag";function p(e){var t,a,o;return!e.video||m.M.isInteractive(e.video)?n.createElement(n.Fragment,null):e.video.glance?n.createElement(s,{theme:{container:"classroom-guide-tag",tabLabel:"classroom-guide-tag-label"},svgName:u.vn.GraduationCap,iconVariant:"navy",text:i.T.getPhrase(v,"classroomGuide"),appLink:e.appLink,appLinkAnalyticsData:Object.assign(Object.assign({glanceId:null===(t=e.video.glance)||void 0===t?void 0:t.id,totalPointsOfInterest:null===(o=null===(a=e.video.pointsOfInterest)||void 0===a?void 0:a.data)||void 0===o?void 0:o.length,videoGuidanceType:"classroom-guide"},m.M.getAnalyticsData(e.video)),e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}var g="shared.interactivesTag";function y(e){var t;if(!m.M.showInteractivesGuidance(e.video))return n.createElement(n.Fragment,null);var a=!m.M.isInteractive(e.video)&&((null===(t=e.video.interactives)||void 0===t?void 0:t.data.length)||0);return n.createElement(s,{svgName:u.vn.Interactive,iconVariant:"green",text:i.T.getPhrase(g,"interactives",{smartCount:a}),appLink:e.appLink,appLinkAnalyticsData:Object.assign(Object.assign({videoGuidanceType:"interactive",videoGuidanceTotalItems:a},m.M.getAnalyticsData(e.video)),e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)})}var f="shared.resourcesTag";function E(e){if(!m.M.showResourcesGuidance(e.video))return n.createElement(n.Fragment,null);var t,a,o,c=(t=e.video,m.M.isInteractive(t)?0:((null===(a=t.resources)||void 0===a?void 0:a.data.length)||0)+((null===(o=t.links)||void 0===o?void 0:o.data.length)||0));return n.createElement(s,{svgName:u.vn.Resources,iconVariant:"indigo",text:i.T.getPhrase(f,"resources",{smartCount:c}),appLink:e.appLink,appLinkAnalyticsData:Object.assign(Object.assign({videoGuidanceType:"resource",videoGuidanceTotalItems:c},m.M.getAnalyticsData(e.video)),e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)})}function h(e){var t,a,i,r=m.M.showInteractivesGuidance(e.video)&&m.M.showResourcesGuidance(e.video);return n.createElement("div",{className:"".concat(e.containerClassName," ").concat(r?e.responsiveClassName:"")},n.createElement(p,{appLink:null===(t=e.getClassroomGuideAppLink)||void 0===t?void 0:t.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(E,{appLink:null===(a=e.getResourceGuidanceAppLink)||void 0===a?void 0:a.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(y,{appLink:null===(i=e.getInteractiveGuidanceAppLink)||void 0===i?void 0:i.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))}},29598:(e,t,a)=>{a.d(t,{O:()=>u});var n=a(32735),i=a(23481),r=a(110),o=a(36532),c=a(38647);const l={dot:"VrK4W",smallText:"OScyH",title:"svw3F"};var s=i.T.encloseNamespace("shared.videoTitle"),d=new Date;function u(e){var t,a,i=e.video.dateReleased,u=i&&(a=i,r.O.isSame(a,d,"year")&&r.O.isSame(a,d,"month")),m=e.showNewVideoIndicator&&u&&(null===(t=e.video._isClickViewCurated)||void 0===t?void 0:t.value);return n.createElement(n.Fragment,null,n.createElement(o.u,{title:"".concat(m?s("newVideo"):""),spanHack:!0,spanHackClassName:"d-inline-block"},m&&n.createElement("span",{className:"rounded-circle bg-green d-inline-block me-1 ".concat(l.dot," ").concat("h6"===e.titleSize?l.smallText:"")})),n.createElement("h2",{className:"".concat(e.titleSize," ").concat(l.title," ").concat(e.className," d-inline")},e.title||e.video.name),n.createElement(c.m,{video:e.video,yearGroups:e.yearGroups,size:e.lockSize}))}u.defaultProps={titleSize:"h6",className:""}},10439:(e,t,a)=>{a.d(t,{r:()=>c});var n=a(32735),i=a(38750),r=a(35429);const o={hoverContainer:"TzWQw",hovering:"gdTcW"};function c(e){var t,a=(0,r.g)();if(null===(t=a.useInitialize)||void 0===t||t.call(a,e),!a.hasProvider)return n.createElement(n.Fragment,null);if("picture-in-picture"===a.mode)return n.createElement(n.Fragment,null);if("hover"===e.mode&&a.isOnPlayPage)return n.createElement(n.Fragment,null);if("default"===a.mode||"play-page"===e.location)return n.createElement(i.t0,{node:a.portalNode});var c=a.started,l="rounded-3";"popout-video"===e.location&&(l="rounded-top-3");var s="".concat(o.hoverContainer," ").concat(c?o.hovering:""," ").concat(l," overflow-hidden");return n.createElement("div",{className:s},n.createElement(i.t0,{node:a.portalNode}))}},68626:(e,t,a)=>{var n;a.d(t,{z:()=>n}),function(e){e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent"}(n||(n={}))}}]);
|
|
2
|
+
//# sourceMappingURL=2431-d7d95fc5e6-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/2431-d7d95fc5e6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/check-mark-button/check-mark-button.scss","file:///app/packages/libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","file:///app/packages/libs/shared/src/components/mask/mask.scss","file:///app/packages/libs/shared/src/components/mask/Mask.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/thumbnail-text.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","file:///app/packages/libs/shared/src/components/favourite-button/favourite-button.scss","file:///app/packages/libs/shared/src/components/favourite-button/FavouriteButton.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/video-thumbnail-bottom-bar.scss","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/lite-owner-avatar/lite-owner-avatar.scss","file:///app/packages/libs/shared/src/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/plugin-hover.scss","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/PluginHover.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/thumbnail-padlock.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/thumbnail-company-logo.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","file:///app/packages/libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/expandable-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/video-thumbnail-badges.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/popout-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/video-thumbnail-actions.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/static/static-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/type-badge/type-badge.scss","file:///app/packages/libs/shared/src/components/type-badge/TypeBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","file:///app/packages/libs/shared/src/components/video-guidance/tag/video-guidance-tag.scss","file:///app/packages/libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/classroom-guide/ClassroomGuideTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-guidance/VideoItemGuidance.tsx","file:///app/packages/libs/shared/src/components/video-title/video-title.scss","file:///app/packages/libs/shared/src/components/video-title/VideoTitle.tsx","file:///app/packages/libs/shared/src/context/player-context/components/global-player-consumer.scss","file:///app/packages/libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","file:///app/packages/libs/shared/src/enums/ThumbnailTextPosition.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"unchecked\":\"bup9I\",\"outline\":\"ealw_\",\"checked\":\"A1Ov0\",\"checkMark\":\"c14lI\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svgName={cvSvgLibrary.Tick}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"qpc7L\",\"small\":\"L8Oxs\",\"video\":\"b8kJW\",\"playlist\":\"eo2p2\",\"maskContainer\":\"lpwag\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './mask.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvgType(type: MaskType): string {\n if (type === MaskType.Video)\n return cvSvgLibrary.PlayCircle;\n\n return '';\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svgType = getSvgType(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svgName={svgType} className={ typeClass } />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"r70GR\",\"titleContainer\":\"rULXI\",\"badgeContainer\":\"QaDDX\",\"audienceBadge\":\"hvsne\"};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'subTextAppLink'|'yearGroups'|'subTextType'|'showNewVideoIndicator'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink, subTextAppLink, showNewVideoIndicator } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.subTextType}\n className='text-truncate'\n video={video}\n appLink={subTextAppLink}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n <AppLink className='text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n <VideoTitle\n video={props.video}\n yearGroups={props.yearGroups}\n lockSize='sm'\n showNewVideoIndicator={showNewVideoIndicator}\n />\n </AppLink>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"favourited\":\"t0svX\",\"favouriteButton\":\"CFRo3\",\"heart\":\"ZMMQu\",\"heartOutline\":\"truFo\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n preventFocus?: boolean;\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} tabIndex={props.preventFocus ? -1 : undefined}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svgName={cvSvgLibrary.Heart}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"bottomBar\":\"YnXtZ\"};","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"std\":\"ct8Ht\",\"sm\":\"dvCes\",\"stdIcon\":\"iy0pu\",\"smIcon\":\"Z_mZf\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './lite-owner-avatar.scss';\n\ninterface LiteOwnerAvatarProps {\n video: VideoTypes;\n imageCdnUrl: string;\n size?: VideoItemSize;\n}\n\nexport function LiteOwnerAvatar(props: LiteOwnerAvatarProps): JSX.Element {\n if (!VideoHelper.isInteractive(props.video) && !VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._liteOwner && !props.video._isClickViewCurated?.value)\n return <></>;\n\n if (props.video._isClickViewCurated?.value) {\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1 rounded-circle position-relative bg-white`}>\n <SvgContainer2 className={`me-1 ${props.size === 'sm' ? styles.smIcon : styles.stdIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n );\n }\n\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.video._liteOwner.name, props.video._liteOwner.surname)}\n imageUrl={props.video._liteOwner.avatar?.url}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pluginHover\":\"h4RQa\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './plugin-hover.scss';\n\nconst namespace = 'shared.pluginHover';\n\ninterface PluginHoverProps {\n isPlugin: boolean;\n className?: string;\n onClick?: () => void;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function PluginHover(props: PluginHoverProps): JSX.Element {\n if (!props.isPlugin)\n return <></>;\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n onClick={props.onClick}\n className={`\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ${styles.pluginHover}\n ${props.className ? props.className : ''}\n `}\n >\n <span className='position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white'>\n <Text namespace={namespace} phrase='embed' />\n </span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"padlock\":\"w4cg8\",\"sm\":\"JpIYd\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './thumbnail-padlock.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={svgSize} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"OA9ft\",\"sm\":\"fyo2J\"};","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = ImageHelper.createUrl(company?.logo?.url ?? props.companyLogoFallbackUrl, { size: ImageSize.Small });\n const logoFallbackBgClassName = getBgColorClass(company.name, BG_COLOUR_CLASS_NAMES);\n \n if (!url)\n return <></>;\n\n return (\n <div>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''} ${!company?.metadata?.colour && logoFallbackBgClassName}`}\n style={{\n backgroundImage: `url(${url})`,\n backgroundColor: company?.metadata?.colour\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} inContainer />;\n\n if (VideoHelper.isInteractive(props.video))\n return (\n <TypeBadge\n typeId={MasterType.Interactive}\n status={props.video.status}\n size={props.size}\n inContainer\n />\n );\n\n return <></>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"qu3A3\",\"topLeftContainer\":\"gjhMe\",\"topRightContainer\":\"XAfZW\",\"overlay\":\"NTrtm\",\"downScale\":\"puKcM\",\"title\":\"_6FukN\",\"gradient\":\"rXzR8\",\"playIcon\":\"dndOA\",\"videoProgress\":\"yhWf4\",\"badgeContainer\":\"AtgmC\",\"clipProgress\":\"E2egN\",\"interactiveProgress\":\"WycwR\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const {\n video, appLink, imageOptions, setFavourite, canFavourite,\n preload, hovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, hovering);\n const isVideo = VideoHelper.isVideo(video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && hoverToPlay;\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n <PluginHover\n isPlugin={props.isPlugin}\n className='rounded-3'\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n {/* top right */}\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n\n <VideoTypeBadge video={video} />\n\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={styles.gradient}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {!!(hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svgName={cvSvgLibrary.PlayCircle} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.subTextType}\n className='text-shadow clamp-1'\n video={video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={video} />\n\n {hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svgName={cvSvgLibrary.CloseCaptionBadge} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"badgeContainer\":\"fy9Un\",\"sm\":\"Rb0TL\"};","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RemoveVideoButton } from '../../remove-button/RemoveVideoButton';\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\n\nimport styles from './popout-video-thumbnail.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload, setFavourite, canFavourite,\n isHovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n function onClickRemove(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n props.onClickRemove?.();\n }\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n function showRemoveButton() {\n // TODO: This is not ready to release just yet.\n // We want to add this functionality to the watch history page first before\n // releasing this.\n return false;\n\n if (!FunctionHelper.isFunction(props.onClickRemove))\n return false;\n\n if (UserAgentHelper.isTabletOrMobile())\n return true;\n\n return isHovering;\n }\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <div className={className}>\n <div className={styles.topRightContainer}>\n {showRemoveButton() && (\n <RemoveVideoButton\n onClickRemove={onClickRemove}\n removeButtonTooltip={props.removeButtonTooltip}\n preventFocus\n />\n )}\n\n {showFavouriteButton && (\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n preventFocus\n />\n )}\n\n {!canNavigate && (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n )}\n </div>\n\n <div className='position-relative'>\n <PluginHover\n isPlugin={props.isPlugin}\n className={isHovering ? 'rounded-top-3' : 'rounded-3'}\n onClick={() => props.cleanPortalNode?.()}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus={!props.hideTitle}\n appLinkClassName={`position-absolute top-0 start-0 h-100 w-100 overflow-hidden ${isHovering ? 'rounded-top-3' : 'rounded-3'}`}\n imageClassName={isHovering ? 'rounded-top-3' : 'rounded-3'}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n <div className='p-absolute w-100 h-100 text-white'>\n\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n \n <VideoTypeBadge video={video} />\n \n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <VideoItemGuidance\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n responsiveClassName={styles.responsiveGuidance}\n containerClassName={`d-flex justify-content-start align-items-center pt-2`}\n />\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"wHY80\",\"details\":\"vMaXP\",\"isHovering\":\"tR1jA\",\"videoGuidanceTags\":\"KJrT1\",\"responsiveGuidance\":\"OixHb\",\"dropdown\":\"oZXV7\",\"show\":\"EiQ04\",\"topRightContainer\":\"FAuzc\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"efxnE\",\"cvIcon\":\"OJ_ZQ\",\"action\":\"vWvGn\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n preventFocus\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"titleOverlay\":\"krg9f\",\"clip\":\"MPRU6\",\"large\":\"g5_ww\",\"interactive\":\"Zzo3e\",\"titleBelow\":\"tZjPt\",\"overlayContainer\":\"EElm1\",\"topLeftContainer\":\"hrw3I\",\"gradient\":\"LS_EH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { StaticVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './static-video-thumbnail.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\nfunction ThumbnailText(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, subTextAppLink, textPosition, appLink } = props;\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={props.subTextType}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={!textIsOverlayed ? subTextAppLink : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate)\n ? (\n <span className={`h6 text-reset clamp-1`}>\n <VideoTitle\n video={video}\n title={video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n showNewVideoIndicator={props.showNewVideoIndicator}\n />\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={appLink}>\n <VideoTitle\n video={video}\n showNewVideoIndicator={props.showNewVideoIndicator}\n />\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, appLink, textPosition, imageOptions, setFavourite, preload, hoverToPlay } = props;\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isHoveringIntentionally && canConsume && hoverToPlay;\n\n function canFavourite(): boolean {\n return props.canFavourite?.(props.video) && FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showMask = !!appLink && !props.hideMask && canNavigate;\n const tooltip = VideoHelper.getPrivacyReasoning(props.video, props.showSignIn);\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n <PluginHover\n isPlugin={props.isPlugin}\n className={props.size === 'sm' ? 'rounded' : 'rounded-3'}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={props.checkMarkStatus}\n setCheckMarkStatus={props.setCheckMarkStatus}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n onClick={canNavigate ? props.onClick : undefined}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {/* overlay */}\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n \n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} />}\n \n {!props.hideVideoTypeBadge && <VideoTypeBadge video={video} size={props.size} />}\n\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n size={props.size}\n />\n </div>\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n \n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, CanFavouriteFunc, FavouriteFunc, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n appLink: Core.AppLink;\n onClick?: () => void;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n preload?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n hoverToPlay?: boolean;\n companyLogoFallbackUrl?: string;\n imageCdnUrl?: string;\n isPlugin: boolean;\n showOwner?: boolean;\n showNewVideoIndicator?: boolean;\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n subTextType?: VideoSubTextType;\n subTextAppLink?: Core.AppLink;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'expandable';\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'popout';\n hideDuration: boolean;\n extraClasses?: string;\n audience: Audience;\n imageCdnUrl: string;\n hideRating?: boolean;\n yearGroups: YearGroup[];\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n onClickRemove: () => void;\n removeButtonTooltip?: string;\n}\n\ninterface BaseStaticVideoThumbnailProps extends BaseVideoThumbnailProps {\n textPosition: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n showSignIn?: boolean;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n hideVideoTypeBadge?: boolean;\n}\n\ninterface PureStaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps {\n type: 'static';\n}\n\n/**\n * Allows us to have loose types when we only want to display a thumbnail\n * without any of the functionality - Sha\n */\ninterface CosmeticVideoThumbnailProps extends Partial<BaseStaticVideoThumbnailProps> {\n type: 'cosmetic';\n}\n\nexport type StaticVideoThumbnailProps = PureStaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nexport type VideoThumbnailProps = ExpandableVideoThumbnailProps |\n StaticVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} hoverToPlay={false} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"iwBld\",\"draft\":\"QBpxh\",\"badge\":\"KcvGx\",\"svg\":\"gW733\",\"text\":\"QiH5Q\",\"sm\":\"tn2BH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './type-badge.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return cvSvgLibrary.Clip;\n case MasterType.Interactive:\n return cvSvgLibrary.Interactive;\n case MasterType.Resource:\n return cvSvgLibrary.Resources;\n default:\n return '';\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-ultramarine';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n inContainer?: boolean;\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={props.inContainer ? '' : styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svgName={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Lock}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"OjHQZ\",\"icon\":\"SS2zL\",\"disabled\":\"eGiNR\",\"active\":\"kD1xM\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svgName: string;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n theme?: {\n tabLabel?: string;\n container?: string;\n }\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n className={`\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ${props.theme?.container} ${styles.tag} ${props.active ? styles.active : ''}\n `}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return (\n <div\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${props.theme?.container} ${styles.tag} ${styles.disabled}`}\n >\n <VideoGuidanceTag {...props} />\n </div>\n );\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svgName={props.svgName}\n />\n\n <span className={`ps-1 text-nowrap user-select-none ${props.theme?.tabLabel}`}>\n {props.text}\n </span>\n </>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.classroomGuideTag';\n\ninterface ClassroomGuideTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ClassroomGuideTag(props: ClassroomGuideTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n if (!props.video.glance)\n return <></>;\n\n return (\n <VideoGuidanceTag\n theme={{\n container: 'classroom-guide-tag',\n tabLabel: 'classroom-guide-tag-label'\n }}\n svgName={cvSvgLibrary.GraduationCap}\n iconVariant='navy'\n text={LanguageService.getPhrase(namespace, 'classroomGuide')}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n glanceId: props.video.glance?.id,\n totalPointsOfInterest: props.video.pointsOfInterest?.data?.length,\n videoGuidanceType: 'classroom-guide',\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!VideoHelper.showInteractivesGuidance(props.video))\n return <></>;\n \n const interactiveCount = !VideoHelper.isInteractive(props.video) && (props.video.interactives?.data.length || 0);\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Interactive}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\nfunction getResourceCount(video: VideoTypes): number {\n if (VideoHelper.isInteractive(video))\n return 0;\n\n return (\n (video.resources?.data.length || 0) +\n (video.links?.data.length || 0)\n );\n}\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!VideoHelper.showResourcesGuidance(props.video))\n return <></>;\n\n const resourceCount = getResourceCount(props.video);\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Resources}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { ClassroomGuideTag } from 'libs/shared/components/video-guidance/classroom-guide/ClassroomGuideTag';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemGuidanceProps {\n video: VideoTypes;\n getVideoAppLink?: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n containerClassName: string;\n responsiveClassName?: string;\n}\n\nexport function VideoItemGuidance(props: VideoItemGuidanceProps): JSX.Element {\n const showingResourcesAndInteractives = (\n VideoHelper.showInteractivesGuidance(props.video) &&\n VideoHelper.showResourcesGuidance(props.video)\n );\n\n return (\n <div className={`${props.containerClassName} ${showingResourcesAndInteractives ? props.responsiveClassName : ''}`}>\n <ClassroomGuideTag\n appLink={props.getClassroomGuideAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n appLink={props.getResourceGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <InteractivesTag\n appLink={props.getInteractiveGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"VrK4W\",\"smallText\":\"OScyH\",\"title\":\"svw3F\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './video-title.scss';\n\nconst namespace = 'shared.videoTitle';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TODAY = new Date();\n\nexport type VideoTitleSizes = 'h4' | 'h5' | 'h6';\n\ninterface VideoTitleProps {\n video: Video;\n yearGroups?: YearGroup[];\n showNewVideoIndicator?: boolean;\n title?: string;\n\n lockSize?: 'sm' | 'md';\n titleSize?: VideoTitleSizes;\n className?: string;\n}\n\nfunction isDateInCurrentMonth(target: string) {\n return DateHelper.isSame(target, TODAY, 'year') && DateHelper.isSame(target, TODAY, 'month');\n}\n\nVideoTitle.defaultProps = {\n titleSize: 'h6',\n className: ''\n};\n\nexport function VideoTitle(props: VideoTitleProps): JSX.Element {\n const dateRelease = props.video.dateReleased;\n const isCurrentMonth = dateRelease && isDateInCurrentMonth(dateRelease);\n\n const shouldShowNewVideoIndicator = props.showNewVideoIndicator\n && isCurrentMonth\n && props.video._isClickViewCurated?.value;\n\n return (\n <>\n <Tooltip\n title={`${shouldShowNewVideoIndicator ? getPhrase('newVideo') : ''}`}\n spanHack\n spanHackClassName='d-inline-block'\n >\n {shouldShowNewVideoIndicator && (\n <span className={`rounded-circle bg-green d-inline-block me-1 ${styles.dot} ${props.titleSize === 'h6' ? styles.smallText : ''}`} />\n )}\n </Tooltip>\n\n <h2 className={`${props.titleSize} ${styles.title} ${props.className} d-inline`}>\n {props.title || props.video.name}\n </h2>\n\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size={props.lockSize}\n />\n </>\n );\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"hoverContainer\":\"TzWQw\",\"hovering\":\"gdTcW\"};","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\n\nimport styles from './global-player-consumer.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n\n if (playerContext.mode === 'default' || props.location === 'play-page')\n return <OutPortal node={playerContext.portalNode} />;\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}"],"names":["AudienceLabel","props","audience","className","border","name","BadgeListContainer","children","CheckMarkStatus","CheckMarkButton","status","Complete","isComplete","setIsComplete","style","None","FunctionHelper","setStatus","DivButton","onClick","shouldComplete","newStatus","Incomplete","disabled","SvgContainer","svgName","defaultProps","MaskType","Mask","type","size","typeClass","Video","Playlist","getClassByType","svgType","getSvgType","defaults","ThumbnailText","video","appLink","subTextAppLink","showNewVideoIndicator","canNavigate","VideoHelper","VideoSubText","subTextType","analyticsOptions","location","AppLink","VideoTitle","yearGroups","lockSize","getPhrase","LanguageService","FavouriteButton","alerts","initialState","isFavourite","setIsFavourite","setFavourite","canFavourite","shouldFavourite","error","analyticsData","tabIndex","preventFocus","undefined","VideoWatchProgressBar","progress","watchPercentage","duration","width","VideoThumbnailBottomBar","LiteOwnerAvatar","_liteOwner","_isClickViewCurated","value","SvgContainer2","Avatar","imageCdnUrl","initials","UserHelper","surname","imageUrl","avatar","url","PluginHover","isPlugin","Text","namespace","phrase","ThumbnailPadlock","svgSize","S","ThumbnailCompanyLogo","companyLogoFallbackUrl","company","productionCompanies","data","ImageHelper","logo","logoFallbackBgClassName","getBgColorClass","Tooltip","title","spanHack","metadata","colour","backgroundImage","backgroundColor","VideoTypeBadge","TypeBadge","typeId","MasterType","inContainer","getTitleClass","hovering","ExpandableVideoThumbnail","imageOptions","preload","hoverToPlay","canConsume","appLinkParams","ObjectHelper","params","eventAnalyticsOptions","entity","showFavouriteButton","isVideo","rating","delay","thumbnailHoverRef","showThumbnailPreviewVideo","id","actionType","descriptor","spanHackClassName","ref","showOwner","BaseImage","imageType","alt","series","ImageFallback","Badge","hasSubtitle","hasInteractives","GlobalPlayerConsumer","key","objectId","objectTypeId","mode","context","contextId","moviesAndTv","mtv","VideoThumbnailBadges","showAudience","showRating","hideRating","hideDuration","newDurationStyle","PopoutVideo","isHovering","cleanPortalNode","extraClasses","hideTitle","appLinkClassName","imageClassName","showVideoGuidance","VideoItemGuidance","getClassroomGuideAppLink","getResourceGuidanceAppLink","getInteractiveGuidanceAppLink","responsiveClassName","containerClassName","PopoutVideoThumbnail","HoverToPortalContainer","hoverableComponent","componentProps","fixedHoverWidth","minHoverWidth","VideoThumbnailActions","setCheckMarkStatus","hasActions","checkMarkStatus","textPosition","textIsOverlayed","ThumbnailTextPosition","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","showMask","hideMask","tooltip","showSignIn","r","current","getThumbnailClass","hideVideoTypeBadge","VideoThumbnail","getIcon","getColourClass","CurationStatus","baseClasses","getText","RestrictionPadlock","_restrictions","placement","tooltipPlacement","ContainerWrapper","appLinkAnalyticsData","appLinkAnalyticsOptions","theme","container","active","VideoGuidanceTag","iconVariant","tabLabel","text","ClassroomGuideTag","glance","glanceId","totalPointsOfInterest","pointsOfInterest","length","videoGuidanceType","InteractivesTag","interactiveCount","interactives","smartCount","videoGuidanceTotalItems","ResourcesTag","resourceCount","resources","links","showingResourcesAndInteractives","TODAY","Date","target","dateRelease","dateReleased","isCurrentMonth","DateHelper","shouldShowNewVideoIndicator","titleSize","playerContext","useInitialize","hasProvider","isOnPlayPage","node","portalNode","shouldShow","started","rounding"],"sourceRoot":""}
|