@clickview/lite 0.70.0-rc.0 → 0.70.0-rc.1

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-764d01afb0.min.js",
2
+ "appBundle": "bundle-bffc2efc17.min.js",
3
3
  "cssBundle": "lite-app-90190cd96f.css",
4
4
  "polyfillBundle": "polyfills-bac1abc89b.min.js"
5
5
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3978],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>f});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)||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.")}()}function u(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 c(e){return c="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},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(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 f(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),u=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:r.isFetching}}function m(e,t,n){var s,f,m,v,p=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(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,u=[],s=!0,c=!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)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(m,v)||u(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.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=p(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((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(b),C=a.m.flatten(A.data),I=A.data.length?C.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===f?void 0:f.hasCompleted),itemsArr:C,items:I,isFetching:A.isFetching}}},63719:(e,t,n)=>{n.d(t,{h:()=>u});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 u(e){var t,n,u=(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,u=[],s=!0,c=!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)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(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=u[0],c=(0,u[1])(s);return c&&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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},93978:(e,t,n)=>{n.r(t),n.d(t,{PlaySharedVideoView:()=>x});var r=n(32735),i=n(20354),a=n(65858),o=n(16714),u=n(89454),s=n(43012),c=n(20768),l=n(31949),d=n(1575),f=n(63719),m=n(26304),v=n(22902),p=n(79612),h=n(37802),y=n(76753),b=n(10094),g=n(58321),A=n(82817),C=n(7179),I=n(49948),V=n(36873),w=n(86698),S=n(35014),j=n(97816),P=n(33192),F=n(57695),k=n(91442),O=n(16857);function x(e){var t,n,x,L,T,M,B,E,R,U,G=(0,g.U)({locationContext:a.LZ.VideoThumbnail}),q=G.commonVideoProps,N=G.hasCommonVideoPropsCompleted,_=(0,v.T)().hasPermissions,W=(0,S.I)(),D=(0,k.a)(),$=(0,w.y)().activePresentation,Z=(0,h.r)(null).hasPlayPageTranscript,z=i.a.useBasicFetch(l.N.currentUser()),H=i.a.useBasicFetch(d.R.sharedVideo(e.objectId,e.shareId)),J=i.a.useBasicFetch(W.canViewClips&&s.e.videoClips(e.objectId)),K=i.a.useBasicFetch(W.canViewInteractives&&c.b.videoInteractives(e.objectId)),Q=(0,V.k)({video:H.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:z.data}),X=(0,I.l)(e.objectId),Y=i.a.useBasicFetch(!!$&&u.O.audiencesByPresentationId($.id)),ee=Z&&!!(null===(n=null===(t=H.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),te=i.a.useBasicFetch(ee&&(null===(x=z.data)||void 0===x?void 0:x.contentRegion)&&b.F.chaptersAndSubtitles(e.objectId,z.data.contentRegion)),ne=(null==te?void 0:te.data)||{},re=ne.subtitles,ie=ne.chapters,ae=re&&re.length>0?re.map((function(e){return b.F.subtitleVtt(e.url,e)})):[],oe=i.a.useBasicFetchAll(ae);(0,p.M)(y.CG.getVideoMetadata({content:H.data,canonicalLink:P.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1})),(0,j.V)(null!==(L=Q.videos)&&void 0!==L?L:[]),(0,m.b)(H,{private:O.m}),(0,C.P)({id:e.objectId,app:"videos",shareId:e.shareId});var ue=(0,f.h)({name:null===(T=H.data)||void 0===T?void 0:T.name}),se=(0,A.M)(e.objectId);return H.data&&z.hasCompleted&&X.hasCompleted&&N?r.createElement("div",{className:"px-3"},r.createElement(F.j,{video:H.data,clips:null===(M=J.data)||void 0===M?void 0:M.data,interactives:null===(B=K.data)||void 0===B?void 0:B.data,curriculums:se,relatedVideos:Q,currentUser:z.data,pointsOfInterest:null==X?void 0:X.items,playNext:null===(E=e.queryParams)||void 0===E?void 0:E.playNext,shareId:e.shareId,featureAccess:W,audiences:Y.data,params:e.queryParams,canManageVideoAccess:_(o.C.ManageVideoAccess),tableOfContentsId:null===(R=e.queryParams)||void 0===R?void 0:R.tocId,shouldShowSideTableOfContents:D,breadcrumbs:ue,commonVideoProps:q,hasTheatreMode:Z,shouldShowTranscript:ee&&(null===(U=oe.data)||void 0===U?void 0:U.length)>0,vttSubtitles:oe.data||[],subtitles:re||[],chapters:ie})):r.createElement(r.Fragment,null)}},10094:(e,t,n)=>{n.d(t,{F:()=>a});var r=n(97395),i=n(78417),a={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:i.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(i.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>v});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),u=n(31949),s=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),m=n(27638);function v(e){var t,n,v,p=e||{},h=p.locationContext,y=p.mtv,b=p.flightNamespace,g=p.sharedPlaylist,A=(0,f.G)().isPlugin,C=(0,m.u)(h,b),I=C.setFavourite,V=C.canFavourite,w=(0,c.r)(null),S=w.hasTopicDirectories,j=w.isLoadingSettings,P=(0,s.T)(),F=P.hasPermissions,k=P.isLoaded,O=F(i.C.StudentExperience),x=r.a.useBasicFetch(a.L.config()),L=r.a.useBasicFetch(u.N.currentUser()),T=r.a.useBasicFetch((null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(L.data.customerId));return{hasCommonVideoPropsCompleted:!j&&k&&x.hasCompleted&&L.hasCompleted&&(!(null===(n=L.data)||void 0===n?void 0:n.isAuthenticated)||T.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:V,setFavourite:I,imageCdnUrl:null===(v=x.data)||void 0===v?void 0:v.imageCdnUrl,yearGroups:T.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:S,companyLogoFallbackUrl:null,hasStudentExperience:O}}}},35014:(e,t,n)=>{n.d(t,{I:()=>s});var r=n(16714),i=n(12754),a=n(22902),o=n(15311),u=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)&&u.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:s}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),i=n(39902),a=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,i.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}}}]);
2
+ //# sourceMappingURL=3978-ac2acbd10d-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3978-ac2acbd10d-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/apps/share/views/play-shared-video/PlaySharedVideoView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/TranscriptRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"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 * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, CurrentUser, InteractiveCollection, PresentationAudience, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { PlayPage } from 'shared/views/play/components/play-page/PlayPage';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoView(props: ShareLinkViewProps): React.ReactElement {\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n\n const { hasPermissions } = usePermissions();\n\n const featureAccess = useVideoFeatureAccess();\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const { activePresentation } = usePresentation();\n const { hasPlayPageTranscript } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(\n VideoRequests.sharedVideo(props.objectId, props.shareId)\n );\n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.objectId)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const shouldFetchTranscript = hasPlayPageTranscript && !!video.data?._isClickViewCurated?.value;\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.objectId, currentUser.data.contentRegion)\n );\n const { subtitles, chapters } = transcript?.data || {};\n \n const captionsRequests = (subtitles && subtitles.length > 0)\n ? subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle))\n : [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: false\n }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(video, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'videos', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n const curriculums = useCurriculums(props.objectId);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <PlayPage\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest?.items}\n playNext={props.queryParams?.playNext}\n shareId={props.shareId}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldFetchTranscript && captions.data?.length > 0}\n vttSubtitles={captions.data || []}\n subtitles={subtitles || []}\n chapters={chapters}\n />\n </div>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.Request {\n const queryStringObj = {\n query: 'subtitles,chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n key: `videos:${videoId}:subtitles:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle) {\n return {\n url: `{player}/srt-to-vtt?url=${url}`,\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\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 function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\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 { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, 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 videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\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","PlaySharedVideoView","props","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","featureAccess","shouldShowSideTableOfContents","activePresentation","hasPlayPageTranscript","currentUser","video","objectId","shareId","clips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","pointsOfInterest","audiences","shouldFetchTranscript","_isClickViewCurated","value","transcript","contentRegion","subtitles","chapters","captionsRequests","subtitle","url","captions","content","canonicalLink","stripPresentationSlug","allowIndexing","videos","private","app","name","curriculums","className","playNext","params","canManageVideoAccess","tableOfContentsId","tocId","hasTheatreMode","shouldShowTranscript","vttSubtitles","TranscriptRequests","chaptersAndSubtitles","videoId","queryStringObj","query","permissionFilterOption","formatData","subtitleVtt","subtitleObj","vtt","useCommonVideoProps","options","flightNamespace","sharedPlaylist","isPlugin","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","config","yearGroups","isAuthenticated","customerId","subTextType","getSubTextAppLink","series","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","useVideoFeatureAccess","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","useVideoMixin","objects","videoIds","Array","isArray","filter","o","getValidObjects","v","ids"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9630],{94644:(e,t,n)=>{n.d(t,{r:()=>l});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),s=n(49267),u=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound):n.internalServerError||a.Q.Ry.throw(new u._))}}},39902:(e,t,n)=>{n.d(t,{F:()=>v,f:()=>f});var r=n(32735),a=n(20354),i=n(75896);function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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 s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(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){return c="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},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(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 f(e,t){var n=i.m.chunk(e,d).map((function(e){return t(i.m.uniq(e))})),r=a.a.useBasicFetchAll(n),o=i.m.flatten(r.data),s=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:s,isFetching:r.isFetching}}function v(e,t,n){var u,f,v,p,m=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(v=r.useState([]),p=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 r,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(v,p)||s(v,p)||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.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=m(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((function(e){return[].concat(o(e),o(i.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=a.a.useBasicFetchAll(b),w=i.m.flatten(A.data),C=A.data.length?w.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},m(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(u=A.responses)||void 0===u?void 0:u[0])||void 0===f?void 0:f.hasCompleted),itemsArr:w,items:C,isFetching:A.isFetching}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63719:(e,t,n)=>{n.d(t,{h:()=>s});var r=n(32735),a=n(77316);function i(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 s(e){var t,n,s=(t=r.useMemo((function(){return a.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,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(t,n)||i(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.")}()),u=s[0],c=(0,s[1])(u);return c&&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)||i(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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},10094:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(97395),a=n(78417),i={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:a.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(a.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),a=n(16714),i=n(39151),o=n(1666),s=n(31949),u=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),v=n(27638);function p(e){var t,n,p,m=e||{},h=m.locationContext,y=m.mtv,b=m.flightNamespace,g=m.sharedPlaylist,A=(0,f.G)().isPlugin,w=(0,v.u)(h,b),C=w.setFavourite,S=w.canFavourite,V=(0,c.r)(null),F=V.hasTopicDirectories,P=V.isLoadingSettings,I=(0,u.T)(),j=I.hasPermissions,k=I.isLoaded,L=j(a.C.StudentExperience),O=r.a.useBasicFetch(i.L.config()),R=r.a.useBasicFetch(s.N.currentUser()),E=r.a.useBasicFetch((null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(R.data.customerId));return{hasCommonVideoPropsCompleted:!P&&k&&O.hasCompleted&&R.hasCompleted&&(!(null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)||E.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:S,setFavourite:C,imageCdnUrl:null===(p=O.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:E.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:L}}}},35014:(e,t,n)=>{n.d(t,{I:()=>u});var r=n(16714),a=n(12754),i=n(22902),o=n(15311),s=n(11387);function u(){var e=(0,i.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,u=(0,(0,o.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&t(r.C.ViewVideoInteractives),canViewClips:u&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:u}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),a=n(39902),i=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,a.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}},69630:(e,t,n)=>{n.r(t),n.d(t,{PlayView:()=>W});var r=n(32735),a=n(50242),i=n(81886),o=n(23481),s=n(20354),u=n(28400),c=n(65858),l=n(78417),d=n(16714),f=n(67058),v=n(61990),p=n(33803),m=n(89454),h=n(43012),y=n(20768),b=n(98064),g=n(31949),A=n(1575),w=n(63719),C=n(26304),S=n(91286),V=n(22902),F=n(79612),P=n(37802),I=n(76753),j=n(14070),k=n(97291),L=n(10094),O=n(58321),R=n(82817),E=n(7179),x=n(49948),T=n(36873),B=n(86698),M=n(35014),q=n(97816),G=n(33192),U=n(22490),N=n(91442),_=n(57695),D=o.T.encloseNamespace("shared.play"),Q={notFound:v.l,forbidden:{privacy:p.G}};function W(e){var t,n,o,v,p,W,H,$,Y=e.queryParams,Z=Y.context,z=Y.contextId,J=Y.playNext,K=Y.mtv,X=(0,O.U)({locationContext:c.LZ.PlayPage,mtv:K}),ee=X.commonVideoProps,te=X.hasCommonVideoPropsCompleted,ne=(0,V.T)().hasPermissions,re=(0,B.y)().activePresentation,ae=(0,P.r)(null).hasPlayPageTranscript,ie=(0,M.I)(),oe=s.a.useBasicFetch(b.D.streamableLearning()),se=s.a.useBasicFetch(g.N.currentUser()),ue=s.a.useBasicFetch(A.R.video(e.id)),ce=s.a.useBasicFetch(ie.canViewClips&&h.e.videoClips(e.id)),le=s.a.useBasicFetch(ie.canViewInteractives&&y.b.videoInteractives(e.id)),de=s.a.useBasicFetch(re&&m.O.audiencesByPresentationId(re.id)),fe=ae&&!!(null===(n=null===(t=ue.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),ve=s.a.useBasicFetch(fe&&(null===(o=se.data)||void 0===o?void 0:o.contentRegion)&&L.F.chaptersAndSubtitles(e.id,se.data.contentRegion)),pe=(null==ve?void 0:ve.data)||{},me=pe.subtitles,he=pe.chapters,ye=me&&me.length>0?me.map((function(e){return L.F.subtitleVtt(e.url,e)})):[],be=s.a.useBasicFetchAll(ye),ge=(0,N.a)(),Ae=s.a.useBasicFetch(ue.statusCode===a.o.Forbidden&&A.R.video(e.id,l.r.StripMetadata)),we=(0,R.M)(e.id),Ce=(0,T.k)({video:ue.data,context:Z,contextId:z,moviesAndTv:K,currentUser:se.data}),Se=(0,x.l)(e.id,!0),Ve=s.a.useBasicFetch(A.R.regionAlternatives(e.id)),Fe=(0,w.h)({name:null===(v=ue.data)||void 0===v?void 0:v.name});return(0,F.M)(I.CG.getVideoMetadata({content:ue.data,regionAlternatives:Ve.data,phraseContext:{phraseHandler:D,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:U.W.getAppLink(ue.data)}),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getContentHrefLang(Ve.data,(function(e,t){return{application:k.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[e,u.m.slugify(t)]}}))})),(0,S.v)(ue,Q,{forbidden:!0}),(0,q.V)(null!==(p=Ce.videos)&&void 0!==p?p:[]),(0,E.P)({id:e.id,app:"videos"}),(0,C.b)(Ae),r.useEffect((function(){var e;ue.data&&oe.data&&(null===(e=ue.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===oe.data.objectId})))&&i.Q.Ry.throw(new f.d)}),[ue.hasCompleted,oe.hasCompleted]),ue.data&&se.hasCompleted&&Se.hasCompleted&&te?r.createElement(_.j,{video:ue.data,clips:null===(W=ce.data)||void 0===W?void 0:W.data,interactives:null===(H=le.data)||void 0===H?void 0:H.data,curriculums:we,relatedVideos:Ce,currentUser:se.data,pointsOfInterest:Se.items,playNext:J,featureAccess:ie,audiences:de.data,params:e.queryParams,canManageVideoAccess:ne(d.C.ManageVideoAccess),shouldShowSideTableOfContents:ge,tableOfContentsId:null===($=e.queryParams)||void 0===$?void 0:$.tocId,breadcrumbs:Fe,commonVideoProps:ee,hasTheatreMode:ae,shouldShowTranscript:fe,vttSubtitles:be.data||[],subtitles:me||[],chapters:he}):r.createElement(r.Fragment,null)}W.defaultProps={queryParams:{}}}}]);
2
- //# sourceMappingURL=9630-400b514621-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9630],{94644:(e,t,n)=>{n.d(t,{r:()=>l});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),s=n(49267),u=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound):n.internalServerError||a.Q.Ry.throw(new u._))}}},39902:(e,t,n)=>{n.d(t,{F:()=>v,f:()=>f});var r=n(32735),a=n(20354),i=n(75896);function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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 s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(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){return c="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},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(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 f(e,t){var n=i.m.chunk(e,d).map((function(e){return t(i.m.uniq(e))})),r=a.a.useBasicFetchAll(n),o=i.m.flatten(r.data),s=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:s,isFetching:r.isFetching}}function v(e,t,n){var u,f,v,p,m=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(v=r.useState([]),p=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 r,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(v,p)||s(v,p)||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.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=m(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((function(e){return[].concat(o(e),o(i.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=a.a.useBasicFetchAll(b),w=i.m.flatten(A.data),C=A.data.length?w.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},m(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(u=A.responses)||void 0===u?void 0:u[0])||void 0===f?void 0:f.hasCompleted),itemsArr:w,items:C,isFetching:A.isFetching}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63719:(e,t,n)=>{n.d(t,{h:()=>s});var r=n(32735),a=n(77316);function i(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 s(e){var t,n,s=(t=r.useMemo((function(){return a.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,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(t,n)||i(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.")}()),u=s[0],c=(0,s[1])(u);return c&&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)||i(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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},10094:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(97395),a=n(78417),i={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:a.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(a.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),a=n(16714),i=n(39151),o=n(1666),s=n(31949),u=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),v=n(27638);function p(e){var t,n,p,m=e||{},h=m.locationContext,y=m.mtv,b=m.flightNamespace,g=m.sharedPlaylist,A=(0,f.G)().isPlugin,w=(0,v.u)(h,b),C=w.setFavourite,S=w.canFavourite,V=(0,c.r)(null),F=V.hasTopicDirectories,P=V.isLoadingSettings,I=(0,u.T)(),j=I.hasPermissions,k=I.isLoaded,L=j(a.C.StudentExperience),O=r.a.useBasicFetch(i.L.config()),R=r.a.useBasicFetch(s.N.currentUser()),E=r.a.useBasicFetch((null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(R.data.customerId));return{hasCommonVideoPropsCompleted:!P&&k&&O.hasCompleted&&R.hasCompleted&&(!(null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)||E.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:S,setFavourite:C,imageCdnUrl:null===(p=O.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:E.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:L}}}},35014:(e,t,n)=>{n.d(t,{I:()=>u});var r=n(16714),a=n(12754),i=n(22902),o=n(15311),s=n(11387);function u(){var e=(0,i.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,u=(0,(0,o.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&t(r.C.ViewVideoInteractives),canViewClips:u&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:u}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),a=n(39902),i=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,a.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}},69630:(e,t,n)=>{n.r(t),n.d(t,{PlayView:()=>W});var r=n(32735),a=n(50242),i=n(81886),o=n(23481),s=n(20354),u=n(28400),c=n(65858),l=n(78417),d=n(16714),f=n(67058),v=n(61990),p=n(33803),m=n(89454),h=n(43012),y=n(20768),b=n(98064),g=n(31949),A=n(1575),w=n(63719),C=n(26304),S=n(91286),V=n(22902),F=n(79612),P=n(37802),I=n(76753),j=n(14070),k=n(97291),L=n(10094),O=n(58321),R=n(82817),E=n(7179),x=n(49948),T=n(36873),B=n(86698),M=n(35014),q=n(97816),G=n(33192),U=n(22490),N=n(91442),_=n(57695),D=o.T.encloseNamespace("shared.play"),Q={notFound:v.l,forbidden:{privacy:p.G}};function W(e){var t,n,o,v,p,W,H,$,Y,Z=e.queryParams,z=Z.context,J=Z.contextId,K=Z.playNext,X=Z.mtv,ee=(0,O.U)({locationContext:c.LZ.PlayPage,mtv:X}),te=ee.commonVideoProps,ne=ee.hasCommonVideoPropsCompleted,re=(0,V.T)().hasPermissions,ae=(0,B.y)().activePresentation,ie=(0,P.r)(null).hasPlayPageTranscript,oe=(0,M.I)(),se=s.a.useBasicFetch(b.D.streamableLearning()),ue=s.a.useBasicFetch(g.N.currentUser()),ce=s.a.useBasicFetch(A.R.video(e.id)),le=s.a.useBasicFetch(oe.canViewClips&&h.e.videoClips(e.id)),de=s.a.useBasicFetch(oe.canViewInteractives&&y.b.videoInteractives(e.id)),fe=s.a.useBasicFetch(ae&&m.O.audiencesByPresentationId(ae.id)),ve=ie&&!!(null===(n=null===(t=ce.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),pe=s.a.useBasicFetch(ve&&(null===(o=ue.data)||void 0===o?void 0:o.contentRegion)&&L.F.chaptersAndSubtitles(e.id,ue.data.contentRegion)),me=(null==pe?void 0:pe.data)||{},he=me.subtitles,ye=me.chapters,be=he&&he.length>0?he.map((function(e){return L.F.subtitleVtt(e.url,e)})):[],ge=s.a.useBasicFetchAll(be),Ae=(0,N.a)(),we=s.a.useBasicFetch(ce.statusCode===a.o.Forbidden&&A.R.video(e.id,l.r.StripMetadata)),Ce=(0,R.M)(e.id),Se=(0,T.k)({video:ce.data,context:z,contextId:J,moviesAndTv:X,currentUser:ue.data}),Ve=(0,x.l)(e.id,!0),Fe=s.a.useBasicFetch(A.R.regionAlternatives(e.id)),Pe=(0,w.h)({name:null===(v=ce.data)||void 0===v?void 0:v.name});return(0,F.M)(I.CG.getVideoMetadata({content:ce.data,regionAlternatives:Fe.data,phraseContext:{phraseHandler:D,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:U.W.getAppLink(ce.data)}),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getContentHrefLang(Fe.data,(function(e,t){return{application:k.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[e,u.m.slugify(t)]}}))})),(0,S.v)(ce,Q,{forbidden:!0}),(0,q.V)(null!==(p=Se.videos)&&void 0!==p?p:[]),(0,E.P)({id:e.id,app:"videos"}),(0,C.b)(we),r.useEffect((function(){var e;ce.data&&se.data&&(null===(e=ce.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===se.data.objectId})))&&i.Q.Ry.throw(new f.d)}),[ce.hasCompleted,se.hasCompleted]),ce.data&&ue.hasCompleted&&Ve.hasCompleted&&ne?r.createElement(_.j,{video:ce.data,clips:null===(W=le.data)||void 0===W?void 0:W.data,interactives:null===(H=de.data)||void 0===H?void 0:H.data,curriculums:Ce,relatedVideos:Se,currentUser:ue.data,pointsOfInterest:Ve.items,playNext:K,featureAccess:oe,audiences:fe.data,params:e.queryParams,canManageVideoAccess:re(d.C.ManageVideoAccess),shouldShowSideTableOfContents:Ae,tableOfContentsId:null===($=e.queryParams)||void 0===$?void 0:$.tocId,breadcrumbs:Pe,commonVideoProps:te,hasTheatreMode:ie,shouldShowTranscript:ve&&(null===(Y=ge.data)||void 0===Y?void 0:Y.length)>0,vttSubtitles:ge.data||[],subtitles:he||[],chapters:ye}):r.createElement(r.Fragment,null)}W.defaultProps={queryParams:{}}}}]);
2
+ //# sourceMappingURL=9630-cf529251e5-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9630-cf529251e5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/shared/flight-requests/TranscriptRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.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/PlayView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import 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 { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import 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 { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.Request {\n const queryStringObj = {\n query: 'subtitles,chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n key: `videos:${videoId}:subtitles:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle) {\n return {\n url: `{player}/srt-to-vtt?url=${url}`,\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\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 function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\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 { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, 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 videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nexport interface PlayViewProps {\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayPage, mtv });\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = usePresentation();\n const { hasPlayPageTranscript } = useSettings(null);\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n const shouldShowTranscript = hasPlayPageTranscript && !!video.data?._isClickViewCurated?.value;\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldShowTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.id, currentUser.data.contentRegion)\n );\n const { subtitles, chapters } = transcript?.data || {};\n\n const captionsRequests = (subtitles && subtitles.length > 0)\n ? subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle))\n : [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldShowTranscript && captions.data?.length > 0}\n vttSubtitles={captions.data || []}\n subtitles={subtitles || []}\n chapters={chapters}\n />\n );\n}\n"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","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","generateCacheKey","flightObjs","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","useBreadcrumbs","match","breadcrumbs","useBuilder","active","TranscriptRequests","chaptersAndSubtitles","videoId","contentRegion","queryStringObj","query","permissionFilterOption","url","formatData","subtitles","chapters","subtitleVtt","subtitleObj","vtt","useCommonVideoProps","options","locationContext","mtv","flightNamespace","sharedPlaylist","isPlugin","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasPermissions","hasLoadedPermissions","isLoaded","hasStudentExperience","config","currentUser","yearGroups","isAuthenticated","customerId","hasCommonVideoPropsCompleted","commonVideoProps","subTextType","getSubTextAppLink","video","series","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","useVideoFeatureAccess","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","useVideoMixin","objects","videoIds","filter","o","getValidObjects","v","ids","getPhrase","videoErrors","PlayView","props","queryParams","context","contextId","playNext","activePresentation","hasPlayPageTranscript","featureAccess","streamableLibrary","clips","interactives","audiences","shouldShowTranscript","_isClickViewCurated","value","transcript","captionsRequests","subtitle","captions","shouldShowSideTableOfContents","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","name","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","customAppLink","allowIndexing","hrefLang","application","action","args","videos","app","libraries","find","library","objectId","params","canManageVideoAccess","tableOfContentsId","tocId","hasTheatreMode","vttSubtitles","defaultProps"],"sourceRoot":""}