@clickview/lite 0.67.0 → 0.67.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.
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4374],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>p});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){return l="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},l(e)}function u(e,t,n){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function p(e,t){var n=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),c=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:o,items:c,isFetching:r.isFetching}}function m(e,t,n){var s,p,m,v,f=n||function(e){return"object"===l(e)?e.id:e},y=r.useRef(new Set),h=(m=r.useState([]),v=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(m,v)||c(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],b=h[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=f(e);y.current.has(t)||(n.push(e),y.current.add(t))})),n.length&&b((function(e){return[].concat(o(e),o(a.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=i.a.useBasicFetchAll(g),I=a.m.flatten(A.data),C=A.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},f(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(p=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===p?void 0:p.hasCompleted),itemsArr:I,items:C,isFetching:A.isFetching}}},63719:(e,t,n)=>{n.d(t,{h:()=>c});var r=n(32735),i=n(77316);function a(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){var t,n,c=(t=r.useMemo((function(){return i.p.getBuilder()}),[]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||a(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.")}()),s=c[0],l=(0,c[1])(s);return l&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(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.")}()}(l),[Object.assign(Object.assign({},e),{active:!0})]):l}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(20354),i=n(89454),a=n(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return r.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},35014:(e,t,n)=>{n.d(t,{I:()=>s});var r=n(16714),i=n(12754),a=n(22902),o=n(15311),c=n(11387);function s(){var e=(0,a.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,s=(0,(0,o.r)().hasProduct)(i.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&t(r.C.ViewVideoInteractives),canViewClips:s&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&c.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:s}}},97816:(e,t,n)=>{n.d(t,{V:()=>l});var r=n(20354),i=n(21750),a=n(31949),o=n(1575),c=n(39902),s=n(31908);function l(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=r.a.useBasicFetch(a.N.currentUser()),u=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).map((function(e){return e.id}));(0,c.F)(u,(function(e){return o.R.videoMixinAssocs(e,n.flightNamespace)})),(0,c.F)((null===(t=l.data)||void 0===t?void 0:t.isAuthenticated)&&u,(function(e){return i.x.hasCurriculumLinks(e,null,n.flightNamespace)}))}},98868:(e,t,n)=>{n.d(t,{N:()=>Y});var r=n(32735),i=n(2948),a=n(28400),o=n(49935),c=n(50720),s=n(61499),l=n(79104),u=n(89456),d=n(71063),p=n(10439),m=n(35429),v=n(4594),f=n(16714),y=n(12754),h=n(22902),g=n(65332),b=n(9907),A=n(59598),I=n(31908),C=n(26492),S=n(22103),E=n(84459),P=n(9465),w=n(91479),O=n(47938),V=n(81024),T=n(78166),L=n(99742),R=n(14070),x=n(97291),F=n(86702),k=n(22490),G=n(15731),j=n(75861),N=n(31887),U=n(83345),M=n(13231),q=n(51365),_=n(10671),W=n(10741),D="shared.playClip";function B(e){var t=(0,h.T)().hasPermissions,n=(0,_._)({location:_.i.VideoItem});return r.createElement("section",{className:"play-page-section",id:A.K.ClippedFrom,ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(A.K.ClippedFrom,t)}},r.createElement("h2",{className:"h4 mb-0"},r.createElement(U.x,{namespace:D,phrase:"clippedFrom"})),r.createElement(q.M.Provider,{value:n},r.createElement(M.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,n){var r;return k.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(r=e.currentUser)||void 0===r?void 0:r.isAuthenticated}))},hasPermissions:t,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return W.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink})))}const H={main:"ULvZW",expandedToc:"W3k9M",theatreMode:"KOUGv",theatreModeContent:"fWNAc",playPageContainer:"L0OJ6"};function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Q=function(e,t,n){return function(r){return n?{application:x.O.VIDEOS,action:R.e.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:x.O.SIGN_UP,action:R.e.SignUp.SIGN_UP}}};function Y(e){var t,n,U,M,q,_,W,D,Y,$,J=(0,m.g)(),Z=(0,h.T)().hasPermissions,z=I.M.getCanBeConsumed(e.clip).canConsume,X=(0,G.Q)(e.tableOfContentsId,e.hasTranscript),ee=X.tableOfContentsActiveId,te=X.setTableOfContentsActiveId,ne=X.controlledId,re=X.setControlledId,ie=X.tableOfContentsExpanded,ae=X.onToggleTableOfContents,oe=(0,s.Wp)(e.clip)&&e.featureAccess.canViewGlance,ce=(0,j.i)(oe),se=ce.headingRef,le=ce.headingElements,ue=le.map((function(t){var n;return{id:t.id,name:N.d.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:null===(n=e.clip.resources)||void 0===n?void 0:n.data,isPlayClipPage:!0})}}));(0,g.D)({setActiveId:te,headingElements:le,controlledId:ne,setControlledId:re}),(0,b.P)(le,ne);var de=I.M.isVideoTypeArchived(e.clip),pe=Z(f.C.StudentExperience),me=r.useRef(!1);function ve(){var e,t,n,r;me.current=!(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==J?void 0:J.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()}function fe(){var e,t;me.current&&(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())}function ye(){var t,n;return!(!e.originalVideo||!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value)||!(null===(n=e.currentUser)||void 0===n?void 0:n.isAuthenticated)||!e.hasProduct(y.x.Primary)||pe)}var he="picture-in-picture"===J.mode||e.featureAccess.canViewPublicLayout,ge=e.hasTranscript&&"theatre"===J.mode,be=null!==(n=null===(t=e.clips)||void 0===t?void 0:t.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==n?n:[];r.useEffect((function(){e.hasTranscript&&e.shouldShowSideTableOfContents&&(ie||ge||ae(),ie&&ge&&ae())}),[ge,ie,e.shouldShowSideTableOfContents,e.hasTranscript]);var Ae,Ie,Ce=(Ae=(0,i.D)(F.y.PLAY_PAGE_CONTAINER_CLASS_NAME),Ie=2,function(e){if(Array.isArray(e))return e}(Ae)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(Ae,Ie)||function(e,t){if(e){if("string"==typeof e)return K(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)?K(e,t):void 0}}(Ae,Ie)||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.")}())[1];return r.useEffect((function(){return e.hasTranscript&&Ce(H.playPageContainer),function(){Ce("")}}),[]),r.createElement("div",{className:"px-4 play-page-sections-container ".concat(e.shouldShowSideTableOfContents?"row g-0":"")},r.createElement("main",{className:"".concat(H.main," ").concat(e.hasTranscript?e.shouldShowSideTableOfContents&&!ge?"".concat(H.expandedToc," col-9"):e.shouldShowSideTableOfContents&&ge?"".concat(H.theatreMode):e.shouldShowSideTableOfContents&&!ie?"pe-4":void 0:e.shouldShowSideTableOfContents&&ie?"".concat(H.expandedToc," col-9"):e.shouldShowSideTableOfContents&&!ie?"pe-4":void 0)},!!(null===(U=e.breadcrumbs)||void 0===U?void 0:U.length)&&r.createElement("div",{className:"mb-2"},r.createElement(o.Oo,{breadcrumbs:e.breadcrumbs})),r.createElement(O.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:v.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),de&&r.createElement(C.T,{typeId:e.clip.typeId,hasStudentExperience:pe}),r.createElement("section",{id:A.K.Video,className:"mb-2 ".concat(d.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==se?void 0:se.current)&&se.current.set(A.K.Video,e)}},z&&r.createElement(p.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(M=e.queryParams)||void 0===M?void 0:M.context,contextId:null===(q=e.queryParams)||void 0===q?void 0:q.contextId,moviesAndTv:null===(_=e.queryParams)||void 0===_?void 0:_.mtv,playNext:null===(W=e.queryParams)||void 0===W?void 0:W.playNext,startTime:null!==(Y=null===(D=e.queryParams)||void 0===D?void 0:D.t)&&void 0!==Y?Y:null===($=e.queryParams)||void 0===$?void 0:$.startTime,mode:J.mode,location:"play-page"}),r.createElement("div",{className:he?"":"d-none"},r.createElement(V.S,{video:e.clip,type:"pip"}))),r.createElement("div",{className:ge?"container ".concat(H.theatreModeContent):""},r.createElement(w.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:ye()?{application:x.O.VIDEOS,action:R.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,a.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),oe?r.createElement(l.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=J.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:oe}):r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ve,onExitImmersiveReader:fe,getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:se,suppressInteractivity:e.featureAccess.canViewPublicLayout}),r.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.imageCdnUrl,getAppLink:Q(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:L.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:se}),r.createElement(E.J,{video:e.clip,interactives:e.interactives,imageCdnUrl:e.imageCdnUrl,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:se,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}),r.createElement(S.O,{clips:be||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,headingRef:se,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},isPlugin:e.isPlugin}),oe&&r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ve,onExitImmersiveReader:fe,getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:se,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0}),!!ye()&&r.createElement(B,{originalVideo:e.originalVideo,setFavourite:e.setFavourite,canFavourite:e.canFavourite,yearGroups:e.yearGroups,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:se,isPlugin:e.isPlugin,getClassroomGuideAppLink:k.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:k.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:k.W.getResourceGuidanceAppLink,currentUser:e.currentUser}),r.createElement(T.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,n){var r;return k.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(r=e.currentUser)||void 0===r?void 0:r.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin,showNewVideoIndicator:e.hasTopicDirectories}))),r.createElement(P.h,{isExpanded:ie,setIsExpanded:ae,toggleTheatreMode:e.hasTranscript?function(e){var t,n,r;null===(r=null===(n=null===(t=J.playerRef)||void 0===t?void 0:t.current)||void 0===n?void 0:n.toggleTheatreMode)||void 0===r||r.call(n,e)}:null,items:ue,activeId:ee,setControlledId:re,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},showInSide:e.shouldShowSideTableOfContents}))}}}]);
2
- //# sourceMappingURL=4374-9fca709631-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4374],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>p});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){return l="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},l(e)}function u(e,t,n){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function p(e,t){var n=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),c=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:o,items:c,isFetching:r.isFetching}}function m(e,t,n){var s,p,m,v,f=n||function(e){return"object"===l(e)?e.id:e},y=r.useRef(new Set),h=(m=r.useState([]),v=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(m,v)||c(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],b=h[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=f(e);y.current.has(t)||(n.push(e),y.current.add(t))})),n.length&&b((function(e){return[].concat(o(e),o(a.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=i.a.useBasicFetchAll(g),I=a.m.flatten(A.data),C=A.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},f(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(p=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===p?void 0:p.hasCompleted),itemsArr:I,items:C,isFetching:A.isFetching}}},63719:(e,t,n)=>{n.d(t,{h:()=>c});var r=n(32735),i=n(77316);function a(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){var t,n,c=(t=r.useMemo((function(){return i.p.getBuilder()}),[]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||a(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.")}()),s=c[0],l=(0,c[1])(s);return l&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(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.")}()}(l),[Object.assign(Object.assign({},e),{active:!0})]):l}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(20354),i=n(89454),a=n(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return r.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},35014:(e,t,n)=>{n.d(t,{I:()=>s});var r=n(16714),i=n(12754),a=n(22902),o=n(15311),c=n(11387);function s(){var e=(0,a.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,s=(0,(0,o.r)().hasProduct)(i.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&t(r.C.ViewVideoInteractives),canViewClips:s&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&c.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:s}}},97816:(e,t,n)=>{n.d(t,{V:()=>l});var r=n(20354),i=n(21750),a=n(31949),o=n(1575),c=n(39902),s=n(31908);function l(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=r.a.useBasicFetch(a.N.currentUser()),u=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).map((function(e){return e.id}));(0,c.F)(u,(function(e){return o.R.videoMixinAssocs(e,n.flightNamespace)})),(0,c.F)((null===(t=l.data)||void 0===t?void 0:t.isAuthenticated)&&u,(function(e){return i.x.hasCurriculumLinks(e,null,n.flightNamespace)}))}},98868:(e,t,n)=>{n.d(t,{N:()=>Y});var r=n(32735),i=n(2948),a=n(28400),o=n(49935),c=n(50720),s=n(61499),l=n(79104),u=n(89456),d=n(71063),p=n(10439),m=n(35429),v=n(4594),f=n(16714),y=n(12754),h=n(22902),g=n(65332),b=n(9907),A=n(59598),I=n(31908),C=n(26492),S=n(22103),E=n(84459),P=n(9465),w=n(91479),O=n(47938),V=n(81024),T=n(78166),L=n(99742),R=n(14070),x=n(97291),F=n(86702),k=n(22490),G=n(15731),j=n(75861),N=n(31887),U=n(83345),M=n(13231),q=n(51365),_=n(10671),W=n(10741),D="shared.playClip";function B(e){var t=(0,h.T)().hasPermissions,n=(0,_._)({location:_.i.VideoItem});return r.createElement("section",{className:"play-page-section",id:A.K.ClippedFrom,ref:function(t){var n;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&e.headingRef.current.set(A.K.ClippedFrom,t)}},r.createElement("h2",{className:"h4 mb-0"},r.createElement(U.x,{namespace:D,phrase:"clippedFrom"})),r.createElement(q.M.Provider,{value:n},r.createElement(M.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,n){var r;return k.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(r=e.currentUser)||void 0===r?void 0:r.isAuthenticated}))},hasPermissions:t,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return W.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink})))}const H={main:"ULvZW",expandedToc:"W3k9M",theatreMode:"KOUGv",theatreModeContent:"fWNAc",playPageContainer:"L0OJ6"};function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Q=function(e,t,n){return function(r){return n?{application:x.O.VIDEOS,action:R.e.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:x.O.SIGN_UP,action:R.e.SignUp.SIGN_UP}}};function Y(e){var t,n,U,M,q,_,W,D,Y,$,J=(0,m.g)(),Z=(0,h.T)().hasPermissions,z=I.M.getCanBeConsumed(e.clip).canConsume,X=(0,G.Q)(e.tableOfContentsId,e.hasTranscript),ee=X.tableOfContentsActiveId,te=X.setTableOfContentsActiveId,ne=X.controlledId,re=X.setControlledId,ie=X.tableOfContentsExpanded,ae=X.onToggleTableOfContents,oe=(0,s.Wp)(e.clip)&&e.featureAccess.canViewGlance,ce=(0,j.i)(oe),se=ce.headingRef,le=ce.headingElements,ue=le.map((function(t){var n;return{id:t.id,name:N.d.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:null===(n=e.clip.resources)||void 0===n?void 0:n.data,isPlayClipPage:!0})}}));(0,g.D)({setActiveId:te,headingElements:le,controlledId:ne,setControlledId:re}),(0,b.P)(le,ne);var de=I.M.isVideoTypeArchived(e.clip),pe=Z(f.C.StudentExperience),me=r.useRef(!1);function ve(){var e,t,n,r;me.current=!(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==J?void 0:J.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()}function fe(){var e,t;me.current&&(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())}function ye(){var t,n;return!(!e.originalVideo||!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value)||!(null===(n=e.currentUser)||void 0===n?void 0:n.isAuthenticated)||!e.hasProduct(y.x.Primary)||pe)}var he="picture-in-picture"===J.mode||e.featureAccess.canViewPublicLayout,ge=e.hasTranscript&&"theatre"===J.mode,be=null!==(n=null===(t=e.clips)||void 0===t?void 0:t.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==n?n:[];r.useEffect((function(){e.hasTranscript&&e.shouldShowSideTableOfContents&&(ie||ge||ae(),ie&&ge&&ae())}),[ge,ie,e.shouldShowSideTableOfContents,e.hasTranscript]);var Ae,Ie,Ce=(Ae=(0,i.D)(F.y.PLAY_PAGE_CONTAINER_CLASS_NAME),Ie=2,function(e){if(Array.isArray(e))return e}(Ae)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],s=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(Ae,Ie)||function(e,t){if(e){if("string"==typeof e)return K(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)?K(e,t):void 0}}(Ae,Ie)||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.")}())[1];return r.useEffect((function(){return e.hasTranscript&&Ce(H.playPageContainer),function(){Ce("")}}),[]),r.createElement("div",{className:"px-4 play-page-sections-container ".concat(e.shouldShowSideTableOfContents?"row g-0":"")},r.createElement("main",{className:"".concat(H.main," ").concat(e.hasTranscript?e.shouldShowSideTableOfContents&&!ge?"".concat(H.expandedToc," col-9"):e.shouldShowSideTableOfContents&&ge?"".concat(H.theatreMode):e.shouldShowSideTableOfContents&&!ie?"pe-4":void 0:e.shouldShowSideTableOfContents&&ie?"".concat(H.expandedToc," col-9"):e.shouldShowSideTableOfContents&&!ie?"pe-4":void 0)},!!(null===(U=e.breadcrumbs)||void 0===U?void 0:U.length)&&r.createElement("div",{className:"mb-2"},r.createElement(o.Oo,{breadcrumbs:e.breadcrumbs})),r.createElement(O.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:v.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),de&&r.createElement(C.T,{typeId:e.clip.typeId,hasStudentExperience:pe}),r.createElement("section",{id:A.K.Video,className:"mb-2 ".concat(d.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==se?void 0:se.current)&&se.current.set(A.K.Video,e)}},z&&r.createElement(p.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(M=e.queryParams)||void 0===M?void 0:M.context,contextId:null===(q=e.queryParams)||void 0===q?void 0:q.contextId,moviesAndTv:null===(_=e.queryParams)||void 0===_?void 0:_.mtv,playNext:null===(W=e.queryParams)||void 0===W?void 0:W.playNext,startTime:null!==(Y=null===(D=e.queryParams)||void 0===D?void 0:D.t)&&void 0!==Y?Y:null===($=e.queryParams)||void 0===$?void 0:$.startTime,mode:J.mode||"default",location:"play-page"}),r.createElement("div",{className:he?"":"d-none"},r.createElement(V.S,{video:e.clip,type:"pip"}))),r.createElement("div",{className:!e.hasTranscript||!ge&&e.shouldShowSideTableOfContents?"":"container ".concat(H.theatreModeContent)},r.createElement(w.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:ye()?{application:x.O.VIDEOS,action:R.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,a.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),oe?r.createElement(l.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=J.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:oe}):r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ve,onExitImmersiveReader:fe,getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:se,suppressInteractivity:e.featureAccess.canViewPublicLayout}),r.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.imageCdnUrl,getAppLink:Q(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:L.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:se}),r.createElement(E.J,{video:e.clip,interactives:e.interactives,imageCdnUrl:e.imageCdnUrl,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:se,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}),r.createElement(S.O,{clips:be||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,headingRef:se,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},isPlugin:e.isPlugin}),oe&&r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ve,onExitImmersiveReader:fe,getTagAppLink:function(e){return{application:x.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:se,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0}),!!ye()&&r.createElement(B,{originalVideo:e.originalVideo,setFavourite:e.setFavourite,canFavourite:e.canFavourite,yearGroups:e.yearGroups,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:se,isPlugin:e.isPlugin,getClassroomGuideAppLink:k.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:k.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:k.W.getResourceGuidanceAppLink,currentUser:e.currentUser}),r.createElement(T.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,n){var r;return k.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:null===(r=e.currentUser)||void 0===r?void 0:r.isAuthenticated}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin,showNewVideoIndicator:e.hasTopicDirectories}))),r.createElement(P.h,{isExpanded:ie,setIsExpanded:ae,toggleTheatreMode:e.hasTranscript?function(e){var t,n,r;null===(r=null===(n=null===(t=J.playerRef)||void 0===t?void 0:t.current)||void 0===n?void 0:n.toggleTheatreMode)||void 0===r||r.call(n,e)}:null,items:ue,activeId:ee,setControlledId:re,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},showInSide:e.shouldShowSideTableOfContents}))}}}]);
2
+ //# sourceMappingURL=4374-00e39f8a5c-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4374-00e39f8a5c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/components/clipped-from/ClippedFrom.tsx","file:///app/packages/projects/lite/src/shared/views/play-clip/components/play-clip/play-clip.scss","file:///app/packages/projects/lite/src/shared/views/play-clip/components/play-clip/PlayClip.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\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, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const getKey = _getKey || ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n\n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(getRequest) ]));\n }, [objs?.length]);\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\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 { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n return {\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\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 videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n useGrowingBatchFetch(\n currentUser.data?.isAuthenticated && videoIds,\n ids => ClassificationRequests.hasCurriculumLinks(ids, null, options.flightNamespace)\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, CurrentUser, FavouriteFunc, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst namespace = 'shared.playClip';\n\ninterface ClippedFromProps {\n originalVideo: VideoTypes;\n yearGroups: YearGroup[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n shareId?: string;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n isPlugin: 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 currentUser: CurrentUser;\n}\n\nexport function ClippedFrom(props: ClippedFromProps) {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n return (\n <section\n className='play-page-section'\n id={PlayPageAnchor.ClippedFrom}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.ClippedFrom, el);\n }}\n >\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n />\n </VideoActionsContext.Provider>\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"ULvZW\",\"expandedToc\":\"W3k9M\",\"theatreMode\":\"KOUGv\",\"theatreModeContent\":\"fWNAc\",\"playPageContainer\":\"L0OJ6\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { PlayPageResources } from 'libs/shared/components/play-page/resources-widget/PlayPageResources';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CanFavouriteFunc, Clip, CurrentUser, FavouriteFunc, InteractiveMetadata, Link, PointOfInterest, PresentationAudience, Resource, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageClips } from 'shared/components/play-page/components/play-page-clips/PlayPageClips';\nimport { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { TableOfContentsContainer } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { usePlayPageTableOfContent } from 'shared/views/play/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/hooks/useSectionHeadings';\nimport { PlayPageUtils } from 'shared/views/play/PlayPageUtil';\nimport { ClippedFrom } from 'shared/views/play-clip/components/clipped-from/ClippedFrom';\n\nimport styles from './play-clip.scss';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\n\ninterface PlayClipProps {\n clip: Clip;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n originalVideo: Video;\n currentUser: CurrentUser;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n imageCdnUrl: string;\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n isPlugin: boolean;\n hasTopicDirectories: boolean;\n hasTranscript: boolean;\n breadcrumbs?: Breadcrumb[];\n}\n\nexport function PlayClip(props: PlayClipProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n function toggleTheatreMode(value: boolean) {\n playerContext.playerRef?.current?.toggleTheatreMode?.(value);\n }\n\n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId, props.hasTranscript);\n\n const hasGlance = hasGlanceData(props.clip) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(ele => {\n return {\n id: ele.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n ele.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: props.clip.resources?.data,\n isPlayClipPage: true\n }\n )\n };\n });\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n function canAccessOriginal(): boolean {\n if (!props.originalVideo || !props.clip._canBeConsumed?.value)\n return false;\n\n if (!props.currentUser?.isAuthenticated)\n return false;\n\n if (!props.hasProduct(ProductId.Primary))\n return false;\n\n if (hasStudentExperience)\n return false;\n\n return true;\n }\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal())\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.originalVideo.id, TextHelper.slugify(props.originalVideo.name) ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n const theatreMode = props.hasTranscript && playerContext.mode === 'theatre';\n\n const otherClips = props.clips?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n function getMainClassName() {\n if (!props.hasTranscript) {\n if (props.shouldShowSideTableOfContents && tableOfContentsExpanded) {\n return `${styles.expandedToc} col-9`;\n }\n if (props.shouldShowSideTableOfContents && !tableOfContentsExpanded)\n return 'pe-4';\n return;\n }\n\n if (props.shouldShowSideTableOfContents && !theatreMode) {\n return `${styles.expandedToc} col-9`;\n }\n if (props.shouldShowSideTableOfContents && theatreMode) {\n return `${styles.theatreMode}`;\n }\n if (props.shouldShowSideTableOfContents && !tableOfContentsExpanded) {\n return 'pe-4';\n }\n }\n\n React.useEffect(() => {\n if (!props.hasTranscript)\n return;\n\n if (!props.shouldShowSideTableOfContents)\n return;\n // when theatre mode is off, collapse table of contents\n if (!tableOfContentsExpanded && !theatreMode) {\n onToggleTableOfContents();\n }\n // when theatre mode is on, expand table of contents\n if (tableOfContentsExpanded && theatreMode) {\n onToggleTableOfContents();\n }\n }, [ theatreMode, tableOfContentsExpanded, props.shouldShowSideTableOfContents, props.hasTranscript ]);\n\n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n React.useEffect(() => {\n if (props.hasTranscript)\n setContainerClassName(styles.playPageContainer);\n return () => {\n setContainerClassName('');\n };\n }, []);\n\n return (\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${getMainClassName()}`}>\n {!!props.breadcrumbs?.length && (\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n )}\n\n <RestrictionBanner\n restrictions={props.clip._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-2 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode={playerContext.mode || 'default'}\n location='play-page'\n />\n )}\n\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <div className={props.hasTranscript && (theatreMode || !props.shouldShowSideTableOfContents) ? `container ${styles.theatreModeContent}` : ''}>\n <PlayPageTitleAndActions\n media={props.clip}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.clip}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n )}\n\n <PlayPageResources\n video={props.clip}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.imageCdnUrl}\n getAppLink={\n getResourceAppLink(props.clip.id, props.shareId, props.featureAccess.canViewResourceItems)\n }\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n headingRef={headingRef}\n />\n\n <PlayPageInteractives\n video={props.clip}\n interactives={props.interactives}\n imageCdnUrl={props.imageCdnUrl}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n headingRef={headingRef}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n isPlugin={props.isPlugin}\n />\n\n <PlayPageClips\n clips={otherClips || []}\n video={props.clip}\n canViewClips={props.featureAccess.canViewClips}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n imageCdnUrl={props.imageCdnUrl}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n headingRef={headingRef}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n isPlugin={props.isPlugin}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.clip}\n currentUser={props.currentUser}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n headingRef={headingRef}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n />\n )}\n \n {!!canAccessOriginal() && (\n <ClippedFrom\n originalVideo={props.originalVideo}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n yearGroups={props.yearGroups}\n shareId={props.shareId}\n queryParams={props.queryParams}\n audiences={props.audiences}\n headingRef={headingRef}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n currentUser={props.currentUser}\n />\n )}\n\n <RelatedVideos\n currentVideo={props.clip}\n yearGroups={props.yearGroups}\n relatedVideos={props.relatedVideos}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n })}\n moviesAndTv={props.queryParams.mtv}\n isPlugin={props.isPlugin}\n showNewVideoIndicator={props.hasTopicDirectories}\n />\n </div>\n </main>\n\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={props.hasTranscript ? toggleTheatreMode : null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ clipId: props.clip.id, clipName: props.clip.name }}\n showInSide={props.shouldShowSideTableOfContents}\n />\n </div>\n );\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","key","current","has","push","add","r","hasFirstRequestCompleted","hasCompleted","useBreadcrumbs","match","breadcrumbs","useBuilder","active","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","useVideoMixin","objects","options","currentUser","videoIds","Array","isArray","filter","o","getValidObjects","v","ids","flightNamespace","isAuthenticated","namespace","ClippedFrom","props","usePermissions","videoActions","useVideoActions","location","className","PlayPageAnchor","ref","el","headingRef","set","Text","phrase","VideoActionsContext","value","VideoList","videos","originalVideo","yearGroups","setFavourite","canFavourite","getVideoAppLink","opts","VideoAppLinkHelper","context","queryParams","contextId","playNext","shareId","moviesAndTv","mtv","includeContext","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","isPlugin","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","getResourceAppLink","videoId","canViewResource","resource","application","action","args","params","PlayClip","playerContext","canConsume","VideoHelper","clip","usePlayPageTableOfContent","tableOfContentsId","hasTranscript","tableOfContentsActiveId","setTableOfContentsActiveId","controlledId","setControlledId","tableOfContentsExpanded","onToggleTableOfContents","hasGlance","featureAccess","useSectionHeadings","headingElements","ele","name","PlayPageUtil","clips","interactives","resources","isPlayClipPage","useTableOfContentsActiveHeading","setActiveId","useTableOfContentsScroll","isArchived","hasStudentExperience","PermissionName","shouldPlayOnExitImmersiveReader","onLaunchImmersiveReader","playerRef","isPaused","pause","onExitImmersiveReader","play","canAccessOriginal","_canBeConsumed","ProductId","showPlayerPlaceholder","mode","theatreMode","otherClips","c","toString","shouldShowSideTableOfContents","setContainerClassName","Breadcrumbs","RestrictionBanner","restrictions","_restrictions","objectId","objectTypeId","MasterType","canManageVideoAccess","ArchivedBanner","typeId","SeoConstants","GlobalPlayerConsumer","startTime","t","PlayerPlaceholder","video","type","PlayPageTitleAndActions","media","originalVideoAppLink","TextHelper","VideoAtAGlanceV2","pointsOfInterest","setStartTime","time","currentTime","getTagAppLink","tag","tagOrClassification","suppressInteractivity","PlayPageResources","imageCdnUrl","getAppLink","analyticsData","clipId","clipName","resourceThumbnailFallbackUrl","ImageUrls","PlayPageInteractives","PlayPageClips","showHeading","RelatedVideos","currentVideo","relatedVideos","showNewVideoIndicator","hasTopicDirectories","TableOfContents","isExpanded","setIsExpanded","toggleTheatreMode","activeId","showInSide"],"sourceRoot":""}