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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/1667-lite-95d4c3e1f6.chunk.css +1 -0
  3. package/dist/css/2541-lite-95d4c3e1f6.chunk.css +1 -0
  4. package/dist/css/{lite-app-90190cd96f.css → lite-app-eee6afa26e.css} +1 -1
  5. package/dist/scripts/{1185-1164d2e4ab-lite.chunk.js → 1185-6b9909a4af-lite.chunk.js} +3 -3
  6. package/dist/scripts/1185-6b9909a4af-lite.chunk.js.map +1 -0
  7. package/dist/scripts/{1667-da5c830db7-lite.chunk.js → 1667-b48e8963ce-lite.chunk.js} +1 -1
  8. package/dist/scripts/{1667-da5c830db7-lite.chunk.js.map → 1667-b48e8963ce-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{2541-e0d70273bd-lite.chunk.js → 2541-6eb2e67d69-lite.chunk.js} +1 -1
  10. package/dist/scripts/{2541-e0d70273bd-lite.chunk.js.map → 2541-6eb2e67d69-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/3022-b6fa0f0ed3-lite.chunk.js +2 -0
  12. package/dist/scripts/3022-b6fa0f0ed3-lite.chunk.js.map +1 -0
  13. package/dist/scripts/{3468-943f8a9859-lite.chunk.js → 3468-ecc5f20dd2-lite.chunk.js} +2 -2
  14. package/dist/scripts/3468-ecc5f20dd2-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{3677-9445118a8d-lite.chunk.js → 3677-f48c335f7a-lite.chunk.js} +2 -2
  16. package/dist/scripts/{3677-9445118a8d-lite.chunk.js.map → 3677-f48c335f7a-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/537-657f93fc8d-lite.chunk.js +3 -0
  18. package/dist/scripts/537-657f93fc8d-lite.chunk.js.map +1 -0
  19. package/dist/scripts/872-928631c37b-lite.chunk.js +2 -0
  20. package/dist/scripts/872-928631c37b-lite.chunk.js.map +1 -0
  21. package/dist/scripts/9668-c29f432441-lite.chunk.js +2 -0
  22. package/dist/scripts/9668-c29f432441-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{bundle-bffc2efc17.min.js → bundle-bef9d522aa.min.js} +3 -3
  24. package/dist/scripts/{bundle-bffc2efc17.min.js.map → bundle-bef9d522aa.min.js.map} +1 -1
  25. package/package.json +1 -1
  26. package/dist/css/1667-lite-a6f068803e.chunk.css +0 -1
  27. package/dist/css/2541-lite-a6f068803e.chunk.css +0 -1
  28. package/dist/scripts/1185-1164d2e4ab-lite.chunk.js.map +0 -1
  29. package/dist/scripts/3022-0e5eccfa16-lite.chunk.js +0 -2
  30. package/dist/scripts/3022-0e5eccfa16-lite.chunk.js.map +0 -1
  31. package/dist/scripts/3468-943f8a9859-lite.chunk.js.map +0 -1
  32. package/dist/scripts/537-09b1057590-lite.chunk.js +0 -3
  33. package/dist/scripts/537-09b1057590-lite.chunk.js.map +0 -1
  34. package/dist/scripts/872-e4b10eb46e-lite.chunk.js +0 -2
  35. package/dist/scripts/872-e4b10eb46e-lite.chunk.js.map +0 -1
  36. package/dist/scripts/9668-62bf39012b-lite.chunk.js +0 -2
  37. package/dist/scripts/9668-62bf39012b-lite.chunk.js.map +0 -1
  38. /package/dist/scripts/{1185-1164d2e4ab-lite.chunk.js.LICENSE.txt → 1185-6b9909a4af-lite.chunk.js.LICENSE.txt} +0 -0
  39. /package/dist/scripts/{537-09b1057590-lite.chunk.js.LICENSE.txt → 537-657f93fc8d-lite.chunk.js.LICENSE.txt} +0 -0
  40. /package/dist/scripts/{bundle-bffc2efc17.min.js.LICENSE.txt → bundle-bef9d522aa.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1667],{41021:(e,a,t)=>{t.r(a),t.d(a,{PlaySharedClipView:()=>g});var i=t(32735),d=t(20354),o=t(65858),s=t(16714),r=t(43012),c=t(20768),n=t(31949),l=t(1575),u=t(63719),v=t(26304),h=t(22902),p=t(15311),m=t(79612),I=t(37802),C=t(76753),P=t(58321),V=t(7179),b=t(49948),w=t(36873),y=t(44110),T=t(35014),_=t(97816),f=t(91442),k=t(80053);function g(e){var a,t,g,q,F,x,B,M,j=(0,p.r)().hasProduct,A=(0,P.U)({locationContext:o.LZ.VideoThumbnail}),U=A.commonVideoProps,O=A.hasCommonVideoPropsCompleted,S=(0,h.T)().hasPermissions,D=(0,I.r)(null),E=D.hasTopicDirectories,N=D.hasPlayPageTranscript,G=(0,f.a)(),L=(0,T.I)(),R=d.a.useBasicFetch(n.N.currentUser()),Z=d.a.useBasicFetch(r.e.sharedClip(e.objectId,e.shareId)),z=d.a.useBasicFetch(!!(null===(a=Z.data)||void 0===a?void 0:a._parentVideo)&&l.R.video(Z.data._parentVideo.id)),H=d.a.useBasicFetch(!!(null===(g=null===(t=Z.data)||void 0===t?void 0:t._parentVideo)||void 0===g?void 0:g.id)&&L.canViewClips&&r.e.videoClips(Z.data._parentVideo.id)),J=d.a.useBasicFetch(L.canViewInteractives&&c.b.videoInteractives(e.objectId)),K=(0,w.k)({video:z.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:R.data}),Q=(0,y.i)(),W=(0,b.l)(e.objectId);(0,m.M)(C.CG.getClipMetadata({content:Z.data})),(0,_.V)(null!==(q=K.videos)&&void 0!==q?q:[]),(0,v.b)(Z),(0,V.P)({id:e.objectId,app:"clips",shareId:e.shareId});var X=(0,u.h)({name:null===(F=Z.data)||void 0===F?void 0:F.name});return Z.data&&R.hasCompleted&&W.hasCompleted&&O?i.createElement(k.N,{shareId:e.shareId,clip:Z.data,clips:null===(x=H.data)||void 0===x?void 0:x.data,interactives:null===(B=J.data)||void 0===B?void 0:B.data,originalVideo:z.data,currentUser:R.data,relatedVideos:K,hasProduct:j,queryParams:e.queryParams,audiences:Q.data,canManageVideoAccess:S(s.C.ManageVideoAccess),pointsOfInterest:null==W?void 0:W.items,featureAccess:L,tableOfContentsId:null===(M=e.queryParams)||void 0===M?void 0:M.tocId,shouldShowSideTableOfContents:G,breadcrumbs:X,commonVideoProps:U,hasTopicDirectories:E,hasTheatreMode:N}):i.createElement(i.Fragment,null)}}}]);
2
- //# sourceMappingURL=1667-da5c830db7-lite.chunk.js.map
2
+ //# sourceMappingURL=1667-b48e8963ce-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1667-da5c830db7-lite.chunk.js","mappings":"saAgCM,SAAUA,EAAmBC,G,oBACzBC,GAAe,SAAfA,WAER,GAGI,OAAoB,CAAEC,gBAAiB,sBAFzCC,EAAgB,EAAhBA,iBACAC,EAA4B,EAA5BA,6BAEMC,GAAmB,SAAnBA,eACR,GAAuD,OAAY,MAA3DC,EAAmB,EAAnBA,oBAAqBC,EAAqB,EAArBA,sBAEvBC,GAAgC,SAEhCC,GAAgB,SAEhBC,EAAc,kBAAkC,mBAChDC,EAAO,kBAA2B,eAAwBX,EAAMY,SAAUZ,EAAMa,UAChFC,EAAQ,qBAAuC,QAAT,EAAAH,EAAKI,YAAI,eAAEC,eACrD,UAAoBL,EAAKI,KAAKC,aAAaC,KACvCC,EAAa,qBACQ,QAAvB,EAAS,QAAT,EAAAP,EAAKI,YAAI,eAAEC,oBAAY,eAAEC,KAAMR,EAAcU,cAAgB,eAAwBR,EAAKI,KAAKC,aAAaC,KAE1GG,EAAe,kBACnBX,EAAcY,qBAAuB,sBAAsCrB,EAAMY,WAG7EU,GAAgB,OAAoB,CACxCR,MAAOA,EAAMC,KACbQ,QAASvB,EAAMwB,YAAYD,QAC3BE,UAAWzB,EAAMwB,YAAYC,UAC7BC,YAAa1B,EAAMwB,YAAYG,IAC/BjB,YAAaA,EAAYK,OAErBa,GAAY,SACZC,GAAmB,OAAyB7B,EAAMY,WAExD,OAAmB,qBAAmC,CAAEkB,QAASnB,EAAKI,SAEtE,OAAkC,QAApB,EAAAO,EAAcS,cAAM,QAAI,KACtC,OAAsBpB,IACtB,OAAa,CAAEM,GAAIjB,EAAMY,SAAUoB,IAAK,QAASnB,QAASb,EAAMa,UAEhE,IAAMoB,GAAc,OAAe,CAAEC,KAAe,QAAT,EAAAvB,EAAKI,YAAI,eAAEmB,OAStD,OANEvB,EAAKI,MACLL,EAAYyB,cACZN,EAAiBM,cACjB/B,EAOA,gBAAC,IAAQ,CACPS,QAASb,EAAMa,QACfF,KAAMA,EAAKI,KACXqB,MAAsB,QAAf,EAAAlB,EAAWH,YAAI,eAAEA,KACxBK,aAA+B,QAAjB,EAAAA,EAAaL,YAAI,eAAEA,KACjCsB,cAAevB,EAAMC,KACrBL,YAAaA,EAAYK,KACzBO,cAAeA,EACfrB,WAAYA,EACZuB,YAAaxB,EAAMwB,YACnBI,UAAWA,EAAUb,KACrBuB,qBAAsBjC,EAAe,uBACrCwB,iBAAkBA,aAAgB,EAAhBA,EAAkBU,MACpC9B,cAAeA,EACf+B,kBAAoC,QAAjB,EAAAxC,EAAMwB,mBAAW,eAAEiB,MACtCjC,8BAA+BA,EAC/ByB,YAAaA,EACb9B,iBAAkBA,EAClBG,oBAAqBA,EACrBoC,eAAgBnC,IAtBX,gCAyBX,C","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-clip/PlaySharedClipView.tsx"],"sourcesContent":["import 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 { 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 { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, ClipCollection, CurrentUser, InteractiveCollection, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { PlayClip } from 'shared/views/play-clip/components/play-clip/PlayClip';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedClipView(props: ShareLinkViewProps): React.ReactElement {\n const { hasProduct } = useProducts();\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.sharedClip(props.objectId, props.shareId));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo?.id && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\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 audiences = usePresentationAudiences();\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({ content: clip.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(clip);\n useDeepLinks({ id: props.objectId, app: 'clips', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n shareId={props.shareId}\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n relatedVideos={relatedVideos}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest?.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTopicDirectories={hasTopicDirectories}\n hasTheatreMode={hasPlayPageTranscript}\n />\n );\n}"],"names":["PlaySharedClipView","props","hasProduct","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","hasTopicDirectories","hasPlayPageTranscript","shouldShowSideTableOfContents","featureAccess","currentUser","clip","objectId","shareId","video","data","_parentVideo","id","childClips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","audiences","pointsOfInterest","content","videos","app","breadcrumbs","name","hasCompleted","clips","originalVideo","canManageVideoAccess","items","tableOfContentsId","tocId","hasTheatreMode"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1667-b48e8963ce-lite.chunk.js","mappings":"saAgCM,SAAUA,EAAmBC,G,oBACzBC,GAAe,SAAfA,WAER,GAGI,OAAoB,CAAEC,gBAAiB,sBAFzCC,EAAgB,EAAhBA,iBACAC,EAA4B,EAA5BA,6BAEMC,GAAmB,SAAnBA,eACR,GAAuD,OAAY,MAA3DC,EAAmB,EAAnBA,oBAAqBC,EAAqB,EAArBA,sBAEvBC,GAAgC,SAEhCC,GAAgB,SAEhBC,EAAc,kBAAkC,mBAChDC,EAAO,kBAA2B,eAAwBX,EAAMY,SAAUZ,EAAMa,UAChFC,EAAQ,qBAAuC,QAAT,EAAAH,EAAKI,YAAI,eAAEC,eACrD,UAAoBL,EAAKI,KAAKC,aAAaC,KACvCC,EAAa,qBACQ,QAAvB,EAAS,QAAT,EAAAP,EAAKI,YAAI,eAAEC,oBAAY,eAAEC,KAAMR,EAAcU,cAAgB,eAAwBR,EAAKI,KAAKC,aAAaC,KAE1GG,EAAe,kBACnBX,EAAcY,qBAAuB,sBAAsCrB,EAAMY,WAG7EU,GAAgB,OAAoB,CACxCR,MAAOA,EAAMC,KACbQ,QAASvB,EAAMwB,YAAYD,QAC3BE,UAAWzB,EAAMwB,YAAYC,UAC7BC,YAAa1B,EAAMwB,YAAYG,IAC/BjB,YAAaA,EAAYK,OAErBa,GAAY,SACZC,GAAmB,OAAyB7B,EAAMY,WAExD,OAAmB,qBAAmC,CAAEkB,QAASnB,EAAKI,SAEtE,OAAkC,QAApB,EAAAO,EAAcS,cAAM,QAAI,KACtC,OAAsBpB,IACtB,OAAa,CAAEM,GAAIjB,EAAMY,SAAUoB,IAAK,QAASnB,QAASb,EAAMa,UAEhE,IAAMoB,GAAc,OAAe,CAAEC,KAAe,QAAT,EAAAvB,EAAKI,YAAI,eAAEmB,OAStD,OANEvB,EAAKI,MACLL,EAAYyB,cACZN,EAAiBM,cACjB/B,EAOA,gBAAC,IAAQ,CACPS,QAASb,EAAMa,QACfF,KAAMA,EAAKI,KACXqB,MAAsB,QAAf,EAAAlB,EAAWH,YAAI,eAAEA,KACxBK,aAA+B,QAAjB,EAAAA,EAAaL,YAAI,eAAEA,KACjCsB,cAAevB,EAAMC,KACrBL,YAAaA,EAAYK,KACzBO,cAAeA,EACfrB,WAAYA,EACZuB,YAAaxB,EAAMwB,YACnBI,UAAWA,EAAUb,KACrBuB,qBAAsBjC,EAAe,uBACrCwB,iBAAkBA,aAAgB,EAAhBA,EAAkBU,MACpC9B,cAAeA,EACf+B,kBAAoC,QAAjB,EAAAxC,EAAMwB,mBAAW,eAAEiB,MACtCjC,8BAA+BA,EAC/ByB,YAAaA,EACb9B,iBAAkBA,EAClBG,oBAAqBA,EACrBoC,eAAgBnC,IAtBX,gCAyBX,C","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-clip/PlaySharedClipView.tsx"],"sourcesContent":["import 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 { 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 { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, ClipCollection, CurrentUser, InteractiveCollection, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { PlayClip } from 'shared/views/play-clip/components/play-clip/PlayClip';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedClipView(props: ShareLinkViewProps): React.ReactElement {\n const { hasProduct } = useProducts();\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.sharedClip(props.objectId, props.shareId));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo?.id && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\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 audiences = usePresentationAudiences();\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({ content: clip.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(clip);\n useDeepLinks({ id: props.objectId, app: 'clips', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n shareId={props.shareId}\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n relatedVideos={relatedVideos}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest?.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTopicDirectories={hasTopicDirectories}\n hasTheatreMode={hasPlayPageTranscript}\n />\n );\n}"],"names":["PlaySharedClipView","props","hasProduct","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","hasTopicDirectories","hasPlayPageTranscript","shouldShowSideTableOfContents","featureAccess","currentUser","clip","objectId","shareId","video","data","_parentVideo","id","childClips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","audiences","pointsOfInterest","content","videos","app","breadcrumbs","name","hasCompleted","clips","originalVideo","canManageVideoAccess","items","tableOfContentsId","tocId","hasTheatreMode"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2541],{94644:(e,a,t)=>{t.d(a,{r:()=>l});var i=t(50242),r=t(81886),o=t(67058),d=t(14553),n=t(49267),s=t(49075),c={notFound:o.d,forbidden:{rating:d.q,yearLevel:d.q,region:n.a,privacy:d.q},badRequest:s._,internalServerError:s._};function l(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var d=Object.assign(Object.assign({},c),a);o&&r.Q.Ry.isStatusCodeError(o)&&(o!==i.o.InternalServer?o!==i.o.NotFound?o!==i.o.Forbidden?t.badRequest||r.Q.Ry.throw(new d.badRequest):t.forbidden||r.Q.Ry.throw(new d.forbidden.privacy):t.notFound||r.Q.Ry.throw(new d.notFound):t.internalServerError||r.Q.Ry.throw(new s._))}}},91286:(e,a,t)=>{t.d(a,{v:()=>d});var i=t(32735),r=t(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function d(e,a,t){var d=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){d.forEach((function(e){(0,r.r)(e.statusCode,a,t)}))}),[o(d),a,t])}},27478:(e,a,t)=>{t.r(a),t.d(a,{PlayClipView:()=>A});var i=t(32735),r=t(50242),o=t(23481),d=t(20354),n=t(65858),s=t(78417),c=t(16714),l=t(67058),u=t(33803),v=t(43012),p=t(20768),h=t(31949),m=t(1575),f=t(63719),b=t(26304),y=t(91286),C=t(22902),P=t(15311),g=t(79612),w=t(37802),F=t(76753),V=t(58321),q=t(7179),_=t(49948),R=t(36873),T=t(44110),I=t(35014),k=t(97816),E=t(91442),O=t(80053),S=o.T.encloseNamespace("shared.playClip"),x={notFound:l.d,forbidden:{privacy:u.G}};function A(e){var a,t,o,l,u,A,B,M=e.queryParams,j=M.context,Q=M.contextId,N=M.mtv,U=(0,P.r)().hasProduct,D=(0,V.U)({locationContext:n.LZ.PlayClip,mtv:N}),G=D.commonVideoProps,L=D.hasCommonVideoPropsCompleted,H=(0,C.T)().hasPermissions,Z=(0,w.r)(null),z=Z.hasTopicDirectories,J=Z.hasPlayPageTranscript,K=d.a.useBasicFetch(h.N.currentUser()),W=d.a.useBasicFetch(v.e.clip(e.id)),X=d.a.useBasicFetch(p.b.videoInteractives(e.id)),Y=d.a.useBasicFetch(!!(null===(a=W.data)||void 0===a?void 0:a._parentVideo)&&m.R.video(W.data._parentVideo.id));(0,k.V)([Y.data]);var $=d.a.useBasicFetch(!!(null===(t=W.data)||void 0===t?void 0:t._parentVideo)&&v.e.videoClips(W.data._parentVideo.id)),ee=d.a.useBasicFetch(W.statusCode===r.o.Forbidden&&v.e.clip(e.id,s.r.StripMetadata)),ae=(0,R.k)({video:Y.data,context:j,contextId:Q,moviesAndTv:N,currentUser:K.data}),te=(0,T.i)(),ie=(0,E.a)(),re=(0,_.l)(e.id,!0),oe=(0,I.I)(),de=(0,f.h)({name:null===(o=W.data)||void 0===o?void 0:o.name});return(0,g.M)(F.CG.getClipMetadata({content:W.data,phraseContext:{phraseHandler:S,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"}})),(0,y.v)(W,x,{forbidden:!0}),(0,k.V)(null!==(l=ae.videos)&&void 0!==l?l:[]),(0,b.b)(ee),(0,q.P)({id:e.id,app:"clips"}),W.data&&K.hasCompleted&&re.hasCompleted&&L?i.createElement(O.N,{clip:W.data,clips:null===(u=$.data)||void 0===u?void 0:u.data,interactives:null===(A=X.data)||void 0===A?void 0:A.data,originalVideo:Y.data,currentUser:K.data,relatedVideos:"playlist"===j?ae:Object.assign(Object.assign({},ae),{videos:[]}),hasProduct:U,queryParams:e.queryParams,audiences:te.data,canManageVideoAccess:H(c.C.ManageVideoAccess),pointsOfInterest:re.items,featureAccess:oe,tableOfContentsId:null===(B=e.queryParams)||void 0===B?void 0:B.tocId,shouldShowSideTableOfContents:ie,breadcrumbs:de,commonVideoProps:G,hasTopicDirectories:z,hasTheatreMode:J}):i.createElement(i.Fragment,null)}A.defaultProps={queryParams:{}}}}]);
2
- //# sourceMappingURL=2541-e0d70273bd-lite.chunk.js.map
2
+ //# sourceMappingURL=2541-6eb2e67d69-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/2541-e0d70273bd-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/PlayClipView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n 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 { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { 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 { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, ClipCollection, CurrentUser, InteractiveCollection, Video } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nimport { PlayClip } from './components/play-clip/PlayClip';\n\nexport interface PlayViewProps {\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst clipErrors = {\n notFound: NotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayClipView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayClipView(props: PlayViewProps): JSX.Element {\n const { context, contextId, mtv } = props.queryParams;\n\n const { hasProduct } = useProducts();\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayClip, mtv });\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.id));\n\n const interactives = Flight.useBasicFetch<InteractiveCollection>(InteractiveRequests.videoInteractives(props.id));\n const video = Flight.useBasicFetch<Video>(\n !!clip.data?._parentVideo && VideoRequests.video(clip.data._parentVideo.id)\n );\n useVideoMixin([video.data]);\n\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n\n const strippedClip = Flight.useBasicFetch<Clip>(clip.statusCode === HttpStatus.Forbidden &&\n ClipRequests.clip(props.id, PermissionFilterOption.StripMetadata));\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n \n const featureAccess = useVideoFeatureAccess();\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({\n content: clip.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n }\n }));\n\n useHandleObjectError(clip, clipErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(strippedClip);\n useDeepLinks({ id: props.id, app: 'clips' });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n // we only show up next videos for clips in a playlist\n relatedVideos={context === 'playlist' ? relatedVideos : { ...relatedVideos, videos: []}}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTopicDirectories={hasTopicDirectories}\n hasTheatreMode={hasPlayPageTranscript}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","clipErrors","PlayClipView","props","queryParams","context","contextId","mtv","hasProduct","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","hasTopicDirectories","hasPlayPageTranscript","currentUser","clip","id","interactives","video","data","_parentVideo","childClips","strippedClip","relatedVideos","moviesAndTv","audiences","shouldShowSideTableOfContents","pointsOfInterest","featureAccess","breadcrumbs","name","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","videos","app","hasCompleted","clips","originalVideo","canManageVideoAccess","items","tableOfContentsId","tocId","hasTheatreMode","defaultProps"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/2541-6eb2e67d69-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/PlayClipView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n 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 { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { 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 { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, ClipCollection, CurrentUser, InteractiveCollection, Video } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nimport { PlayClip } from './components/play-clip/PlayClip';\n\nexport interface PlayViewProps {\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst clipErrors = {\n notFound: NotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayClipView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayClipView(props: PlayViewProps): JSX.Element {\n const { context, contextId, mtv } = props.queryParams;\n\n const { hasProduct } = useProducts();\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayClip, mtv });\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.id));\n\n const interactives = Flight.useBasicFetch<InteractiveCollection>(InteractiveRequests.videoInteractives(props.id));\n const video = Flight.useBasicFetch<Video>(\n !!clip.data?._parentVideo && VideoRequests.video(clip.data._parentVideo.id)\n );\n useVideoMixin([video.data]);\n\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n\n const strippedClip = Flight.useBasicFetch<Clip>(clip.statusCode === HttpStatus.Forbidden &&\n ClipRequests.clip(props.id, PermissionFilterOption.StripMetadata));\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n \n const featureAccess = useVideoFeatureAccess();\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({\n content: clip.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n }\n }));\n\n useHandleObjectError(clip, clipErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(strippedClip);\n useDeepLinks({ id: props.id, app: 'clips' });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n // we only show up next videos for clips in a playlist\n relatedVideos={context === 'playlist' ? relatedVideos : { ...relatedVideos, videos: []}}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTopicDirectories={hasTopicDirectories}\n hasTheatreMode={hasPlayPageTranscript}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","clipErrors","PlayClipView","props","queryParams","context","contextId","mtv","hasProduct","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","hasTopicDirectories","hasPlayPageTranscript","currentUser","clip","id","interactives","video","data","_parentVideo","childClips","strippedClip","relatedVideos","moviesAndTv","audiences","shouldShowSideTableOfContents","pointsOfInterest","featureAccess","breadcrumbs","name","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","videos","app","hasCompleted","clips","originalVideo","canManageVideoAccess","items","tableOfContentsId","tocId","hasTheatreMode","defaultProps"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3022],{94644:(e,r,t)=>{t.d(r,{r:()=>u});var n=t(50242),i=t(81886),o=t(67058),a=t(14553),c=t(49267),s=t(49075),l={notFound:o.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:s._,internalServerError:s._};function u(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},l),r);o&&i.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?t.badRequest||i.Q.Ry.throw(new a.badRequest):t.forbidden||i.Q.Ry.throw(new a.forbidden.privacy):t.notFound||i.Q.Ry.throw(new a.notFound):t.internalServerError||i.Q.Ry.throw(new s._))}}},60115:(e,r,t)=>{t.d(r,{K:()=>l});var n=t(32735),i=t(50242),o=t(91967),a=400,c=t(45719);function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function l(e,r,t,l,u,d){var p,m,v,g,f=(p=(0,n.useState)(0),m=2,function(e){if(Array.isArray(e))return e}(p)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,i,o,a,c=[],s=!0,l=!1;try{if(o=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;s=!1}else for(;!(s=(n=o.call(t)).done)&&(c.push(n.value),c.length!==r);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(l)throw i}}return c}}(p,m)||function(e,r){if(e){if("string"==typeof e)return s(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?s(e,r):void 0}}(p,m)||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.")}()),y=f[0],h=f[1],C=r,b=(0,c.P)((function(r){if(!e)return null;var t=e(r);return t?t.key:null}),l,u);return v={fetchNextPage:function(){if(r&&e&&b)return h((function(e){return e+1})),C(b.nextCursor)},hasMore:!!(null==b?void 0:b.nextCursor),isFetching:null==b?void 0:b.isFetching,scrollContainer:d},g=function(){if(!v.isFetching){if(v.scrollContainer){var e=v.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-a)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-a)return;v.fetchNextPage()}},(0,n.useEffect)((function(){var e=o.q.throttle(g,200),r=v.scrollContainer||window;return v.hasMore&&r.addEventListener("scroll",e),function(){return r.removeEventListener("scroll",e)}}),[v.hasMore,v.fetchNextPage,v.scrollContainer]),(0,n.useEffect)((function(){b&&b.shouldInitialFetch&&r&&(C(),h((function(e){return e+1})))}),[null==b?void 0:b.shouldInitialFetch,r]),(0,n.useEffect)((function(){var e,r;if((null==b?void 0:b.statusCode)&&o.q.isFunction(t)){var n=+(null===(r=null===(e=b.statusCode)||void 0===e?void 0:e.toString())||void 0===r?void 0:r.substr(0,1));n!==i.k.ClientError&&n!==i.k.ServerError||t(y,b.statusCode)}}),[null==b?void 0:b.statusCode]),{items:null==b?void 0:b.items,hasMore:!!(null==b?void 0:b.nextCursor),nextCursor:null==b?void 0:b.nextCursor,isFetching:null==b?void 0:b.isFetching,totalItems:null==b?void 0:b.totalItems,hasFirstPageCompleted:null==b?void 0:b.hasFirstPageCompleted}}},78267:(e,r,t)=>{t.d(r,{H:()=>a});var n=t(99940),i=t(97395),o=t(45157),a={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,r){var t="(resources[thumbnail,pdf]|links)";return{url:i._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:t,cursor:r}),publicUrl:i._.urlBuilder("/api/objects/".concat(e,"/members"),{query:t,cursor:r}),key:"videos:".concat(e,":resources:links").concat(r)}},addResource:function(e,r,t,i,a){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(r.fileId||o.Y.getRandomInt()),data:r,type:n.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:t,error:i,always:a}},updateResource:function(e,r,t,i,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:r,type:n.k.PUT,success:t,error:i,always:o}},deleteResource:function(e,r,t,i,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:n.k.DELETE,invalidationKeys:["videos:".concat(r,":resources"),"videos:".concat(r)],success:t,error:i,always:o}}}},35014:(e,r,t)=>{t.d(r,{I:()=>s});var n=t(16714),i=t(12754),o=t(22902),a=t(15311),c=t(11387);function s(){var e=(0,o.T)(),r=e.hasPermissions,t=e.hasLocalPermissions,s=(0,(0,a.r)().hasProduct)(i.x.Primary);return{canViewGlance:r(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&r(n.C.ViewVideoInteractives),canViewClips:s&&r(n.C.ViewVideoClips),canViewCurriculumLinks:r(n.C.ViewCurriculums),canUseActions:t(n.E.UseVideoActions),canViewPublicLayout:!t(n.E.WatchVideos)&&c.C.hasRegionPrefix(),canViewResourceItems:t(n.E.ViewVideoResourceItems),canNavigate:s}}},43022:(e,r,t)=>{t.r(r),t.d(r,{VideoGuidanceResourcesView:()=>M});var n=t(32735),i=t(81886),o=t(23481),a=t(20354),c=t(28400),s=t(49985),l=t(65858),u=t(42648),d=t(87801),p=t(9111),m=t(13876),v=t(15611),g=t(62335),f=t(54610),y=t(4594),h=t(45778),C=t(54297),b=t(25352);function k(e){var r=(0,b.ZS)(e.resource,e.actionBehaviour);function t(){s.k.logUserAction(e.analyticsData,e.analyticsOptions)}return h.G.isType(e.resource,y.E.Link)?n.createElement("a",{href:e.resource.url,target:"_blank",onClick:t},e.children):r?"public"===e.actionBehaviour?n.createElement("div",{className:"cursor-pointer d-inline",onClick:function(){t(),i.Q.C$.trigger(e.appLink)}},e.children):n.createElement(v.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},e.children):n.createElement("div",null,e.children)}function E(e){var r,t,i={id:e.resource.id,name:e.resource.name,parentVideoId:e.parentVideo.id,parentVideoName:e.parentVideo.name,parentVideoType:e.parentVideo.type},o=Object.assign(Object.assign({},e.analyticsOptions),{actionType:l.Vw.Click,entity:h.G.isResource(e.resource)?l.py.Resource:l.py.Link});return n.createElement("div",{className:"row gx-0"},n.createElement("div",{className:"col-4"},n.createElement(k,{resource:e.resource,appLink:e.appLink,analyticsData:i,analyticsOptions:Object.assign(Object.assign({},o),{descriptor:l._S.Thumbnail}),actionBehaviour:e.actionBehaviour},n.createElement(b.$G,{data:e.resource,titlePosition:"none",imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage,hideTypeBadge:!0,dynamicRatioImageOptions:{width:400,resizeType:f.Nq.Cover},theme:{thumbnailContainerClass:"w-100",containerClass:"px-3"}}))),n.createElement("div",{className:"col-8 ps-2"},n.createElement(k,{resource:e.resource,appLink:e.appLink,analyticsData:i,analyticsOptions:Object.assign(Object.assign({},o),{descriptor:l._S.Title}),actionBehaviour:e.actionBehaviour},h.G.isType(e.resource,y.E.Resource)&&!!(null===(t=null===(r=e.resource)||void 0===r?void 0:r.metadata)||void 0===t?void 0:t.resourceType)&&n.createElement(g.m,null,C.C.getResourceTypeName(e.resource.metadata.resourceType)),n.createElement("h3",{className:"h6 clamp-2"},e.resource.name))))}function w(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return V(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?V(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var I="shared.videoGuidanceResourcesPopup",R=350;function L(e){var r,t,i,a,c=[].concat(w((null===(t=null===(r=e.video)||void 0===r?void 0:r.resources)||void 0===t?void 0:t.data)||[]),w((null===(a=null===(i=e.video)||void 0===i?void 0:i.links)||void 0===a?void 0:a.data)||[])),s=e.isLoading?[]:e.resources||c;return n.createElement(p.G,{closePopup:e.onClickClose,showLoadingSpinner:e.isLoading,title:e.isLoading?"":o.T.getPhrase(I,"resources"),size:"lg"},!e.isLoading&&n.createElement(n.Fragment,null,n.createElement(u.ZP,{autoHeightMax:R,autoHeightMin:R,autoHeight:!0},n.createElement("ul",{className:"list-unstyled"},s.map((function(r){var t;return n.createElement("li",{key:r.id,className:"mb-3"},n.createElement(E,{resource:r,parentVideo:e.video,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceImageErrorFallbackUrl,preloadImage:!0,appLink:null===(t=e.getResourceAppLink)||void 0===t?void 0:t.call(e,r.id),actionBehaviour:e.actionBehaviour,analyticsOptions:{location:l.LZ.ResourcesGuidancePopup}}))}))),(e.hasMore||e.isFetching)&&n.createElement(d._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})),n.createElement(m.u,null,n.createElement(m.u.Cancel,{onClick:e.onClickClose,text:o.T.getPhrase(I,"close")}),n.createElement(m.u.Submit,{text:o.T.getPhrase(I,"viewVideo"),variant:"dark",onClick:e.onClickViewVideo}))))}var P=t(94644),F=t(43012),S=t(39151),O=t(1575),T=t(69883),A=t(60115),U=t(31908),x=t(99742),j=t(14070),N=t(97291),_=t(78267),B=t(35014),G="shared.videoGuidanceResources";function M(e){var r,t=a.a.useBasicFetch(e.type===y.E.Video?O.R.video(e.id):F.e.clip(e.id)),u=a.a.useBasicFetch(S.L.config()),d=(0,B.I)(),p=a.a.useGetFetch(),m=(0,T.Z)();function v(r){return _.H.videoResourcesAndLinks(e.id,r)}function g(e){return p(v(e))}var f=(0,A.K)(v,g,(function(e,r){if(1===e)return(0,P.r)(r);m.error(o.T.getPhrase(G,"error"))})),h=f.items,C=f.hasMore,b=f.isFetching,k=f.nextCursor;return n.createElement(L,{isLoading:!t.hasCompleted||!u.hasCompleted,video:t.data,resources:h,hasMore:C,isFetching:b,nextCursor:k,fetchNext:g,imageCdnUrl:null===(r=u.data)||void 0===r?void 0:r.imageCdnUrl,resourceImageErrorFallbackUrl:x.W.Fallbacks.RESOURCE_THUMBNAIL,getResourceAppLink:function(e){return d.canViewResourceItems?{application:N.O.VIDEOS,action:j.e.Videos.PREVIEW_PDF,args:[e],params:{videoId:t.data.id,showBackButton:!0}}:{application:N.O.SIGN_UP,action:j.e.SignUp.SIGN_UP}},actionBehaviour:d.canViewResourceItems?"normal":"public",onClickClose:function(){s.k.logUserAction({id:t.data.id,name:t.data.name},{entity:U.M.isVideo(t.data)?l.py.Video:l.py.Clip,location:l.LZ.CurriculumGuidancePopup,actionType:l.Vw.Click,descriptor:l.od.Close}),e.closePopup()},onClickViewVideo:function(){if(s.k.logUserAction({id:t.data.id,name:t.data.name},{entity:U.M.isVideo(t.data)?l.py.Video:l.py.Clip,location:l.LZ.CurriculumGuidancePopup,actionType:l.Vw.Click,descriptor:l.od.ViewVideo}),U.M.isVideo(t.data))return i.Q.C$.trigger({application:N.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[t.data.id,c.m.slugify(t.data.name)]}),void e.closePopup();i.Q.C$.trigger({application:N.O.CLIPS,action:j.e.Clips.PLAY_CLIP,args:[t.data.id,c.m.slugify(t.data.name)]}),e.closePopup()}})}}}]);
2
+ //# sourceMappingURL=3022-b6fa0f0ed3-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3022-b6fa0f0ed3-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/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/libs/shared/src/components/resource-list-item/ResourceListItem.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup.tsx","file:///app/packages/projects/lite/src/shared/views/video-guidance-resources/VideoGuidanceResourcesView.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 { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.PublicRequest {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\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 React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport { ResourceTileV2, useCanPreviewResource } from '../play-page/resources-widget/ResourceWidgetItemV2';\n\ninterface ResourceWrapperProps{\n resource: Resource | Link;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n actionBehaviour: 'normal' | 'public';\n}\n\nfunction ResourceWrapper(props: React.PropsWithChildren<ResourceWrapperProps>): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.resource, props.actionBehaviour);\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\n }\n\n // Handle resource links\n if (MasterTypeHelper.isType<Link>(props.resource, MasterType.Link)) {\n return (\n <a href={props.resource.url} target='_blank' onClick={logAction}>\n {props.children}\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a div over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div\n className={`cursor-pointer d-inline`}\n onClick={() => {\n logAction();\n Core.AppLinkHelper.trigger(props.appLink);\n }}\n >\n {props.children}\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div>\n {props.children}\n </div>\n );\n}\n\ninterface ResourceListItemProps {\n resource: Resource | Link;\n parentVideo: Clip | Video;\n imageCdnUrl: string;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n appLink: Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourceListItem(props: ResourceListItemProps): JSX.Element {\n const analyticsData = {\n id: props.resource.id,\n name: props.resource.name,\n parentVideoId: props.parentVideo.id,\n parentVideoName: props.parentVideo.name,\n parentVideoType: props.parentVideo.type\n };\n \n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: MasterTypeHelper.isResource(props.resource) ? EntityType.Resource : EntityType.Link\n };\n\n return (\n <div className='row gx-0'>\n <div className='col-4'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n actionBehaviour={props.actionBehaviour}\n >\n <ResourceTileV2\n data={props.resource}\n titlePosition='none'\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n hideTypeBadge\n dynamicRatioImageOptions={{\n width: 400,\n resizeType: ResizeType.Cover\n }}\n theme={{\n thumbnailContainerClass: 'w-100',\n containerClass: 'px-3'\n }}\n />\n </ResourceWrapper>\n </div>\n <div className='col-8 ps-2'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n actionBehaviour={props.actionBehaviour}\n >\n {(\n MasterTypeHelper.isType<Resource>(props.resource, MasterType.Resource) &&\n !!props.resource?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.resource.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className='h6 clamp-2'>\n {props.resource.name}\n </h3>\n </ResourceWrapper>\n </div>\n </div>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ResourceListItem } from 'libs/shared/components/resource-list-item/ResourceListItem';\nimport { Link, Resource, Video } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoGuidanceResourcesPopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceResourcesPopupProps {\n isLoading: boolean;\n video: Video;\n resources?: (Link | Resource)[];\n hasMore: boolean;\n isFetching: boolean;\n fetchNext: (cursor?: string) => void;\n nextCursor?: string;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n imageCdnUrl: string;\n resourceImageErrorFallbackUrl: string;\n getResourceAppLink?: (id: string) => Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n}\n\nexport function VideoGuidanceResourcesPopup(props: VideoGuidanceResourcesPopupProps): JSX.Element {\n const videoResources = [ ...(props.video?.resources?.data || []), ...(props.video?.links?.data || []) ];\n const resources = props.isLoading\n ? []\n : props.resources || videoResources;\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={props.isLoading\n ? ''\n : LanguageService.getPhrase(namespace, 'resources')\n }\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars autoHeightMax={MIN_MAX_HEIGHT} autoHeightMin={MIN_MAX_HEIGHT} autoHeight>\n <ul className='list-unstyled'>\n {resources.map(resource => {\n return (\n <li key={resource.id} className='mb-3'>\n <ResourceListItem\n resource={resource}\n parentVideo={props.video}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.resourceImageErrorFallbackUrl}\n preloadImage\n appLink={props.getResourceAppLink?.(resource.id)}\n actionBehaviour={props.actionBehaviour}\n analyticsOptions={{\n location: LocationContext.ResourcesGuidancePopup\n }}\n />\n </li>\n );\n })}\n </ul>\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}","import 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/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceResourcesPopup } from 'libs/shared/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { Clip, Config, Link, PopupViewProps, Resource, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nconst namespace = 'shared.videoGuidanceResources';\n\ninterface VideoGuidanceResourcesViewProps extends PopupViewProps {\n id: string;\n type: MasterType;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceResourcesView(props: VideoGuidanceResourcesViewProps): JSX.Element {\n function getRequest(): Flight.Request {\n return props.type === MasterType.Video\n ? VideoRequests.video(props.id)\n : ClipRequests.clip(props.id);\n }\n\n const video = Flight.useBasicFetch<Clip | Video>(getRequest());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const featureAccess = useVideoFeatureAccess();\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n function getResourcesRequest(cursor?: string) {\n return ResourceRequests.videoResourcesAndLinks(props.id, cursor);\n }\n\n function fetchNext(cursor?: string) {\n return fetch(getResourcesRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const { items, hasMore, isFetching, nextCursor } = useInfiniteList<Resource|Link>(\n getResourcesRequest,\n fetchNext,\n onError\n );\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n if (VideoHelper.isVideo(video.data)) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceResourcesPopup\n isLoading={!video.hasCompleted || !config.hasCompleted}\n video={video.data}\n resources={items}\n hasMore={hasMore}\n isFetching={isFetching}\n nextCursor={nextCursor}\n fetchNext={fetchNext}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceImageErrorFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getResourceAppLink={id => {\n if (!featureAccess.canViewResourceItems) {\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: [id],\n params: { videoId: video.data.id, showBackButton: true }\n };\n }}\n actionBehaviour={featureAccess.canViewResourceItems ? 'normal' : 'public'}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","key","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","ResourceRequests","resource","id","url","videoResources","videoId","videoResourcesAndLinks","query","publicUrl","addResource","success","error","always","fileId","data","type","invalidationKeys","updateResource","deleteResource","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","ResourceWrapper","props","canPreview","actionBehaviour","logAction","AnalyticsHelper","analyticsData","analyticsOptions","MasterTypeHelper","MasterType","href","target","onClick","children","className","appLink","AppLink","ResourceListItem","name","parentVideoId","parentVideo","parentVideoName","parentVideoType","actionType","entity","descriptor","titlePosition","imageCdnUrl","imageErrorFallbackUrl","preloadImage","hideTypeBadge","dynamicRatioImageOptions","width","resizeType","theme","thumbnailContainerClass","containerClass","metadata","resourceType","TitleSubText","ResourceHelper","namespace","MIN_MAX_HEIGHT","VideoGuidanceResourcesPopup","video","resources","links","isLoading","Popup","closePopup","onClickClose","showLoadingSpinner","title","LanguageService","size","autoHeightMax","autoHeightMin","autoHeight","map","resourceImageErrorFallbackUrl","getResourceAppLink","location","InfiniteScrollFooter","PopupButtons","text","variant","onClickViewVideo","VideoGuidanceResourcesView","VideoRequests","ClipRequests","config","ConfigRequests","featureAccess","fetch","alerts","getResourcesRequest","pageNumber","httpStatus","hasCompleted","ImageUrls","application","action","args","params","showBackButton","VideoHelper","TextHelper"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3468],{23201:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(32735),a=n(92802),o=n(2102),c=n(83345),l=n(33936),i="shared.formButtons";function s(e){var t=(0,a.u6)(),n=(0,l.l)(t);return r.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?r.createElement(r.Fragment,null,e.submitText):r.createElement(c.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>E,W:()=>O});var r=n(32735),a=n(80247),o=n(80130),c=n(92802),l=n(91967),i=n(1048),s=n(15611),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,c=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(o.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(c||"")},r.createElement(E,Object.assign({className:"form-check-input"},l)),r.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),f=n(83345),p=n(73814),b=n(35223);function v(e){var t=(0,c.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function h(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 g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},w="shared.formField";function E(e){var t,n,o=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=m[0],p=m[1],v=l.q.isFunction(o)?function(e){return o(e)}:r.Children.count(o)?o:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v),r.createElement("div",{className:y.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),r.createElement("div",{className:w},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),v),"password"===u.type&&r.createElement(d.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function O(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,h=e.infoText,O=e.formSize,k=e.showOptionalLabel,N=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),C=(0,c.u6)(),S=C.errors,x=C.touched,j=function(){};if("checkbox"===N.type){var P=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(P.onChange=j),r.createElement(m,Object.assign({},P))}var I=Object.assign(Object.assign({},N),{className:p.w.getCustomFormControlClassName(S,x,N.name,O,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(I.onChange=j),r.createElement(o.Z.Group,{className:"form-group"},!!t&&r.createElement(o.Z.Label,{htmlFor:N.id,className:"d-flex align-items-center"},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),k&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(f.x,{namespace:w,phrase:"optional"})),!!a&&!!N.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(v,{fieldName:N.name,limit:N.maxLength}))),r.createElement(E,Object.assign({},I,{"aria-errormessage":"".concat(N.name,"Error")})),!!h&&r.createElement(o.Z.Text,{className:"text-secondary"},h),r.createElement(c.Bc,{name:N.name},(function(e){return r.createElement(o.Z.Control.Feedback,{id:"".concat(N.name,"Error"),type:"invalid",role:"status"},e)})))}E.defaultProps={autoComplete:"off"},O.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var r=n(32735),a=n(92802),o=n(91967),c=n(1048);function l(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 i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=i(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=c.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(c.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,o=r.resetForm,c=r.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&o(),n.errors)for(var r=0,i=Object.entries(n.errors);r<i.length;r++){var s=(e=i[r],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],m=s[1];c(u,m)}a(!1)}))},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,o,c){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(c,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},78267:(e,t,n)=>{n.d(t,{H:()=>c});var r=n(99940),a=n(97395),o=n(45157),c={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){return{url:a._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:"(resources[thumbnail,pdf]|links)",cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,n,a,c){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:n,error:a,always:c}},updateResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:r.k.PUT,success:n,error:a,always:o}},deleteResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:r.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:n,error:a,always:o}}}},53468:(e,t,n)=>{n.r(t),n.d(t,{EditResourceView:()=>C});var r=n(32735),a=n(70680),o=n(23481),c=n(20354),l=n(49985),i=n(65858),s=n(98269),u=n(92802),m=n(5173),d=n(23201),f=n(29057),p=n(82644),b=n(83345),v="shared.editResource",y=o.T.encloseNamespace(v),h=m.Ry().shape({name:m.Z_().trim().max(255,(function(){return y("nameTooLong")})).required((function(){return y("nameRequired")})).default("")}).noUnknown();function g(e){var t=(0,u.u6)();return r.createElement(u.l0,null,r.createElement(f.W,{label:y("name"),name:"name",id:"name",value:t.values.name,placeholder:y("namePlaceholder"),autoFocus:!0}),r.createElement("div",{className:e.buttonContainerClassName||""},r.createElement(s.Z,{variant:"link",className:"me-2",onClick:e.onClickCancel},r.createElement(b.x,{namespace:v,phrase:"cancel"})),r.createElement(d.A,{isNew:!1,variant:e.submitBtnVariant})))}function w(e){return r.createElement(p.n,{initialValues:e.resource,validationSchema:h,onSubmit:e.saveResource},r.createElement(g,{onClickCancel:e.onClickCancel,buttonContainerClassName:e.buttonContainerClassName,submitBtnVariant:e.submitBtnVariant}))}w.defaultProps={submitBtnVariant:"primary"};var E=n(9111),O=n(69883),k=n(78267),N=o.T.encloseNamespace("shared.editResourceView");function C(e){var t=(0,a.I0)(),n=(0,O.Z)(),o=c.a.useBasicFetch(k.H.resource(e.resourceId));return r.createElement(E.G,{title:N("heading"),closePopup:e.closePopup,showLoadingSpinner:!o.data},!!o.data&&r.createElement(w,{resource:o.data,saveResource:function(r){c.a.fetch(t,k.H.updateResource(e.resourceId,r,(function(){n.success(N("success")),l.k.logUserAction({id:e.resourceId,parentId:e.videoId,name:r.name},{location:i.LZ.Popup,actionType:i.Vw.Edit,entity:i.py.Resource,workflowPhase:i.eu.Complete})}),(function(){return n.error(N("error"))}),e.closePopup))},onClickCancel:e.closePopup,buttonContainerClassName:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",submitBtnVariant:"dark"}))}}}]);
2
- //# sourceMappingURL=3468-943f8a9859-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3468],{23201:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(32735),a=n(92802),o=n(2102),c=n(83345),l=n(33936),i="shared.formButtons";function s(e){var t=(0,a.u6)(),n=(0,l.l)(t);return r.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?r.createElement(r.Fragment,null,e.submitText):r.createElement(c.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>E,W:()=>O});var r=n(32735),a=n(80247),o=n(80130),c=n(92802),l=n(91967),i=n(1048),s=n(15611),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,c=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(o.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(c||"")},r.createElement(E,Object.assign({className:"form-check-input"},l)),r.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),f=n(83345),p=n(73814),b=n(35223);function v(e){var t=(0,c.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function h(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 g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},w="shared.formField";function E(e){var t,n,o=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=m[0],p=m[1],v=l.q.isFunction(o)?function(e){return o(e)}:r.Children.count(o)?o:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v),r.createElement("div",{className:y.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),r.createElement("div",{className:w},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),v),"password"===u.type&&r.createElement(d.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function O(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,h=e.infoText,O=e.formSize,k=e.showOptionalLabel,N=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),C=(0,c.u6)(),S=C.errors,x=C.touched,j=function(){};if("checkbox"===N.type){var P=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(P.onChange=j),r.createElement(m,Object.assign({},P))}var I=Object.assign(Object.assign({},N),{className:p.w.getCustomFormControlClassName(S,x,N.name,O,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(I.onChange=j),r.createElement(o.Z.Group,{className:"form-group"},!!t&&r.createElement(o.Z.Label,{htmlFor:N.id,className:"d-flex align-items-center"},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),k&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(f.x,{namespace:w,phrase:"optional"})),!!a&&!!N.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(v,{fieldName:N.name,limit:N.maxLength}))),r.createElement(E,Object.assign({},I,{"aria-errormessage":"".concat(N.name,"Error")})),!!h&&r.createElement(o.Z.Text,{className:"text-secondary"},h),r.createElement(c.Bc,{name:N.name},(function(e){return r.createElement(o.Z.Control.Feedback,{id:"".concat(N.name,"Error"),type:"invalid",role:"status"},e)})))}E.defaultProps={autoComplete:"off"},O.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var r=n(32735),a=n(92802),o=n(91967),c=n(1048);function l(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 i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=i(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=c.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(c.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,o=r.resetForm,c=r.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&o(),n.errors)for(var r=0,i=Object.entries(n.errors);r<i.length;r++){var s=(e=i[r],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],m=s[1];c(u,m)}a(!1)}))},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,o,c){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(c,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},78267:(e,t,n)=>{n.d(t,{H:()=>c});var r=n(99940),a=n(97395),o=n(45157),c={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){var n="(resources[thumbnail,pdf]|links)";return{url:a._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:n,cursor:t}),publicUrl:a._.urlBuilder("/api/objects/".concat(e,"/members"),{query:n,cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,n,a,c){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:n,error:a,always:c}},updateResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:r.k.PUT,success:n,error:a,always:o}},deleteResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:r.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:n,error:a,always:o}}}},53468:(e,t,n)=>{n.r(t),n.d(t,{EditResourceView:()=>C});var r=n(32735),a=n(70680),o=n(23481),c=n(20354),l=n(49985),i=n(65858),s=n(98269),u=n(92802),m=n(5173),d=n(23201),f=n(29057),p=n(82644),b=n(83345),v="shared.editResource",y=o.T.encloseNamespace(v),h=m.Ry().shape({name:m.Z_().trim().max(255,(function(){return y("nameTooLong")})).required((function(){return y("nameRequired")})).default("")}).noUnknown();function g(e){var t=(0,u.u6)();return r.createElement(u.l0,null,r.createElement(f.W,{label:y("name"),name:"name",id:"name",value:t.values.name,placeholder:y("namePlaceholder"),autoFocus:!0}),r.createElement("div",{className:e.buttonContainerClassName||""},r.createElement(s.Z,{variant:"link",className:"me-2",onClick:e.onClickCancel},r.createElement(b.x,{namespace:v,phrase:"cancel"})),r.createElement(d.A,{isNew:!1,variant:e.submitBtnVariant})))}function w(e){return r.createElement(p.n,{initialValues:e.resource,validationSchema:h,onSubmit:e.saveResource},r.createElement(g,{onClickCancel:e.onClickCancel,buttonContainerClassName:e.buttonContainerClassName,submitBtnVariant:e.submitBtnVariant}))}w.defaultProps={submitBtnVariant:"primary"};var E=n(9111),O=n(69883),k=n(78267),N=o.T.encloseNamespace("shared.editResourceView");function C(e){var t=(0,a.I0)(),n=(0,O.Z)(),o=c.a.useBasicFetch(k.H.resource(e.resourceId));return r.createElement(E.G,{title:N("heading"),closePopup:e.closePopup,showLoadingSpinner:!o.data},!!o.data&&r.createElement(w,{resource:o.data,saveResource:function(r){c.a.fetch(t,k.H.updateResource(e.resourceId,r,(function(){n.success(N("success")),l.k.logUserAction({id:e.resourceId,parentId:e.videoId,name:r.name},{location:i.LZ.Popup,actionType:i.Vw.Edit,entity:i.py.Resource,workflowPhase:i.eu.Complete})}),(function(){return n.error(N("error"))}),e.closePopup))},onClickCancel:e.closePopup,buttonContainerClassName:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",submitBtnVariant:"dark"}))}}}]);
2
+ //# sourceMappingURL=3468-ecc5f20dd2-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3468-ecc5f20dd2-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/libs/shared/src/components/edit-resource/EditResource.tsx","file:///app/packages/projects/lite/src/shared/views/edit-resource/EditResourceView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className='form-group'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.PublicRequest {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import * as React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Resource, UpdateResourceRequest } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.editResource';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst ResourceValidationSchema = Yup.object().shape<UpdateResourceRequest>({\n name: Yup.string()\n .trim()\n .max(255, () => getPhrase('nameTooLong'))\n .required(() => getPhrase('nameRequired'))\n .default('')\n}).noUnknown();\n\n\ninterface EditResourceFormProps {\n onClickCancel: () => void;\n buttonContainerClassName?: string;\n submitBtnVariant?: ButtonProps['variant'];\n}\n\nexport function EditResourceForm(props: EditResourceFormProps): JSX.Element {\n const formikProps = useFormikContext<UpdateResourceRequest>();\n\n return (\n <Form>\n <FormField<UpdateResourceRequest>\n label={getPhrase('name')}\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder={getPhrase('namePlaceholder')}\n autoFocus\n />\n <div className={props.buttonContainerClassName || ''}>\n <Button variant='link' className='me-2' onClick={props.onClickCancel}>\n <Text namespace={namespace} phrase='cancel' />\n </Button>\n <FormButtons isNew={false} variant={props.submitBtnVariant} />\n </div>\n </Form>\n );\n}\n\ninterface EditResourceProps {\n saveResource: (data: UpdateResourceRequest, onDone: () => void) => void;\n resource: Resource;\n onClickCancel: () => void;\n buttonContainerClassName?: string;\n submitBtnVariant?: ButtonProps['variant'];\n}\n\nEditResource.defaultProps = {\n submitBtnVariant: 'primary'\n};\n\nexport function EditResource(props: EditResourceProps): JSX.Element {\n return (\n <FormWrapper<UpdateResourceRequest, Resource>\n initialValues={props.resource}\n validationSchema={ResourceValidationSchema}\n onSubmit={props.saveResource}\n >\n <EditResourceForm\n onClickCancel={props.onClickCancel}\n buttonContainerClassName={props.buttonContainerClassName}\n submitBtnVariant={props.submitBtnVariant}\n />\n </FormWrapper>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EditResource } from 'libs/shared/components/edit-resource/EditResource';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Resource, UpdateResourceRequest } from 'libs/shared/interfaces';\n\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.editResourceView');\n\ninterface EditResourceViewProps extends PopupViewProps {\n resourceId: string;\n videoId: string;\n}\n\nexport function EditResourceView(props: EditResourceViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const resource = Flight.useBasicFetch<Resource>(ResourceRequests.resource(props.resourceId));\n\n function saveResource(data: UpdateResourceRequest): void {\n const onSuccess = () => {\n alerts.success(getPhrase('success'));\n\n AnalyticsHelper.logUserAction({\n id: props.resourceId,\n parentId: props.videoId,\n name: data.name\n }, {\n location: LocationContext.Popup,\n actionType: UserAction.Edit,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete\n });\n };\n\n const onError = () => alerts.error(getPhrase('error'));\n\n Flight.fetch(\n dispatch,\n ResourceRequests.updateResource(props.resourceId, data, onSuccess, onError, props.closePopup)\n );\n }\n\n return (\n <Popup title={getPhrase('heading')} closePopup={props.closePopup} showLoadingSpinner={!resource.data}>\n {!!resource.data &&\n <EditResource\n resource={resource.data}\n saveResource={saveResource}\n onClickCancel={props.closePopup}\n buttonContainerClassName='d-flex justify-content-end border-top pt-3 px-3 mx-n3'\n submitBtnVariant='dark'\n />\n }\n </Popup>\n );\n}"],"names":["namespace","FormButtons","props","formikProps","canSubmit","variant","type","disabled","size","className","showSpinner","isSubmitting","submitText","phrase","isNew","FormCheckbox","label","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","id","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","values","field","ObjectHelper","fieldName","length","limit","children","showLoadingSpinner","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","containerClassName","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","name","as","title","tooltipPlacement","tooltipSpanHack","Text","maxLength","errorMessage","role","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","ResourceRequests","resource","url","videoResources","videoId","videoResourcesAndLinks","cursor","query","publicUrl","addResource","success","error","always","fileId","data","invalidationKeys","updateResource","deleteResource","getPhrase","LanguageService","ResourceValidationSchema","shape","trim","max","required","noUnknown","EditResourceForm","placeholder","autoFocus","buttonContainerClassName","Button","onClickCancel","submitBtnVariant","EditResource","saveResource","EditResourceView","dispatch","alerts","resourceId","Popup","closePopup","AnalyticsHelper","parentId","location","actionType","entity","workflowPhase"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3677],{39902:(e,t,n)=>{n.d(t,{F:()=>p,f:()=>m});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 m(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 p(e,t,n){var s,m,p,f,v=n||function(e){return"object"===l(e)?e.id:e},h=r.useRef(new Set),y=(p=r.useState([]),f=2,function(e){if(Array.isArray(e))return e}(p)||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}}(p,f)||c(p,f)||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=y[0],b=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=v(e);h.current.has(t)||(n.push(e),h.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),E=A.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},v(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(m=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===m?void 0:m.hasCompleted),itemsArr:I,items:E,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}},58321:(e,t,n)=>{n.d(t,{U:()=>f});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),c=n(31949),s=n(22902),l=n(37802),u=n(22490),d=n(82431),m=n(46390),p=n(27638);function f(e){var t,n,f,v=e||{},h=v.locationContext,y=v.mtv,g=v.flightNamespace,b=v.sharedPlaylist,A=(0,m.G)().isPlugin,I=(0,p.u)(h,g),E=I.setFavourite,P=I.canFavourite,V=(0,l.r)(null),C=V.hasTopicDirectories,S=V.isLoadingSettings,w=(0,s.T)(),T=w.hasPermissions,O=w.isLoaded,x=T(i.C.StudentExperience),L=r.a.useBasicFetch(a.L.config()),M=r.a.useBasicFetch(c.N.currentUser()),R=r.a.useBasicFetch((null===(t=M.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(M.data.customerId));return{hasCommonVideoPropsCompleted:!S&&O&&L.hasCompleted&&M.hasCompleted&&(!(null===(n=M.data)||void 0===n?void 0:n.isAuthenticated)||R.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?b&&!(null===(t=M.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:P,setFavourite:E,imageCdnUrl:null===(f=L.data)||void 0===f?void 0:f.imageCdnUrl,yearGroups:R.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:C,companyLogoFallbackUrl:null,hasStudentExperience:x}}}},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:()=>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)}))}},80053:(e,t,n)=>{n.d(t,{N:()=>J});var r=n(32735),i=n(2948),a=n(28400),o=n(49935),c=n(93850),s=n(61499),l=n(38165),u=n(89456),d=n(71063),m=n(80128),p=n(34055),f=n(4594),v=n(16714),h=n(12754),y=n(22902),g=n(65332),b=n(9907),A=n(59598),I=n(31908),E=n(26492),P=n(22103),V=n(84459),C=n(87851),S=n(11256),w=n(47938),T=n(4171),O=n(78166),x=n(99742),L=n(14070),M=n(97291),R=n(86702),j=n(22490),k=n(29978),N=n(15731),U=n(75861),F=n(28389),G=n(31887),q=n(83345),_=n(75100),D=n(51365),W=n(10671),B=n(10741),H="shared.playClip";function K(e){var t=(0,y.T)().hasPermissions,n=(0,W._)({location:W.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(q.x,{namespace:H,phrase:"clippedFrom"})),r.createElement(D.M.Provider,{value:n},r.createElement(_.E4,{videos:[e.originalVideo],getVideoAppLink:function(t,n){var r;return j.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 B.j.getPreviewQuestionsAppLink(e)},commonVideoProps:e.commonVideoProps})))}const Q={main:"ULvZW",expandedToc:"W3k9M",theatreMode:"KOUGv",theatreModeContent:"fWNAc",theatreModePlayPageContainer:"RJ5nP",theatreModeLeftContent:"dllgG"};function Y(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 $=function(e,t,n){return function(r){return n?{application:M.O.VIDEOS,action:L.e.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:M.O.SIGN_UP,action:L.e.SignUp.SIGN_UP}}};function J(e){var t,n,q,_,D,W,B,H,J,Z,z=(0,p.g)(),X=(0,y.T)().hasPermissions,ee=I.M.getCanBeConsumed(e.clip).canConsume,te=e.hasTheatreMode&&"theatre"===z.mode,ne=(0,F.V)(e.hasTheatreMode,te),re=(0,N.Q)(e.tableOfContentsId,e.hasTheatreMode,te),ie=re.tableOfContentsActiveId,ae=re.setTableOfContentsActiveId,oe=re.controlledId,ce=re.setControlledId,se=re.tableOfContentsExpanded,le=re.onToggleTableOfContents,ue=(0,s.Wp)(e.clip)&&e.featureAccess.canViewGlance,de=(0,U.i)(ue),me=de.headingRef,pe=de.headingElements,fe=pe.map((function(t){var n;return{id:t.id,name:G.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:ae,headingElements:pe,controlledId:oe,setControlledId:ce}),(0,b.P)(pe,oe);var ve=I.M.isVideoTypeArchived(e.clip),he=X(v.C.StudentExperience),ye=r.useRef(!1);function ge(){var e,t,n,r;ye.current=!(null===(t=null===(e=null==z?void 0:z.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==z?void 0:z.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()}function be(){var e,t;ye.current&&(null===(t=null===(e=null==z?void 0:z.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())}function Ae(){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(h.x.Primary)||he)}var Ie,Ee,Pe="picture-in-picture"===z.mode||e.featureAccess.canViewPublicLayout,Ve=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:[],Ce={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:se,theatreMode:te},Se=(0,k.l)(Ce),we=(0,k.D)(Ce),Te=(Ie=(0,i.D)(R.y.PLAY_PAGE_CONTAINER_CLASS_NAME),Ee=2,function(e){if(Array.isArray(e))return e}(Ie)||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}}(Ie,Ee)||function(e,t){if(e){if("string"==typeof e)return Y(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)?Y(e,t):void 0}}(Ie,Ee)||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(){Te(te?Q.theatreModePlayPageContainer:"")}),[te]),r.useEffect((function(){return function(){return Te("")}}),[]),r.createElement("div",{className:"px-4 play-page-sections-container ".concat(e.shouldShowSideTableOfContents?"row g-0":"")},r.createElement("main",{className:"".concat(Q.main," ").concat(Se)},!!(null===(q=e.breadcrumbs)||void 0===q?void 0:q.length)&&r.createElement("div",{className:"mb-2"},r.createElement(o.Oo,{breadcrumbs:e.breadcrumbs})),r.createElement(w.W,{restrictions:e.clip._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.clip.id,objectTypeId:f.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),ve&&r.createElement(E.T,{typeId:e.clip.typeId,hasStudentExperience:he}),r.createElement("section",{id:A.K.Video,className:"mb-2 ".concat(d.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==me?void 0:me.current)&&me.current.set(A.K.Video,e)}},ee&&r.createElement(m.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(_=e.queryParams)||void 0===_?void 0:_.context,contextId:null===(D=e.queryParams)||void 0===D?void 0:D.contextId,moviesAndTv:null===(W=e.queryParams)||void 0===W?void 0:W.mtv,playNext:null===(B=e.queryParams)||void 0===B?void 0:B.playNext,startTime:null!==(J=null===(H=e.queryParams)||void 0===H?void 0:H.t)&&void 0!==J?J:null===(Z=e.queryParams)||void 0===Z?void 0:Z.startTime,mode:z.mode||"default",location:"play-page"}),r.createElement("div",{className:Pe?"":"d-none"},r.createElement(T.S,{video:e.clip,type:"pip"}))),r.createElement("div",{className:we},r.createElement("div",{className:ne?"".concat(Q.theatreModeLeftContent):""},r.createElement(S.v,{media:e.clip,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,originalVideoAppLink:Ae()?{application:M.O.VIDEOS,action:L.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,a.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience}),ue?r.createElement(l.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=z.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:ue}):r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ge,onExitImmersiveReader:be,getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:me,suppressInteractivity:e.featureAccess.canViewPublicLayout}),r.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:$(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:x.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:me}),r.createElement(V.J,{video:e.clip,interactives:e.interactives,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:me,commonVideoProps:e.commonVideoProps}),r.createElement(P.O,{clips:Ve||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,headingRef:me,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},commonVideoProps:e.commonVideoProps}),ue&&r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ge,onExitImmersiveReader:be,getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:me,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0}),!!Ae()&&r.createElement(K,{originalVideo:e.originalVideo,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:me,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps}),r.createElement(O.Z,{currentVideo:e.clip,relatedVideos:e.relatedVideos,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,n){var r;return j.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,commonVideoProps:e.commonVideoProps})),te&&r.createElement(C.h,{isExpanded:se,setIsExpanded:le,toggleTheatreMode:null,items:fe,activeId:ie,setControlledId:ce,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode}))),!te&&r.createElement(C.h,{isExpanded:se,setIsExpanded:le,toggleTheatreMode:e.hasTheatreMode?function(e){var t,n,r;null===(r=null===(n=null===(t=z.playerRef)||void 0===t?void 0:t.current)||void 0===n?void 0:n.toggleTheatreMode)||void 0===r||r.call(n,e)}:null,items:fe,activeId:ie,setControlledId:ce,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode}))}}}]);
2
- //# sourceMappingURL=3677-9445118a8d-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3677],{39902:(e,t,n)=>{n.d(t,{F:()=>p,f:()=>m});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 m(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 p(e,t,n){var s,m,p,f,v=n||function(e){return"object"===l(e)?e.id:e},h=r.useRef(new Set),y=(p=r.useState([]),f=2,function(e){if(Array.isArray(e))return e}(p)||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}}(p,f)||c(p,f)||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=y[0],b=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=v(e);h.current.has(t)||(n.push(e),h.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),E=A.data.length?I.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},v(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(m=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===m?void 0:m.hasCompleted),itemsArr:I,items:E,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}},58321:(e,t,n)=>{n.d(t,{U:()=>f});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),c=n(31949),s=n(22902),l=n(37802),u=n(22490),d=n(82431),m=n(46390),p=n(27638);function f(e){var t,n,f,v=e||{},h=v.locationContext,y=v.mtv,g=v.flightNamespace,b=v.sharedPlaylist,A=(0,m.G)().isPlugin,I=(0,p.u)(h,g),E=I.setFavourite,P=I.canFavourite,V=(0,l.r)(null),C=V.hasTopicDirectories,S=V.isLoadingSettings,w=(0,s.T)(),T=w.hasPermissions,O=w.isLoaded,x=T(i.C.StudentExperience),L=r.a.useBasicFetch(a.L.config()),M=r.a.useBasicFetch(c.N.currentUser()),R=r.a.useBasicFetch((null===(t=M.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(M.data.customerId));return{hasCommonVideoPropsCompleted:!S&&O&&L.hasCompleted&&M.hasCompleted&&(!(null===(n=M.data)||void 0===n?void 0:n.isAuthenticated)||R.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?b&&!(null===(t=M.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:P,setFavourite:E,imageCdnUrl:null===(f=L.data)||void 0===f?void 0:f.imageCdnUrl,yearGroups:R.data,getClassroomGuideAppLink:u.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:u.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:u.W.getResourceGuidanceAppLink,showNewVideoIndicator:C,companyLogoFallbackUrl:null,hasStudentExperience:x}}}},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:()=>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)}))}},80053:(e,t,n)=>{n.d(t,{N:()=>J});var r=n(32735),i=n(2948),a=n(28400),o=n(49935),c=n(93850),s=n(61499),l=n(38165),u=n(89456),d=n(71063),m=n(80128),p=n(34055),f=n(4594),v=n(16714),h=n(12754),y=n(22902),g=n(65332),b=n(9907),A=n(59598),I=n(31908),E=n(26492),P=n(22103),V=n(84459),C=n(87851),S=n(11256),w=n(47938),T=n(4171),O=n(78166),x=n(99742),L=n(14070),M=n(97291),R=n(86702),j=n(22490),k=n(29978),N=n(15731),U=n(75861),F=n(28389),G=n(31887),q=n(83345),_=n(75100),D=n(51365),W=n(10671),B=n(10741),H="shared.playClip";function K(e){var t=(0,y.T)().hasPermissions,n=(0,W._)({location:W.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(q.x,{namespace:H,phrase:"clippedFrom"})),r.createElement(D.M.Provider,{value:n},r.createElement(_.E4,{videos:[e.originalVideo],getVideoAppLink:function(t,n){var r;return j.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 B.j.getPreviewQuestionsAppLink(e)},commonVideoProps:e.commonVideoProps})))}const Q={main:"ULvZW",expandedToc:"W3k9M",theatreMode:"KOUGv",theatreModeContent:"fWNAc",theatreModePlayPageContainer:"RJ5nP",theatreModeLeftContent:"dllgG"};function Y(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 $=function(e,t,n){return function(r){return n?{application:M.O.VIDEOS,action:L.e.Videos.PREVIEW_PDF,args:[r.id],params:{videoId:e,shareId:t}}:{application:M.O.SIGN_UP,action:L.e.SignUp.SIGN_UP}}};function J(e){var t,n,q,_,D,W,B,H,J,Z,z=(0,p.g)(),X=(0,y.T)().hasPermissions,ee=I.M.getCanBeConsumed(e.clip).canConsume,te=e.hasTheatreMode&&"theatre"===z.mode,ne=(0,F.V)(e.hasTheatreMode,te),re=(0,N.Q)(e.tableOfContentsId,e.hasTheatreMode,te),ie=re.tableOfContentsActiveId,ae=re.setTableOfContentsActiveId,oe=re.controlledId,ce=re.setControlledId,se=re.tableOfContentsExpanded,le=re.onToggleTableOfContents,ue=(0,s.Wp)(e.clip)&&e.featureAccess.canViewGlance,de=(0,U.i)(ue),me=de.headingRef,pe=de.headingElements,fe=pe.map((function(t){var n;return{id:t.id,name:G.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:ae,headingElements:pe,controlledId:oe,setControlledId:ce}),(0,b.P)(pe,oe);var ve=I.M.isVideoTypeArchived(e.clip),he=X(v.C.StudentExperience),ye=r.useRef(!1);function ge(){var e,t,n,r;ye.current=!(null===(t=null===(e=null==z?void 0:z.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(r=null===(n=null==z?void 0:z.playerRef)||void 0===n?void 0:n.current)||void 0===r||r.pause()}function be(){var e,t;ye.current&&(null===(t=null===(e=null==z?void 0:z.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())}function Ae(){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(h.x.Primary)||he)}var Ie,Ee,Pe="picture-in-picture"===z.mode||e.featureAccess.canViewPublicLayout,Ve=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:[],Ce={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:se,theatreMode:te},Se=(0,k.l)(Ce),we=(0,k.D)(Ce),Te=(Ie=(0,i.D)(R.y.PLAY_PAGE_CONTAINER_CLASS_NAME),Ee=2,function(e){if(Array.isArray(e))return e}(Ie)||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}}(Ie,Ee)||function(e,t){if(e){if("string"==typeof e)return Y(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)?Y(e,t):void 0}}(Ie,Ee)||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(){Te(te?Q.theatreModePlayPageContainer:"")}),[te]),r.useEffect((function(){return function(){return Te("")}}),[]),r.createElement("div",{className:"px-4 play-page-sections-container ".concat(e.shouldShowSideTableOfContents?"row g-0":"")},r.createElement("main",{className:"".concat(Q.main," ").concat(Se)},!!(null===(q=e.breadcrumbs)||void 0===q?void 0:q.length)&&r.createElement("div",{className:"mb-2"},r.createElement(o.Oo,{breadcrumbs:e.breadcrumbs})),r.createElement(w.W,{restrictions:e.clip._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.clip.id,objectTypeId:f.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),ve&&r.createElement(E.T,{typeId:e.clip.typeId,hasStudentExperience:he}),r.createElement("section",{id:A.K.Video,className:"mb-2 ".concat(d.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==me?void 0:me.current)&&me.current.set(A.K.Video,e)}},ee&&r.createElement(m.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(_=e.queryParams)||void 0===_?void 0:_.context,contextId:null===(D=e.queryParams)||void 0===D?void 0:D.contextId,moviesAndTv:null===(W=e.queryParams)||void 0===W?void 0:W.mtv,playNext:null===(B=e.queryParams)||void 0===B?void 0:B.playNext,startTime:null!==(J=null===(H=e.queryParams)||void 0===H?void 0:H.t)&&void 0!==J?J:null===(Z=e.queryParams)||void 0===Z?void 0:Z.startTime,mode:z.mode||"default",location:"play-page"}),r.createElement("div",{className:Pe?"":"d-none"},r.createElement(T.S,{video:e.clip,type:"pip"}))),r.createElement("div",{className:we},r.createElement("div",{className:ne?"".concat(Q.theatreModeLeftContent):"w-100"},r.createElement(S.v,{media:e.clip,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,originalVideoAppLink:Ae()?{application:M.O.VIDEOS,action:L.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,a.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience}),ue?r.createElement(l.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=z.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:ue}):r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ge,onExitImmersiveReader:be,getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:me,suppressInteractivity:e.featureAccess.canViewPublicLayout}),r.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:$(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:x.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:me}),r.createElement(V.J,{video:e.clip,interactives:e.interactives,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:me,commonVideoProps:e.commonVideoProps}),r.createElement(P.O,{clips:Ve||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,headingRef:me,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},commonVideoProps:e.commonVideoProps}),ue&&r.createElement(c.a,{video:e.clip,currentUser:e.currentUser,onLaunchImmersiveReader:ge,onExitImmersiveReader:be,getTagAppLink:function(e){return{application:M.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:me,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0}),!!Ae()&&r.createElement(K,{originalVideo:e.originalVideo,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:me,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps}),r.createElement(O.Z,{currentVideo:e.clip,relatedVideos:e.relatedVideos,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,n){var r;return j.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,commonVideoProps:e.commonVideoProps})),te&&r.createElement(C.h,{isExpanded:se,setIsExpanded:le,toggleTheatreMode:null,items:fe,activeId:ie,setControlledId:ce,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode}))),!te&&r.createElement(C.h,{isExpanded:se,setIsExpanded:le,toggleTheatreMode:e.hasTheatreMode?function(e){var t,n,r;null===(r=null===(n=null===(t=z.playerRef)||void 0===t?void 0:t.current)||void 0===n?void 0:n.toggleTheatreMode)||void 0===r||r.call(n,e)}:null,items:fe,activeId:ie,setControlledId:ce,analyticsData:{videoId:e.clip.id,videoName:e.clip.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode}))}}}]);
2
+ //# sourceMappingURL=3677-f48c335f7a-lite.chunk.js.map