@clickview/lite 0.104.0-rc.6 → 0.104.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +807 -806
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{Dnz8CbEu.chunk.js → -QIG2ZHc.chunk.js} +3 -3
- package/dist/scripts/{Dnz8CbEu.chunk.js.map → -QIG2ZHc.chunk.js.map} +1 -1
- package/dist/scripts/{CEv1_bDW.chunk.js → -brFp4w1.chunk.js} +2 -2
- package/dist/scripts/{CEv1_bDW.chunk.js.map → -brFp4w1.chunk.js.map} +1 -1
- package/dist/scripts/{CX6c7KRp2.chunk.js → 0mx04bmJ2.chunk.js} +2 -2
- package/dist/scripts/{CX6c7KRp2.chunk.js.map → 0mx04bmJ2.chunk.js.map} +1 -1
- package/dist/scripts/{CMHxOVI7.chunk.js → 41LJfkjO.chunk.js} +2 -2
- package/dist/scripts/{CMHxOVI7.chunk.js.map → 41LJfkjO.chunk.js.map} +1 -1
- package/dist/scripts/{BBWnpWNB2.chunk.js → 7uvJMXC12.chunk.js} +2 -2
- package/dist/scripts/{BBWnpWNB2.chunk.js.map → 7uvJMXC12.chunk.js.map} +1 -1
- package/dist/scripts/{CaCm4N_d2.chunk.js → B-HfRX562.chunk.js} +2 -2
- package/dist/scripts/{CaCm4N_d2.chunk.js.map → B-HfRX562.chunk.js.map} +1 -1
- package/dist/scripts/{D9wxi5or2.chunk.js → B2_RD6Px2.chunk.js} +2 -2
- package/dist/scripts/{D9wxi5or2.chunk.js.map → B2_RD6Px2.chunk.js.map} +1 -1
- package/dist/scripts/{DSPMbDdF.chunk.js → B3_lC6bW.chunk.js} +2 -2
- package/dist/scripts/{DSPMbDdF.chunk.js.map → B3_lC6bW.chunk.js.map} +1 -1
- package/dist/scripts/{8JGe5Ug_2.chunk.js → B5GEXNkP2.chunk.js} +2 -2
- package/dist/scripts/{8JGe5Ug_2.chunk.js.map → B5GEXNkP2.chunk.js.map} +1 -1
- package/dist/scripts/{0Fek4oFk.chunk.js → BLE8DLAY.chunk.js} +2 -2
- package/dist/scripts/{0Fek4oFk.chunk.js.map → BLE8DLAY.chunk.js.map} +1 -1
- package/dist/scripts/{BgPye7Nd2.chunk.js → BRt-Kdnn2.chunk.js} +2 -2
- package/dist/scripts/{BgPye7Nd2.chunk.js.map → BRt-Kdnn2.chunk.js.map} +1 -1
- package/dist/scripts/BTWmC6pW.chunk.js +5 -0
- package/dist/scripts/BTWmC6pW.chunk.js.map +1 -0
- package/dist/scripts/{D3ncynN72.chunk.js → BVBpDZoT2.chunk.js} +3 -3
- package/dist/scripts/{D3ncynN72.chunk.js.map → BVBpDZoT2.chunk.js.map} +1 -1
- package/dist/scripts/{5PKjjI4Y.chunk.js → BapoiGsj.chunk.js} +2 -2
- package/dist/scripts/{5PKjjI4Y.chunk.js.map → BapoiGsj.chunk.js.map} +1 -1
- package/dist/scripts/{CNfmLVE82.chunk.js → Bc1JT5Y-2.chunk.js} +2 -2
- package/dist/scripts/{CNfmLVE82.chunk.js.map → Bc1JT5Y-2.chunk.js.map} +1 -1
- package/dist/scripts/{cDv6zuhh.chunk.js → BhE5KhcC.chunk.js} +2 -2
- package/dist/scripts/{cDv6zuhh.chunk.js.map → BhE5KhcC.chunk.js.map} +1 -1
- package/dist/scripts/{Bzk4AwVx2.chunk.js → BncgzKKQ2.chunk.js} +2 -2
- package/dist/scripts/{Bzk4AwVx2.chunk.js.map → BncgzKKQ2.chunk.js.map} +1 -1
- package/dist/scripts/{CV-fOLNI2.chunk.js → Bpf3Tyy12.chunk.js} +2 -2
- package/dist/scripts/{CV-fOLNI2.chunk.js.map → Bpf3Tyy12.chunk.js.map} +1 -1
- package/dist/scripts/{DPZnaz74.chunk.js → C1OiUBQI.chunk.js} +2 -2
- package/dist/scripts/{DPZnaz74.chunk.js.map → C1OiUBQI.chunk.js.map} +1 -1
- package/dist/scripts/{B1TqilLB.chunk.js → C6z8ii6C.chunk.js} +2 -2
- package/dist/scripts/{B1TqilLB.chunk.js.map → C6z8ii6C.chunk.js.map} +1 -1
- package/dist/scripts/{fMgBORUX.chunk.js → C8x-QH43.chunk.js} +2 -2
- package/dist/scripts/{fMgBORUX.chunk.js.map → C8x-QH43.chunk.js.map} +1 -1
- package/dist/scripts/{BiWUSyJr.chunk.js → CAkqvKfy.chunk.js} +2 -2
- package/dist/scripts/{BiWUSyJr.chunk.js.map → CAkqvKfy.chunk.js.map} +1 -1
- package/dist/scripts/{CjOMeOwb2.chunk.js → CGv0OFnc2.chunk.js} +2 -2
- package/dist/scripts/{CjOMeOwb2.chunk.js.map → CGv0OFnc2.chunk.js.map} +1 -1
- package/dist/scripts/{B82m7K0U.chunk.js → CJGWbJ4m.chunk.js} +2 -2
- package/dist/scripts/{B82m7K0U.chunk.js.map → CJGWbJ4m.chunk.js.map} +1 -1
- package/dist/scripts/{D-iyHqNw2.chunk.js → CLvImDXv2.chunk.js} +3 -3
- package/dist/scripts/{D-iyHqNw2.chunk.js.map → CLvImDXv2.chunk.js.map} +1 -1
- package/dist/scripts/{Cqq1N9xw.chunk.js → CM8248d7.chunk.js} +2 -2
- package/dist/scripts/{Cqq1N9xw.chunk.js.map → CM8248d7.chunk.js.map} +1 -1
- package/dist/scripts/Cr6TXzQQ2.chunk.js.map +1 -1
- package/dist/scripts/{B_TE5XUR2.chunk.js → CvilnM0u2.chunk.js} +2 -2
- package/dist/scripts/{B_TE5XUR2.chunk.js.map → CvilnM0u2.chunk.js.map} +1 -1
- package/dist/scripts/{AEOAlemi.chunk.js → Cwocc8uV.chunk.js} +2 -2
- package/dist/scripts/{AEOAlemi.chunk.js.map → Cwocc8uV.chunk.js.map} +1 -1
- package/dist/scripts/{Bld7iWR52.chunk.js → D-pn0sNx2.chunk.js} +2 -2
- package/dist/scripts/{Bld7iWR52.chunk.js.map → D-pn0sNx2.chunk.js.map} +1 -1
- package/dist/scripts/{Cyit3dMk.chunk.js → D78QEASE.chunk.js} +2 -2
- package/dist/scripts/{Cyit3dMk.chunk.js.map → D78QEASE.chunk.js.map} +1 -1
- package/dist/scripts/{Dtag-27K.chunk.js → DER8311r.chunk.js} +2 -2
- package/dist/scripts/{Dtag-27K.chunk.js.map → DER8311r.chunk.js.map} +1 -1
- package/dist/scripts/{CAD-W-lP.chunk.js → DFFJpTVB.chunk.js} +2 -2
- package/dist/scripts/{CAD-W-lP.chunk.js.map → DFFJpTVB.chunk.js.map} +1 -1
- package/dist/scripts/{CmnbQiBA.chunk.js → DSZaceCq.chunk.js} +2 -2
- package/dist/scripts/{CmnbQiBA.chunk.js.map → DSZaceCq.chunk.js.map} +1 -1
- package/dist/scripts/{CfNYFxJl2.chunk.js → D_1m0b_a2.chunk.js} +2 -2
- package/dist/scripts/{CfNYFxJl2.chunk.js.map → D_1m0b_a2.chunk.js.map} +1 -1
- package/dist/scripts/{-KvTbeQV.chunk.js → DhcRnxkp.chunk.js} +2 -2
- package/dist/scripts/{-KvTbeQV.chunk.js.map → DhcRnxkp.chunk.js.map} +1 -1
- package/dist/scripts/{DKDWcWxk.chunk.js → Dqn0sInF.chunk.js} +2 -2
- package/dist/scripts/{DKDWcWxk.chunk.js.map → Dqn0sInF.chunk.js.map} +1 -1
- package/dist/scripts/{DICsRDM42.chunk.js → Dz8KlJhf2.chunk.js} +2 -2
- package/dist/scripts/{DICsRDM42.chunk.js.map → Dz8KlJhf2.chunk.js.map} +1 -1
- package/dist/scripts/{D0b_r0MV.chunk.js → KjTtF4IH.chunk.js} +2 -2
- package/dist/scripts/{D0b_r0MV.chunk.js.map → KjTtF4IH.chunk.js.map} +1 -1
- package/dist/scripts/{CAs2Sere2.chunk.js → MW7W80HY2.chunk.js} +2 -2
- package/dist/scripts/{CAs2Sere2.chunk.js.map → MW7W80HY2.chunk.js.map} +1 -1
- package/dist/scripts/{CwFYdvvA.chunk.js → Okf3Hn0s.chunk.js} +2 -2
- package/dist/scripts/{CwFYdvvA.chunk.js.map → Okf3Hn0s.chunk.js.map} +1 -1
- package/dist/scripts/{Dt5731Ay.chunk.js → _lqYS5Jx.chunk.js} +2 -2
- package/dist/scripts/{Dt5731Ay.chunk.js.map → _lqYS5Jx.chunk.js.map} +1 -1
- package/dist/scripts/{app-DxHnJ6f2.js → app-H3wSQ-PR.js} +4 -4
- package/dist/scripts/{app-DxHnJ6f2.js.map → app-H3wSQ-PR.js.map} +1 -1
- package/dist/scripts/{Bkp6sdnZ2.chunk.js → dVOiGqhu2.chunk.js} +2 -2
- package/dist/scripts/{Bkp6sdnZ2.chunk.js.map → dVOiGqhu2.chunk.js.map} +1 -1
- package/dist/scripts/{B3AhKFfz.chunk.js → ftYw2FVB.chunk.js} +2 -2
- package/dist/scripts/{B3AhKFfz.chunk.js.map → ftYw2FVB.chunk.js.map} +1 -1
- package/dist/scripts/{DyE6EUDb.chunk.js → kjRiUKIL.chunk.js} +2 -2
- package/dist/scripts/{DyE6EUDb.chunk.js.map → kjRiUKIL.chunk.js.map} +1 -1
- package/dist/scripts/{B3y60nT5.chunk.js → pDWQ8Uj5.chunk.js} +2 -2
- package/dist/scripts/{B3y60nT5.chunk.js.map → pDWQ8Uj5.chunk.js.map} +1 -1
- package/dist/scripts/{BCqRKj1E2.chunk.js → s6NJOjzU2.chunk.js} +2 -2
- package/dist/scripts/{BCqRKj1E2.chunk.js.map → s6NJOjzU2.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/DCT6XY8t.chunk.js +0 -5
- package/dist/scripts/DCT6XY8t.chunk.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"D78QEASE.chunk.js","names":[],"sources":["../../src/apps/embed/views/embedded-lcs-video/EmbeddedLcsVideoView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, PlayerViewKey, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { usePlayerIntegrations } from 'shared/hooks/usePlayerIntegrations';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { PrivateEmbedError } from 'apps/embed/errors/forbidden/PrivateEmbedError';\nimport { EmbeddedDefaultErrors } from 'apps/embed/utils/EmbedDefaultErrors';\n\ninterface EmbeddedLcsVideoViewProps {\n id: string;\n queryParams?: HashObject;\n}\n\n/**\n * This view has been introduced soley for the purpose of supporting RSS and Marc21 links\n * for LCSs (Library Cataloging Systems). If you're thinking about using it for anything else\n * please talk to me first - Sha\n */\nexport function EmbeddedLcsVideoView(props: EmbeddedLcsVideoViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(currentUser.data?.isAuthenticated && VideoRequests.video(props.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n const pointsOfInterest = useFetchPointsOfInterest(currentUser.data?.isAuthenticated && props.id);\n const playerIntegrations = usePlayerIntegrations(props.id);\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: false\n }));\n useCannotConsumeError(video, { private: PrivateEmbedError });\n useHandleObjectError(video, EmbeddedDefaultErrors);\n\n if (currentUser.hasCompleted && !currentUser.data.isAuthenticated) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.EMBED,\n action: Actions.Embed.LCS_LOGIN,\n args: [props.id],\n params: props.queryParams\n });\n return <></>;\n }\n\n const hasLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n viewKey.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n playerIntegrations.hasCompleted\n );\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <LitePlayerView\n config={config.data}\n video={video.data}\n currentUser={currentUser.data}\n viewKey={viewKey.data}\n pointsOfInterest={pointsOfInterest.items}\n presentationSlug={null}\n embed\n showResources\n autoplay={props.queryParams.a === 'true'}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n endTime={props.queryParams.endTime}\n playerIntegrations={playerIntegrations.data}\n />\n );\n}\n"],"mappings":"uwBAqCA,SAAgB,EAAqB,EAA+C,CAClF,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAQ,EAA4B,EAAY,MAAM,iBAAmB,EAAc,MAAM,EAAM,EAAE,CAAC,EACtG,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAU,EAAoC,EAAe,cAAc,EAAM,GAAI,EAAY,YAAY,CAAC,EAC9G,EAAmB,EAAyB,EAAY,MAAM,iBAAmB,EAAM,EAAE,EACzF,EAAqB,EAAsB,EAAM,EAAE,EAiCzD,OA/BA,EAAmB,EAAmB,iBAAiB,CACrD,QAAS,EAAM,KACf,cAAe,EAAU,iBAAiB,EAC1C,cAAe,EACjB,CAAC,CAAC,EACF,EAAsB,EAAO,CAAE,QAAS,CAAkB,CAAC,EAC3D,EAAqB,EAAO,CAAqB,EAE7C,EAAY,cAAgB,CAAC,EAAY,KAAK,iBAChD,EAAmB,QAAQ,CACzB,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,UACtB,KAAM,CAAC,EAAM,EAAE,EACf,OAAQ,EAAM,WAChB,CAAC,GACM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAIX,EAAM,MACN,EAAY,cACZ,EAAO,cACP,EAAQ,cACR,EAAiB,cACjB,EAAmB,cAQnB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAO,KACf,MAAO,EAAM,KACb,YAAa,EAAY,KACzB,QAAS,EAAQ,KACjB,iBAAkB,EAAiB,MACnC,iBAAkB,KAClB,MAAA,GACA,cAAA,GACA,SAAU,EAAM,YAAY,IAAM,OAClC,UAAW,EAAM,YAAY,GAAK,EAAM,YAAY,UACpD,QAAS,EAAM,YAAY,QAC3B,mBAAoB,EAAmB,IACxC,CAAA,GAjBM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAmBf"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./DAXXjFlN.chunk.js";import{n as e,t}from"./snXCXfT6.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./CjA4Q5pm.chunk.js";import{U as l,a as u,l as d,y as f,z as p}from"./NlCAcBdo.chunk.js";import{t as m}from"./C5j5LRut2.chunk.js";import{t as h}from"./CVHQXNzi2.chunk.js";import{t as g}from"./BrbeV-Gn2.chunk.js";import{t as _}from"./DZssmXj6.chunk.js";import{t as v}from"./BC8PeYqm.chunk.js";import{t as y}from"./LoQS6GjP.chunk.js";import{t as b}from"./CqrjHjAN.chunk.js";import{t as x}from"./eoAypzU3.chunk.js";import{t as S}from"./D_gWf2lC.chunk.js";import{t as C}from"./Bbp2U9GK.chunk.js";import{t as w}from"./C6-aC3vu.chunk.js";import{n as T,t as E}from"./BGhJ8TEx.chunk.js";import{t as D}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import"./DAXXjFlN.chunk.js";import{n as e,t}from"./snXCXfT6.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./CjA4Q5pm.chunk.js";import{U as l,a as u,l as d,y as f,z as p}from"./NlCAcBdo.chunk.js";import{t as m}from"./C5j5LRut2.chunk.js";import{t as h}from"./CVHQXNzi2.chunk.js";import{t as g}from"./BrbeV-Gn2.chunk.js";import{t as _}from"./DZssmXj6.chunk.js";import{t as v}from"./BC8PeYqm.chunk.js";import{t as y}from"./LoQS6GjP.chunk.js";import{t as b}from"./CqrjHjAN.chunk.js";import{t as x}from"./eoAypzU3.chunk.js";import{t as S}from"./D_gWf2lC.chunk.js";import{t as C}from"./Bbp2U9GK.chunk.js";import{t as w}from"./C6-aC3vu.chunk.js";import{n as T,t as E}from"./BGhJ8TEx.chunk.js";import{t as D}from"./CLvImDXv2.chunk.js";import{n as O,t as k}from"./CpFtf-tI2.chunk.js";import{t as A}from"./BxYKQEUG2.chunk.js";import{t as j}from"./jAbfamoi.chunk.js";import{t as M}from"./Z4RlHaVG.chunk.js";import{t as N}from"./tnBD84bg2.chunk.js";import{t as P}from"./D1aO6GEr.chunk.js";import{t as F}from"./C9XBZFiR.chunk.js";import{t as I}from"./IqGr9V7u2.chunk.js";import{n as L,r as R,t as z}from"./DusJhHeW2.chunk.js";i();var B=j(),V={closeButton:`_closeButton_1bg8h_1`,descriptionBorder:`_descriptionBorder_1bg8h_7`},H=a(),U=`shared.videoDetails`,W=n.encloseNamespace(U);function G(e){let{label:t,items:n,className:r}=e;return n&&n.data&&n.data.length?(0,H.jsxs)(`div`,{className:r,children:[t,`: `,n.data.map(e=>e.name).join(`, `)]}):(0,H.jsx)(H.Fragment,{})}function K(e){let{video:t}=e;if(!g.isVideo(t)&&!g.isClip(t))return(0,H.jsx)(H.Fragment,{});let n=g.getParentVideo(t);return(0,H.jsxs)(`div`,{className:t.description?`col-md-5 ps-md-3 pt-3 pt-md-0`:`col-12`,children:[(0,H.jsx)(`h2`,{className:`h6 mb-1`,children:(0,H.jsx)(O,{phrase:`details`})}),!!n.productionYear&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`productionYear`,options:{year:n.productionYear}})}),(0,H.jsx)(G,{label:W(`productionCompanies`,{smartCount:n.productionCompanies?.data?.length}),items:n.productionCompanies,className:`mb-1`}),(0,H.jsx)(G,{label:W(`distributors`,{smartCount:n.distributors?.data?.length}),items:n.distributors,className:`mb-1`}),(0,H.jsx)(G,{label:W(`producers`,{smartCount:n.producers?.data?.length}),items:n.producers,className:`mb-1`}),(0,H.jsx)(G,{label:W(`directors`,{smartCount:n.directors?.data?.length}),items:n.directors,className:`mb-1`}),!!n.dateBroadcast&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`dateBroadcast`,options:{date:c.format(n.dateBroadcast,`DD/MM/YYYY`)}})}),!!n.channel&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`channel`,options:{channel:n.channel.name}})}),g.canViewUploadDate(e.video)&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`dateUploaded`,options:{date:c.format(t.dateCreated,`DD/MM/YYYY`)}})})]})}function q(e){let{video:t,maxHeight:n=368}=e,i=g.getParentVideo(t),a=!!e.video.description,o=z(e.video)||!!i.productionYear||!!i.dateBroadcast||!!i.channel||g.canViewUploadDate(e.video),s=typeof e.onClickClose==`function`,c=typeof e.onClickShowCurriculumLinks==`function`;function l(){return e.hideTags||g.isInteractive(e.video)||!e.video.tags?.data?.length?null:e.video.tags.data}return!a&&!o?(0,H.jsx)(H.Fragment,{}):(0,H.jsx)(k.Provider,{value:U,children:(0,H.jsxs)(`div`,{className:`rounded border p-3 mb-3 position-relative`,children:[(0,H.jsx)(B.Scrollbars,{autoHeight:!0,autoHeightMax:n,children:(0,H.jsxs)(`div`,{className:`row g-0`,children:[a&&(0,H.jsxs)(`div`,{className:o?`${V.descriptionBorder} pe-3 col-md-7`:`col-12`,children:[(0,H.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,H.jsx)(`h2`,{className:`h6 mb-1`,children:(0,H.jsx)(O,{phrase:`description`})}),(0,H.jsx)(I,{text:t.description,title:t.name,className:`ps-2`,onLaunch:e.onLaunchImmersiveReader,onExit:e.onExitImmersiveReader,analyticsOptions:{location:f.PlayPage,entity:d.Video,actionType:p.Click,descriptor:u.LaunchImmersiveReader},analyticsData:{id:t.id,type:`description`}})]}),(0,H.jsx)(`p`,{className:`mb-0`,dangerouslySetInnerHTML:{__html:r.sanitize(N.linkifyText(e.video.description,{nl2br:!0}))}}),(0,H.jsx)(L,{tags:l(),...R.getTagActionProps(e.getTagAppLink,null,e.suppressInteractivity),className:`mt-1`}),c&&(0,H.jsx)(C,{onClick:e.onClickShowCurriculumLinks,className:`cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1`,children:(0,H.jsx)(O,{namespace:U,phrase:`seeCurriculumLinks`})})]}),o&&(0,H.jsx)(K,{...e})]})}),s&&(0,H.jsx)(`button`,{type:`button`,className:`btn-close ${V.closeButton}`,"aria-label":`Close`,onClick:e.onClickClose})]})})}var J=`userManager.studentsVideo`,Y=n.encloseNamespace(J);function X(e,t){return t.toString()===h.Clip.toString()?_.clip(e):t.toString()===h.Interactive.toString()?v.interactiveMetadata(e):y.video(e)}function Z(e){return e.toString()===h.Clip.toString()?`messageClip`:e.toString()===h.Interactive.toString()?`messageInteractive`:`messageVideo`}function Q(r){let i=s(P.getUser(r.userId)),a=s(X(r.id,r.typeId)),c=s(E.createViewKey(r.id,T.MasterObject)),u=s(S.config()),d=s(b.currentUser());F([i,a]),w({title:i.data?n.getPhrase(J,`pageTitle`,{name:m.getFullName(i.data)}):``});function h(){let e={entity:g.getAnalyticsEntity(a.data),location:f.ViewStudentVideos},t={id:a.data.id},n=[];return g.isVideo(a.data)&&n.push({order:1,label:Y(`download`),appLink:{application:o.VIDEOS,action:x.Videos.DOWNLOAD_VIDEO,args:[a.data.id]},analyticsOptions:{...e,actionType:p.Download,workflowPhase:l.Start},analyticsData:t}),n.push({order:2,label:Y(`delete`),appLink:{application:o.USER_MANAGER,action:x.UserManager.DELETE_STUDENTS_VIDEO,args:[r.id,a.data.id],params:{typeId:a.data.typeId}},className:`text-danger`,analyticsOptions:{...e,actionType:p.Delete,workflowPhase:l.Start},analyticsData:t}),n}return i.hasCompleted&&a.hasCompleted&&c.hasCompleted&&u.hasCompleted&&d.hasCompleted?(0,H.jsxs)(`div`,{className:`px-3`,children:[(0,H.jsx)(`div`,{className:`alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center`,role:`alert`,children:(0,H.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,H.jsx)(t,{svg:A,size:e.Standard,className:`me-2 svg-container`}),(0,H.jsx)(`div`,{className:`w-100`,children:(0,H.jsx)(`p`,{className:`fw-semibold mb-0`,children:Y(Z(r.typeId),{name:m.getFullName(i.data),yearGroup:i.data.masterYearGroup?.name})})})]})}),(0,H.jsx)(`div`,{className:`mb-3`,children:(0,H.jsx)(D,{config:u.data,video:a.data,currentUser:d.data,viewKey:c.data,presentationSlug:null})}),(0,H.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center mb-2`,children:[(0,H.jsx)(`div`,{children:(0,H.jsx)(`h1`,{className:`h3 d-inline-flex m-0 mb-2`,children:a.data.name})}),(0,H.jsx)(M,{actions:h(),actionsDropdownClassName:`btn btn-outline-dark`})]}),(0,H.jsx)(q,{video:a.data})]}):(0,H.jsx)(H.Fragment,{})}export{Q as StudentsVideoView};
|
|
2
|
+
//# sourceMappingURL=DER8311r.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dtag-27K.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-details/video-details.module.scss","../../../../libs/shared/src/components/video-details/VideoDetails.tsx","../../src/apps/user-manager/views/students-video/StudentsVideoView.tsx"],"sourcesContent":[":local {\n .closeButton {\n position: absolute;\n top: 1rem;\n right: map-get($spacers, 3);\n }\n \n @media (min-width: #{map-get($grid-breakpoints, md)}) {\n .descriptionBorder {\n border-right: 1px solid $gray-300;\n }\n }\n}","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { BaseObject, BasePaginatedCollection, CurrentUser, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasPPDD } from './VideoDetailsUtils';\n\nimport styles from './video-details.module.scss';\n\nconst namespace = 'shared.videoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {VideoHelper.canViewUploadDate(props.video) && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarProps {\n video: VideoTypes;\n currentUser?: CurrentUser;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n onClickClose?: () => void;\n onClickShowCurriculumLinks?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n}\n\nexport function VideoDetailsWithScrollbar(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n VideoHelper.canViewUploadDate(props.video)\n );\n\n const canClose = typeof props.onClickClose === 'function';\n const showCurriculumLinks = typeof props.onClickShowCurriculumLinks === 'function';\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags.data;\n }\n\n if (!showDescription && !showDetails)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='rounded border p-3 mb-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(LinkifyHelper.linkifyText(props.video.description, { nl2br: true })) }} />\n <TagList\n tags={getTags()}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n {showCurriculumLinks && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n </Scrollbars>\n\n {canClose && (\n <button\n type='button'\n className={`btn-close ${styles.closeButton}`}\n aria-label='Close'\n onClick={props.onClickClose}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsOptions, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Actions as ActionsButtons } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'userManager.studentsVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRequest(id: string, typeId: string): Flight.Request {\n if (typeId.toString() === MasterType.Clip.toString())\n return ClipRequests.clip(id);\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return InteractiveRequests.interactiveMetadata(id);\n\n return VideoRequests.video(id);\n}\n\nfunction getMessagePhrase(typeId: string): string {\n if (typeId.toString() === MasterType.Clip.toString())\n return 'messageClip';\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return 'messageInteractive';\n\n return 'messageVideo';\n}\n\ninterface StudentsVideoProps {\n userId: string;\n id: string;\n typeId: string;\n}\n\nexport function StudentsVideoView(props: StudentsVideoProps): JSX.Element {\n const user = Flight.useBasicFetch<User>(UserManagerRequests.getUser(props.userId));\n\n const video = Flight.useBasicFetch<VideoTypes>(getRequest(props.id, props.typeId));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useHandleObjectError([ user, video ]);\n useSetPageMetadata({\n title: user.data ?\n LanguageService.getPhrase(\n namespace,\n 'pageTitle',\n { name: UserHelper.getFullName(user.data) }\n ) :\n ''\n });\n\n function getVideoActions(): ActionOptions[] {\n const analyticsOptions: AnalyticsOptions = {\n entity: VideoHelper.getAnalyticsEntity(video.data),\n location: LocationContext.ViewStudentVideos\n };\n \n const analyticsData = {\n id: video.data.id\n };\n \n const actions: ActionOptions[] = [];\n \n if (VideoHelper.isVideo(video.data)) {\n actions.push({\n order: 1,\n label: getPhrase('download'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.DOWNLOAD_VIDEO, args: [video.data.id]},\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Download,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n }\n \n actions.push({\n order: 2,\n label: getPhrase('delete'),\n appLink: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.DELETE_STUDENTS_VIDEO,\n args: [ props.id, video.data.id ],\n params: { typeId: video.data.typeId }\n },\n className: 'text-danger',\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Delete,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n \n return actions;\n }\n\n const dataLoaded = (\n user.hasCompleted &&\n video.hasCompleted &&\n viewKey.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={InfoSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>\n {getPhrase(\n getMessagePhrase(props.typeId),\n { name: UserHelper.getFullName(user.data), yearGroup: user.data.masterYearGroup?.name }\n )}\n </p>\n </div>\n </div>\n </div>\n <div className='mb-3'>\n <LitePlayerView\n config={config.data}\n video={video.data}\n currentUser={currentUser.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n />\n </div>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <div>\n <h1 className='h3 d-inline-flex m-0 mb-2'>\n {video.data.name}\n </h1>\n </div>\n <ActionsButtons\n actions={getVideoActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n <VideoDetailsWithScrollbar video={video.data} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DER8311r.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-details/video-details.module.scss","../../../../libs/shared/src/components/video-details/VideoDetails.tsx","../../src/apps/user-manager/views/students-video/StudentsVideoView.tsx"],"sourcesContent":[":local {\n .closeButton {\n position: absolute;\n top: 1rem;\n right: map-get($spacers, 3);\n }\n \n @media (min-width: #{map-get($grid-breakpoints, md)}) {\n .descriptionBorder {\n border-right: 1px solid $gray-300;\n }\n }\n}","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { BaseObject, BasePaginatedCollection, CurrentUser, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasPPDD } from './VideoDetailsUtils';\n\nimport styles from './video-details.module.scss';\n\nconst namespace = 'shared.videoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {VideoHelper.canViewUploadDate(props.video) && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarProps {\n video: VideoTypes;\n currentUser?: CurrentUser;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n onClickClose?: () => void;\n onClickShowCurriculumLinks?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n}\n\nexport function VideoDetailsWithScrollbar(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n VideoHelper.canViewUploadDate(props.video)\n );\n\n const canClose = typeof props.onClickClose === 'function';\n const showCurriculumLinks = typeof props.onClickShowCurriculumLinks === 'function';\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags.data;\n }\n\n if (!showDescription && !showDetails)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='rounded border p-3 mb-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(LinkifyHelper.linkifyText(props.video.description, { nl2br: true })) }} />\n <TagList\n tags={getTags()}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n {showCurriculumLinks && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n </Scrollbars>\n\n {canClose && (\n <button\n type='button'\n className={`btn-close ${styles.closeButton}`}\n aria-label='Close'\n onClick={props.onClickClose}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsOptions, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Actions as ActionsButtons } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'userManager.studentsVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRequest(id: string, typeId: string): Flight.Request {\n if (typeId.toString() === MasterType.Clip.toString())\n return ClipRequests.clip(id);\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return InteractiveRequests.interactiveMetadata(id);\n\n return VideoRequests.video(id);\n}\n\nfunction getMessagePhrase(typeId: string): string {\n if (typeId.toString() === MasterType.Clip.toString())\n return 'messageClip';\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return 'messageInteractive';\n\n return 'messageVideo';\n}\n\ninterface StudentsVideoProps {\n userId: string;\n id: string;\n typeId: string;\n}\n\nexport function StudentsVideoView(props: StudentsVideoProps): JSX.Element {\n const user = Flight.useBasicFetch<User>(UserManagerRequests.getUser(props.userId));\n\n const video = Flight.useBasicFetch<VideoTypes>(getRequest(props.id, props.typeId));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useHandleObjectError([ user, video ]);\n useSetPageMetadata({\n title: user.data ?\n LanguageService.getPhrase(\n namespace,\n 'pageTitle',\n { name: UserHelper.getFullName(user.data) }\n ) :\n ''\n });\n\n function getVideoActions(): ActionOptions[] {\n const analyticsOptions: AnalyticsOptions = {\n entity: VideoHelper.getAnalyticsEntity(video.data),\n location: LocationContext.ViewStudentVideos\n };\n \n const analyticsData = {\n id: video.data.id\n };\n \n const actions: ActionOptions[] = [];\n \n if (VideoHelper.isVideo(video.data)) {\n actions.push({\n order: 1,\n label: getPhrase('download'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.DOWNLOAD_VIDEO, args: [video.data.id]},\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Download,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n }\n \n actions.push({\n order: 2,\n label: getPhrase('delete'),\n appLink: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.DELETE_STUDENTS_VIDEO,\n args: [ props.id, video.data.id ],\n params: { typeId: video.data.typeId }\n },\n className: 'text-danger',\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Delete,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n \n return actions;\n }\n\n const dataLoaded = (\n user.hasCompleted &&\n video.hasCompleted &&\n viewKey.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={InfoSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>\n {getPhrase(\n getMessagePhrase(props.typeId),\n { name: UserHelper.getFullName(user.data), yearGroup: user.data.masterYearGroup?.name }\n )}\n </p>\n </div>\n </div>\n </div>\n <div className='mb-3'>\n <LitePlayerView\n config={config.data}\n video={video.data}\n currentUser={currentUser.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n />\n </div>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <div>\n <h1 className='h3 d-inline-flex m-0 mb-2'>\n {video.data.name}\n </h1>\n </div>\n <ActionsButtons\n actions={getVideoActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n <VideoDetailsWithScrollbar video={video.data} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{r as t}from"./snXCXfT6.chunk.js";import{_ as n,x as r,y as i}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{u}from"./BX0wDJmp.chunk.js";import{t as d}from"./C1SLt-ar.chunk.js";import{y as f}from"./NlCAcBdo.chunk.js";import{r as p}from"./Cr6TXzQQ2.chunk.js";import{n as m,t as h}from"./CmcCVXi32.chunk.js";import{t as g}from"./DGmmTRu72.chunk.js";import{n as _}from"./LoQS6GjP.chunk.js";import{t as v}from"./CqrjHjAN.chunk.js";import{t as y}from"./eoAypzU3.chunk.js";import{t as b}from"./XIE88U01.chunk.js";import{t as x}from"./BJZXCSV9.chunk.js";import{n as S,t as C}from"./C6-aC3vu.chunk.js";import{t as w}from"./B3gsVN-_.chunk.js";import{t as T}from"./B_-pJtOI2.chunk.js";import{t as E}from"./BugRosaL2.chunk.js";import{t as D}from"./DYDxLHiV2.chunk.js";import{n as O}from"./CpFtf-tI2.chunk.js";import{t as k}from"./DBkEQkKm2.chunk.js";import{t as A}from"./CzuHD4Ht.chunk.js";import{t as j}from"./DDJBf9pK2.chunk.js";import{n as M}from"./ChnNWPOK2.chunk.js";import{r as N,t as P}from"./C5uTRLOC2.chunk.js";import{t as F}from"./DewCxv4i.chunk.js";import{t as I}from"./B8gP8YoA.chunk.js";import{t as L}from"./M21xrW6i2.chunk.js";import{t as R}from"./DzgAvoez.chunk.js";import{t as z}from"./BnuuRu_J2.chunk.js";import{n as B,t as V}from"./CY_30Xdt.chunk.js";import{t as H}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{r as t}from"./snXCXfT6.chunk.js";import{_ as n,x as r,y as i}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{u}from"./BX0wDJmp.chunk.js";import{t as d}from"./C1SLt-ar.chunk.js";import{y as f}from"./NlCAcBdo.chunk.js";import{r as p}from"./Cr6TXzQQ2.chunk.js";import{n as m,t as h}from"./CmcCVXi32.chunk.js";import{t as g}from"./DGmmTRu72.chunk.js";import{n as _}from"./LoQS6GjP.chunk.js";import{t as v}from"./CqrjHjAN.chunk.js";import{t as y}from"./eoAypzU3.chunk.js";import{t as b}from"./XIE88U01.chunk.js";import{t as x}from"./BJZXCSV9.chunk.js";import{n as S,t as C}from"./C6-aC3vu.chunk.js";import{t as w}from"./B3gsVN-_.chunk.js";import{t as T}from"./B_-pJtOI2.chunk.js";import{t as E}from"./BugRosaL2.chunk.js";import{t as D}from"./DYDxLHiV2.chunk.js";import{n as O}from"./CpFtf-tI2.chunk.js";import{t as k}from"./DBkEQkKm2.chunk.js";import{t as A}from"./CzuHD4Ht.chunk.js";import{t as j}from"./DDJBf9pK2.chunk.js";import{n as M}from"./ChnNWPOK2.chunk.js";import{r as N,t as P}from"./C5uTRLOC2.chunk.js";import{t as F}from"./DewCxv4i.chunk.js";import{t as I}from"./B8gP8YoA.chunk.js";import{t as L}from"./M21xrW6i2.chunk.js";import{t as R}from"./DzgAvoez.chunk.js";import{t as z}from"./BnuuRu_J2.chunk.js";import{n as B,t as V}from"./CY_30Xdt.chunk.js";import{t as H}from"./BTWmC6pW.chunk.js";import{t as U}from"./CC5Dr9aG.chunk.js";import{r as W}from"./yk6K0dmz2.chunk.js";import{t as G}from"./B5GEXNkP2.chunk.js";var K=e(s()),q=c(),J=`moviesAndTv.companyDashboardEmptyState`,Y=a.encloseNamespace(J);function X(e){let n=e.dashboard?.status===h.Archived;return(0,q.jsxs)(x,{children:[(0,q.jsx)(x.Image,{src:e.imageUrl,altText:Y(`info`)}),(0,q.jsx)(x.Heading,{children:(0,q.jsx)(O,{namespace:J,phrase:`heading`})}),(0,q.jsx)(x.Info,{children:(0,q.jsx)(O,{namespace:J,phrase:`info`})}),(0,q.jsx)(t,{title:n?a.getPhrase(J,`archivedCtaTooltip`):``,spanHack:!0,children:(0,q.jsx)(x.Cta,{text:a.getPhrase(J,`add`),appLink:e.addWidgetApplink?.(),className:`btn btn-dark`,icon:j,disabled:n})})]})}function Z(e){let t=d.sortBy(e.dashboard?.widgets,`index`);function n(t,n,r){let i=p.getWidgetParams(n,r,p.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,i,r)}let r=e.isReadonly&&!t?.length;return(0,q.jsxs)(q.Fragment,{children:[!!t.length&&(0,q.jsxs)(q.Fragment,{children:[e.company?(0,q.jsx)(V,{heading:e.company.name,banner:e.company.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,blockColourClass:P(e.company.name,N),actions:e.getBannerActions?.(),actionsDropdownClassName:`btn btn-outline-dark`}):(0,q.jsx)(B,{}),(0,q.jsx)(`div`,{className:`py-3 mb-3 border-bottom`,children:(0,q.jsx)(R,{breadcrumbs:e.getBreadcrumbs?.()})}),(0,q.jsx)(`div`,{className:`mt-3`,children:t.map(t=>(0,q.jsx)(H,{widgetCollection:m.Company,dashboardTarget:m.Company,id:t.id,getContentRequest:n,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,appLinks:e.widgetAppLinks,isScrollToTargetWidget:e?.scrollToWidgetId===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,settings:e.settings,imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,classification:null,contentType:null,hasTableOfContents:!1,seeMoreLink:null,onClickRemoveItem:null,badgeComponent:null},t.id))})]}),r&&(0,q.jsx)(X,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard})]})}function Q({enabled:e=!0,to:t,applinkOptions:n},a=[]){(0,K.useEffect)(()=>{if(!(!e||!t)){if(typeof t==`string`){r.Redirect(t);return}i.trigger(t,n)}},[e,t,n,...a])}var $=a.encloseNamespace(`moviesAndTv.companyDashboard`);function ee(e,t){return{partner:E.getPartnerDashboardAppLink,partnerHome:E.getPartnerHomeAppLink,videoType:(n,r)=>k.getAppLink(n,{...r,moviesAndTv:!0,context:_.Widget,includeContext:e?.isAuthenticated},t),series:e=>D.getSeriesAppLink(e,{},t),playlist:e=>({application:l.PLAYLISTS,action:y.Playlists.PLAYLIST,args:[t,e.id,o.slugify(e.name)]}),getPreviewQuestionsAppLink:e=>A.getPreviewQuestionsAppLink(e),classification:()=>null,allTopics:()=>null,calendar:()=>null,calendarMonth:()=>null,classificationDirectory:()=>null,classificationLatestReleases:()=>null,company:()=>null,discover:()=>null,livestream:()=>null,watchHistory:()=>null,widgetVideoList:()=>null,widgetWizard:()=>null,searchSettings:()=>null,searchHome:()=>null}}function te(e){return!e?.partnerProfiles||e.partnerProfiles?.count===0?E.getPartnerHomeAppLink():e?.partnerProfiles?.count>1?E.getPartnerDashboardHubAppLink(e):E.getPartnerDashboardAppLink(e?.partnerProfiles?.data?.[0])}function ne(e,t){return e.isLoadingSettings?null:e.hasPartnerProfiles?L.company(t,!0):L.company(t)}function re(e){let t=g(null),r=u(ne(t,e.companyId)),i=u(v.currentUser()),{openInCurationStudioLabel:a,isUserCurator:s,getOpenInCurationStudioLink:c}=W();Q({enabled:!t.isLoadingSettings&&t.hasPartnerProfiles,to:r.hasCompleted?te(r.data):null},[r.hasCompleted,r.data]);let{commonVideoProps:d}=z({locationContext:f.VideoThumbnail,mtv:!0}),{hasPermissions:p,hasLocalPermissions:h}=w(),{dashboard:_,isPreviewing:x}=I({targetType:m.Company,queryParams:e.queryParams,companyId:e.companyId,enabled:!t.isLoadingSettings&&!t.hasPartnerProfiles});C(S.getDefaultMetadata({title:r.data?.name,phraseContext:{phraseHandler:$,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:T.getCanonicalLink({stripPresentationSlug:!0,customAppLink:{application:l.MOVIES_AND_TV,action:y.MoviesAndTv.COMPANY_DASHBOARD,args:[e.presentationSlug,r.data?.id,o.slugify(r.data?.name)]}}),allowIndexing:!1})),M({id:e.companyId,app:`studios`});let E=U({name:r.data?.name});function D(){return r.hasCompleted?E:[]}function O(){return s?[{label:a,href:c(r.data?.typeId,r.data?.id),openInNewTab:!0}]:[]}return K.useEffect(()=>{!_.hasCompleted||_.data||n.throw(new b)},[_.data,_.hasCompleted]),(0,q.jsxs)(`div`,{className:`position-relative px-4`,children:[!!(x&&_.data)&&(0,q.jsx)(G,{status:_.data.status,type:`company`}),(0,q.jsx)(Z,{company:r.data,dashboard:_.data,getWidgetContentRequest:F.dashboardWidgetContent,getBannerActions:O,widgetAppLinks:ee(i.data,e.presentationSlug),getBreadcrumbs:D,hasPermissions:p,hasLocalPermissions:h,settings:t,commonVideoProps:d})]})}export{re as CompanyDashboardView};
|
|
2
|
+
//# sourceMappingURL=DFFJpTVB.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CAD-W-lP.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState.tsx","../../../../libs/shared/src/apps/movies-and-tv/components/company-dashboard/CompanyDashboard.tsx","../../src/shared/hooks/useRedirect.ts","../../src/apps/movies-and-tv/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'moviesAndTv.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CompanyDashboardEmptyState(props: CompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CompanyDashboardEmptyState } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nexport interface CompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink\n };\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n commonVideoProps: CommonVideoProps;\n\n settings?: AllCompanyWidgetTemplates['settings'];\n}\n\nexport function CompanyDashboard(props: CompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company ?\n (\n <BannerHeader\n heading={props.company.name}\n banner={props.company.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={props.settings}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n contentType={null}\n hasTableOfContents={false}\n seeMoreLink={null}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <CompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import { useEffect } from 'react';\n\nimport { AppLink, AppLinkHelper, AppLinkOptions, LocationUtils } from 'libs/common/backbone/core';\n\ntype BaseRedirectOptions = {\n /**\n * Whether the redirect should occur. \n * `true` by default.\n */\n enabled?: boolean\n};\n\ntype AppLinkRedirectOptions = {\n to: AppLink | null,\n applinkOptions?: AppLinkOptions\n};\n\ntype ExternalRedirectOptions = {\n to: string | null,\n applinkOptions?: never\n};\n\ntype UseRedirectOptions = BaseRedirectOptions & (AppLinkRedirectOptions | ExternalRedirectOptions);\n\nexport function useRedirect(\n { enabled = true, to, applinkOptions }: UseRedirectOptions,\n deps: React.DependencyList = []\n) {\n useEffect(() => {\n if (!enabled || !to)\n return;\n\n // External redirect\n if (typeof to === 'string') {\n LocationUtils.Redirect(to);\n return;\n }\n\n // Internal redirect\n AppLinkHelper.trigger(to, applinkOptions);\n }, [ enabled, to, applinkOptions, ...deps ]);\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CompanyDashboard, CompanyDashboardProps } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/CompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { SettingsHash, useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, CurrentUser, DashboardTargetType, Playlist, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useRedirect } from 'shared/hooks/useRedirect';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTv.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getCompanyAppLinks(\n currentUser: CurrentUser,\n presentationSlug: string | null\n): CompanyDashboardProps['widgetAppLinks'] {\n return {\n partner: ContentPartnerAppLinkHelper.getPartnerDashboardAppLink,\n partnerHome: ContentPartnerAppLinkHelper.getPartnerHomeAppLink,\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget,\n includeContext: currentUser?.isAuthenticated\n }, presentationSlug)\n ),\n\n series: (series: Series) => SeriesAppLinkHelper.getSeriesAppLink(series, {}, presentationSlug),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ presentationSlug, playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n\n getPreviewQuestionsAppLink: interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive),\n \n // TODO: Find a nice way around having to pass these in\n classification: () => null,\n allTopics: () => null,\n calendar: () => null,\n calendarMonth: () => null,\n classificationDirectory: () => null,\n classificationLatestReleases: () => null,\n company: () => null,\n discover: () => null,\n livestream: () => null,\n watchHistory: () => null,\n widgetVideoList: () => null,\n widgetWizard: () => null,\n searchSettings: () => null,\n searchHome: () => null\n };\n}\n\n/**\n * If there are no partner profiles, we redirect to the partner index page.\n * If there is only one partner profile, we redirect to the partner dashboard page.\n * If there are multiple partner profiles, we redirect to the partner dashboard hub page.\n */\nfunction getRedirectAppLink(company: Company): Core.AppLink | null {\n if (!company?.partnerProfiles || company.partnerProfiles?.count === 0)\n return ContentPartnerAppLinkHelper.getPartnerHomeAppLink();\n \n if (company?.partnerProfiles?.count > 1)\n return ContentPartnerAppLinkHelper.getPartnerDashboardHubAppLink(company);\n\n return ContentPartnerAppLinkHelper.getPartnerDashboardAppLink(company?.partnerProfiles?.data?.[0]);\n}\n\nfunction getCompanyRequest(settings: SettingsHash, companyId: string): Flight.PublicRequest | null {\n if (settings.isLoadingSettings)\n return null;\n\n if (settings.hasPartnerProfiles)\n return CompanyRequests.company(companyId, true);\n\n return CompanyRequests.company(companyId);\n}\n\ninterface CompanyDashboardViewProps {\n presentationSlug: string | null;\n companyId: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const settings = useSettings(null);\n const company = Flight.useBasicFetch<Company>(getCompanyRequest(settings, props.companyId));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n /**\n * Redirect to respective feature channel dashboard if it exists.\n * Only redirect if the user has partner profiles feature flag enabled.\n */\n useRedirect({\n enabled: !settings.isLoadingSettings && settings.hasPartnerProfiles,\n to: company.hasCompleted ? getRedirectAppLink(company.data) : null\n }, [ company.hasCompleted, company.data ]);\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail,\n mtv: true\n });\n \n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const {\n dashboard,\n isPreviewing\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Company,\n queryParams: props.queryParams,\n companyId: props.companyId,\n enabled: !settings.isLoadingSettings && !settings.hasPartnerProfiles\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ props.presentationSlug, company.data?.id, TextHelper.slugify(company.data?.name) ]\n }\n }),\n allowIndexing: false\n }));\n\n useDeepLinks({ id: props.companyId, app: 'studios' });\n\n const breadcrumbs = useBreadcrumbs({ name: company.data?.name });\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return breadcrumbs;\n }\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(company.data?.typeId, company.data?.id),\n openInNewTab: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <CompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBannerActions={getBannerActions}\n widgetAppLinks={getCompanyAppLinks(currentUser.data, props.presentationSlug)}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DFFJpTVB.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState.tsx","../../../../libs/shared/src/apps/movies-and-tv/components/company-dashboard/CompanyDashboard.tsx","../../src/shared/hooks/useRedirect.ts","../../src/apps/movies-and-tv/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'moviesAndTv.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CompanyDashboardEmptyState(props: CompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CompanyDashboardEmptyState } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/empty-state/CompanyDashboardEmptyState';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nexport interface CompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink\n };\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n commonVideoProps: CommonVideoProps;\n\n settings?: AllCompanyWidgetTemplates['settings'];\n}\n\nexport function CompanyDashboard(props: CompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company ?\n (\n <BannerHeader\n heading={props.company.name}\n banner={props.company.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={props.settings}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n contentType={null}\n hasTableOfContents={false}\n seeMoreLink={null}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <CompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import { useEffect } from 'react';\n\nimport { AppLink, AppLinkHelper, AppLinkOptions, LocationUtils } from 'libs/common/backbone/core';\n\ntype BaseRedirectOptions = {\n /**\n * Whether the redirect should occur. \n * `true` by default.\n */\n enabled?: boolean\n};\n\ntype AppLinkRedirectOptions = {\n to: AppLink | null,\n applinkOptions?: AppLinkOptions\n};\n\ntype ExternalRedirectOptions = {\n to: string | null,\n applinkOptions?: never\n};\n\ntype UseRedirectOptions = BaseRedirectOptions & (AppLinkRedirectOptions | ExternalRedirectOptions);\n\nexport function useRedirect(\n { enabled = true, to, applinkOptions }: UseRedirectOptions,\n deps: React.DependencyList = []\n) {\n useEffect(() => {\n if (!enabled || !to)\n return;\n\n // External redirect\n if (typeof to === 'string') {\n LocationUtils.Redirect(to);\n return;\n }\n\n // Internal redirect\n AppLinkHelper.trigger(to, applinkOptions);\n }, [ enabled, to, applinkOptions, ...deps ]);\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CompanyDashboard, CompanyDashboardProps } from 'libs/shared/apps/movies-and-tv/components/company-dashboard/CompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { SettingsHash, useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, CurrentUser, DashboardTargetType, Playlist, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useRedirect } from 'shared/hooks/useRedirect';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTv.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getCompanyAppLinks(\n currentUser: CurrentUser,\n presentationSlug: string | null\n): CompanyDashboardProps['widgetAppLinks'] {\n return {\n partner: ContentPartnerAppLinkHelper.getPartnerDashboardAppLink,\n partnerHome: ContentPartnerAppLinkHelper.getPartnerHomeAppLink,\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget,\n includeContext: currentUser?.isAuthenticated\n }, presentationSlug)\n ),\n\n series: (series: Series) => SeriesAppLinkHelper.getSeriesAppLink(series, {}, presentationSlug),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ presentationSlug, playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n\n getPreviewQuestionsAppLink: interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive),\n \n // TODO: Find a nice way around having to pass these in\n classification: () => null,\n allTopics: () => null,\n calendar: () => null,\n calendarMonth: () => null,\n classificationDirectory: () => null,\n classificationLatestReleases: () => null,\n company: () => null,\n discover: () => null,\n livestream: () => null,\n watchHistory: () => null,\n widgetVideoList: () => null,\n widgetWizard: () => null,\n searchSettings: () => null,\n searchHome: () => null\n };\n}\n\n/**\n * If there are no partner profiles, we redirect to the partner index page.\n * If there is only one partner profile, we redirect to the partner dashboard page.\n * If there are multiple partner profiles, we redirect to the partner dashboard hub page.\n */\nfunction getRedirectAppLink(company: Company): Core.AppLink | null {\n if (!company?.partnerProfiles || company.partnerProfiles?.count === 0)\n return ContentPartnerAppLinkHelper.getPartnerHomeAppLink();\n \n if (company?.partnerProfiles?.count > 1)\n return ContentPartnerAppLinkHelper.getPartnerDashboardHubAppLink(company);\n\n return ContentPartnerAppLinkHelper.getPartnerDashboardAppLink(company?.partnerProfiles?.data?.[0]);\n}\n\nfunction getCompanyRequest(settings: SettingsHash, companyId: string): Flight.PublicRequest | null {\n if (settings.isLoadingSettings)\n return null;\n\n if (settings.hasPartnerProfiles)\n return CompanyRequests.company(companyId, true);\n\n return CompanyRequests.company(companyId);\n}\n\ninterface CompanyDashboardViewProps {\n presentationSlug: string | null;\n companyId: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const settings = useSettings(null);\n const company = Flight.useBasicFetch<Company>(getCompanyRequest(settings, props.companyId));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n /**\n * Redirect to respective feature channel dashboard if it exists.\n * Only redirect if the user has partner profiles feature flag enabled.\n */\n useRedirect({\n enabled: !settings.isLoadingSettings && settings.hasPartnerProfiles,\n to: company.hasCompleted ? getRedirectAppLink(company.data) : null\n }, [ company.hasCompleted, company.data ]);\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail,\n mtv: true\n });\n \n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const {\n dashboard,\n isPreviewing\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Company,\n queryParams: props.queryParams,\n companyId: props.companyId,\n enabled: !settings.isLoadingSettings && !settings.hasPartnerProfiles\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ props.presentationSlug, company.data?.id, TextHelper.slugify(company.data?.name) ]\n }\n }),\n allowIndexing: false\n }));\n\n useDeepLinks({ id: props.companyId, app: 'studios' });\n\n const breadcrumbs = useBreadcrumbs({ name: company.data?.name });\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return breadcrumbs;\n }\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(company.data?.typeId, company.data?.id),\n openInNewTab: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <CompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBannerActions={getBannerActions}\n widgetAppLinks={getCompanyAppLinks(currentUser.data, props.presentationSlug)}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./DAXXjFlN.chunk.js";import{t as e}from"./DMnm3Ewv.chunk.js";import{n as t}from"./B785hxeE.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{u as a}from"./BX0wDJmp.chunk.js";import{y as o}from"./NlCAcBdo.chunk.js";import{t as s}from"./DGmmTRu72.chunk.js";import{t as c}from"./DbSUQ2A12.chunk.js";import{t as l}from"./DZssmXj6.chunk.js";import{t as u}from"./BC8PeYqm.chunk.js";import{t as d}from"./LoQS6GjP.chunk.js";import{t as f}from"./CqrjHjAN.chunk.js";import{t as p}from"./XIE88U01.chunk.js";import{n as m,t as h}from"./C6-aC3vu.chunk.js";import{t as g}from"./7LGxCHGV.chunk.js";import{t as _}from"./Bbv3vbm7.chunk.js";import{t as v}from"./B3gsVN-_.chunk.js";import{l as y,r as b}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import"./DAXXjFlN.chunk.js";import{t as e}from"./DMnm3Ewv.chunk.js";import{n as t}from"./B785hxeE.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{u as a}from"./BX0wDJmp.chunk.js";import{y as o}from"./NlCAcBdo.chunk.js";import{t as s}from"./DGmmTRu72.chunk.js";import{t as c}from"./DbSUQ2A12.chunk.js";import{t as l}from"./DZssmXj6.chunk.js";import{t as u}from"./BC8PeYqm.chunk.js";import{t as d}from"./LoQS6GjP.chunk.js";import{t as f}from"./CqrjHjAN.chunk.js";import{t as p}from"./XIE88U01.chunk.js";import{n as m,t as h}from"./C6-aC3vu.chunk.js";import{t as g}from"./7LGxCHGV.chunk.js";import{t as _}from"./Bbv3vbm7.chunk.js";import{t as v}from"./B3gsVN-_.chunk.js";import{l as y,r as b}from"./CLvImDXv2.chunk.js";import{t as x}from"./Dfw0sxVt2.chunk.js";import{t as S}from"./C1loT8MD2.chunk.js";import{n as C}from"./ChnNWPOK2.chunk.js";import{t as w}from"./C9XBZFiR.chunk.js";import{t as T}from"./BnuuRu_J2.chunk.js";import{t as E}from"./CC5Dr9aG.chunk.js";import{t as D}from"./BYaCUOEW2.chunk.js";import{t as O}from"./DNuJUXpr2.chunk.js";import{v as k}from"./D-pn0sNx2.chunk.js";import{t as A}from"./CvilnM0u2.chunk.js";r();var j=i(),M=n.encloseNamespace(`shared.playClip`),N={notFound:p,forbidden:{privacy:_}};P.defaultProps={queryParams:{}};function P(n){let{context:r,contextId:i,mtv:p}=n.queryParams,{hasProduct:_}=x(),{commonVideoProps:P,hasCommonVideoPropsCompleted:F}=T({locationContext:o.PlayClip,mtv:p}),{hasPermissions:I}=v(),{hasTopicDirectories:L,hasPlayPageTranscript:R}=s(null),z=a(f.currentUser()),B=a(l.clip(n.id)),V=a(u.videoInteractives(n.id)),H=a(!!B.data?._parentVideo&&d.video(B.data._parentVideo.id));O([H.data]);let U=a(!!B.data?._parentVideo&&l.videoClips(B.data._parentVideo.id)),W=a(B.statusCode===e.Forbidden&&l.clip(n.id,c.StripMetadata)),G=b({video:H.data,context:r,contextId:i,moviesAndTv:p,currentUser:z.data}),K=D(),q=k(),J=y(n.id,!0),Y=S({objectId:B.data?.id,objectTypeId:B.data?.typeId}),X=E({name:B.data?.name});return h(m.getClipMetadata({content:B.data,phraseContext:{phraseHandler:M,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`}})),w(B,N,{forbidden:!0}),O(G.videos??[]),g(W),C({id:n.id,app:`clips`}),B.data&&z.hasCompleted&&J.hasCompleted&&F?(0,j.jsx)(A,{clip:B.data,clips:U.data?.data,interactives:V.data?.data,currentUser:z.data,relatedVideos:r===`playlist`?G:{...G,videos:[]},hasProduct:_,queryParams:n.queryParams,audiences:K.data,canManageVideoAccess:I(t.ManageVideoAccess),pointsOfInterest:J.items,featureAccess:Y,tableOfContentsId:n.queryParams?.tocId,shouldShowSideTableOfContents:q,breadcrumbs:X,commonVideoProps:P,hasTopicDirectories:L,hasTheatreMode:R}):(0,j.jsx)(j.Fragment,{})}export{P as PlayClipView};
|
|
2
|
+
//# sourceMappingURL=DSZaceCq.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DSZaceCq.chunk.js","names":[],"sources":["../../src/shared/views/play-clip/PlayClipView.tsx"],"sourcesContent":["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 objectId: clip.data?.id,\n objectTypeId: clip.data?.typeId\n });\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 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}\n"],"mappings":"2sCA4CM,EAAY,EAAgB,iBAAiB,iBAAS,EAEtD,EAAa,CACjB,SAAU,EACV,UAAW,CACT,QAAS,CACX,CACF,EAEA,EAAa,aAAe,CAC1B,YAAa,CAAC,CAChB,EAEA,SAAgB,EAAa,EAAmC,CAC9D,GAAM,CAAE,UAAS,YAAW,OAAQ,EAAM,YAEpC,CAAE,cAAe,EAAY,EAC7B,CACJ,mBACA,gCACE,EAAoB,CAAE,gBAAiB,EAAgB,SAAU,KAAI,CAAC,EACpE,CAAE,kBAAmB,EAAe,EACpC,CAAE,sBAAqB,yBAA0B,EAAY,IAAI,EAEjE,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAO,EAA2B,EAAa,KAAK,EAAM,EAAE,CAAC,EAE7D,EAAe,EAA4C,EAAoB,kBAAkB,EAAM,EAAE,CAAC,EAC1G,EAAQ,EACZ,CAAC,CAAC,EAAK,MAAM,cAAgB,EAAc,MAAM,EAAK,KAAK,aAAa,EAAE,CAC5E,EACA,EAAc,CAAC,EAAM,IAAI,CAAC,EAE1B,IAAM,EAAa,EACjB,CAAC,CAAC,EAAK,MAAM,cAAgB,EAAa,WAAW,EAAK,KAAK,aAAa,EAAE,CAChF,EAEM,EAAe,EAA2B,EAAK,aAAe,EAAW,WAC7E,EAAa,KAAK,EAAM,GAAI,EAAuB,aAAa,CAAC,EAC7D,EAAgB,EAAoB,CACxC,MAAO,EAAM,KACb,UACA,YACA,YAAa,EACb,YAAa,EAAY,IAC3B,CAAC,EACK,EAAY,EAAyB,EACrC,EAAgC,EAAiC,EAEjE,EAAmB,EAAyB,EAAM,GAAI,EAAI,EAE1D,EAAgB,EAAsB,CAC1C,SAAU,EAAK,MAAM,GACrB,aAAc,EAAK,MAAM,MAC3B,CAAC,EAEK,EAAc,EAAe,CAAE,KAAM,EAAK,MAAM,IAAK,CAAC,EA0B5D,OAxBA,EAAmB,EAAmB,gBAAgB,CACpD,QAAS,EAAK,KACd,cAAe,CACb,cAAe,EACf,YAAa,YACb,kBAAmB,iBACrB,CACF,CAAC,CAAC,EAEF,EAAqB,EAAM,EAAY,CAAE,UAAW,EAAK,CAAC,EAC1D,EAAc,EAAc,QAAU,CAAC,CAAC,EACxC,EAAsB,CAAY,EAClC,EAAa,CAAE,GAAI,EAAM,GAAI,IAAK,OAAQ,CAAC,EAGzC,EAAK,MACL,EAAY,cACZ,EAAiB,cACjB,GAOA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EAAK,KACX,MAAO,EAAW,MAAM,KACxB,aAAc,EAAa,MAAM,KACjC,YAAa,EAAY,KAEzB,cAAe,IAAY,WAAa,EAAgB,CAAE,GAAG,EAAe,OAAQ,CAAC,CAAC,EAC1E,aACZ,YAAa,EAAM,YACnB,UAAW,EAAU,KACrB,qBAAsB,EAAe,EAAe,iBAAiB,EACrE,iBAAkB,EAAiB,MACpB,gBACf,kBAAmB,EAAM,aAAa,MACP,gCAClB,cACK,mBACG,sBACrB,eAAgB,CACjB,CAAA,GAtBM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAwBf"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./e1lz2ERJ2.chunk.js";import{t as l}from"./DGmmTRu72.chunk.js";import{t as u}from"./xwiwWcv12.chunk.js";import{t as d}from"./CVHQXNzi2.chunk.js";import{t as f}from"./BrbeV-Gn2.chunk.js";import{t as p}from"./BC8PeYqm.chunk.js";import{t as m}from"./CqrjHjAN.chunk.js";import{t as h}from"./eoAypzU3.chunk.js";import{t as g}from"./Kx-r9MXT.chunk.js";import{t as _}from"./CgCqPbjJ.chunk.js";import{t as v}from"./D_gWf2lC.chunk.js";import{t as y}from"./DruDe9vI.chunk.js";import{t as b}from"./7-GJWRH82.chunk.js";import{t as x}from"./dLd5d3X22.chunk.js";import{t as S}from"./C6-aC3vu.chunk.js";import{n as C,t as w}from"./BGhJ8TEx.chunk.js";import{t as T}from"./B3gsVN-_.chunk.js";import{n as E}from"./CpFtf-tI2.chunk.js";import{t as D}from"./DdwKMgn92.chunk.js";import{t as O}from"./9Eq3j62K.chunk.js";import{a as k,c as A,o as j,r as M}from"./DPySWa_g.chunk.js";import{t as N}from"./1pA_p8rV2.chunk.js";import{t as P}from"./j_TnVVKr.chunk.js";import{t as F}from"./C9XBZFiR.chunk.js";import{t as I}from"./DDmUhpUA.chunk.js";import{i as L,n as R,r as z}from"./0O76oUkQ.chunk.js";import{i as B,s as V}from"./B3ox8pZ0.chunk.js";import{n as H}from"./BLdZUAm2.chunk.js";import{t as ee}from"./-KvTbeQV.chunk.js";import{n as U,r as W,t as G}from"./DxCMdeNc2.chunk.js";import{o as K}from"./DUp_s5eM2.chunk.js";import{a as te,c as q,i as ne,n as re,o as ie,s as ae,t as oe}from"./DLGQjoMi2.chunk.js";import{t as se}from"./OuLaT5ha2.chunk.js";import{t as ce}from"./viauQ7-w2.chunk.js";var J=e(i());function Y(e){let{getGatedPermission:r,isLoaded:i}=T();J.useEffect(()=>{i&&r(n.ViewInsights)===`hard-gate`&&t.trigger({application:o.MY_SHARES,action:h.MyShares.HARD_GATE_INSIGHTS,args:[e]})},[i])}function le(e){let[t]=x(g.HIDE_STAFF_RESULTS),n=s(D.shareHeatMap(e)),r=W(e),i=n.data?.map(e=>e.userId).filter(e=>!!e)||[],a=N(i,m.getById);function o(e){return e.userId?a.items?.[e.userId]||{id:e.userId,deleted:!0}:r.items?.[e.sessionId]||{sessionId:e.sessionId}}let c={...r.items,...a.items};return{engagement:n.data?.filter(e=>{let n=c[e.userId||e.sessionId];return n&&n.userType===1&&t?null:e}).filter(e=>!!e),users:n.data?.map(e=>({...o(e),percentage:e.engagementRate})),hasCompleted:n.hasCompleted&&r.hasCompleted&&(!i?.length||a.hasCompleted)}}var X=a(),ue=r.encloseNamespace(`shared.insightsHeatmap`);function Z(e){let[t]=x(_.ANONYMISE_USERS),[r]=x(_.HIDE_STAFF_RESULTS);I();let{hasPermissions:i,getGatedPermission:a}=T(),o=s(y.getShare(e.shareId)),l=O.getClassroomIdFromShare(o.data),p=s(l&&c.getClassroom(l)),h=U(e.shareId),g=s(o.data&&f.getVideoRequest(o.data.objectId,o.data.objectTypeId)),b=s(v.config()),E=s(m.currentUser()),k=s(E.data&&u.yearGroups(E.data.customerId)),A=s(f.isInteractive(g.data)&&P.pendingReviews({interactives:[g.data].map(t=>({interactiveId:t.interactiveId,metadataId:t.id,shareId:e.shareId})),filters:{currentCustomerId:E.data.customerId,currentUserId:E.data.id}})).data?.[0]?.pendingReviewCount>0,j=s(D.shareHeatMapAggregation(e.shareId)),{users:M,engagement:N,hasCompleted:B}=le(e.shareId),V=s(D.shareAggregation(e.shareId,`year_group`)),H=s(o.data?.objectId&&w.createViewKey(o.data.objectId,C.MasterObject));S({title:g.data?ue(`pageTitle`,{video:g.data?.name}):null}),F([o,g]),Y(e.shareId);let W=o.hasCompleted&&g.hasCompleted&&b.hasCompleted&&j.hasCompleted&&V.hasCompleted&&H.hasCompleted&&k.hasCompleted;function G(){return o.data?.objectTypeId===d.Interactive?R(o.data,`heatmap`):z(o.data,`heatmap`)}return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:g.data,tabs:G(),hasSchoolAnalytics:i(n.ViewSchoolAnalytics),analyticsWebUrl:b.data?.analyticsWebUrl,share:o.data,yearGroups:k.data,classroom:p.data,markingRequired:A,hasData:!!N?.length,viewInsightsGatedPermission:a(n.ViewInsights)}),(0,X.jsx)(ee,{aggregateEngagement:j.data,individualEngagement:N,yearGroups:V.data,config:b.data,users:M,viewKey:H.data,hasDataLoaded:W,tableDataLoaded:B,anonymiseUsers:t,classroomStudents:h.items,hideStaffResults:r})]})}function de(e,t){return{resultsAppLink:j(e,null,t),questionsAppLink:k(e,null,t),heatmapAppLink:M(e,null,t)}}var fe=r.encloseNamespace(`insights.interactiveInsightsOverviewView`);function pe(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasPermissions:r,getGatedPermission:i}=T(),a=s(v.config()),o=s(m.currentUser()),l=s(o.data&&u.yearGroups(o.data.customerId)),d=s(y.getShare(e.shareId)),f=O.getClassroomIdFromShare(d.data),h=s(f&&c.getClassroom(f)),_=U(e.shareId),b=s(d.data?.objectId&&p.interactiveMetadata(d.data.objectId)),C=s(b.data?.interactiveId&&p.interactive(b.data.interactiveId)),w=G(e.shareId),E=s(D.shareHeatMap(e.shareId)),k=s(D.shareHeatMapAggregation(e.shareId)),A=s(D.shareAggregation(e.shareId,`os_name`));S({title:b.data?fe(`pageTitle`,{video:b.data?.name}):null}),F([d,C,b]),Y(e.shareId);let j=a.hasCompleted&&b.hasCompleted&&C.data&&k.hasCompleted&&E.hasCompleted&&A.hasCompleted&&w.hasCompleted&&l.hasCompleted,M=de(d.data),N=j&&K(C.data,w.data,H),P=N&&N.markingRequired.length>0;return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:b.data,tabs:R(d.data,`insights`),hasSchoolAnalytics:r(n.ViewSchoolAnalytics),analyticsWebUrl:a.data?.analyticsWebUrl,share:d.data,yearGroups:l.data,classroom:h.data,markingRequired:P,hasData:!!w.data?.students.length,viewInsightsGatedPermission:i(n.ViewInsights)}),(0,X.jsx)(oe,{aggregateEngagement:k.data,individualEngagement:E.data,interactive:C.data,interactiveMetadata:b.data,interactiveInsightsAppLinks:M,classroomStudents:_.items,results:w.data,osCount:A.data,config:a.data,anonymiseUsers:t,hasDataLoaded:j,share:d.data})]})}var me=r.encloseNamespace(`shared.interactiveInsightsQuestionsView`);function he(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasPermissions:r,getGatedPermission:i}=T(),a=s(m.currentUser()),o=s(v.config()),l=s(a.data&&u.yearGroups(a.data.customerId)),d=s(y.getShare(e.shareId)),f=O.getClassroomIdFromShare(d.data),h=s(f&&c.getClassroom(f)),_=s(d.data?.objectId&&p.interactiveMetadata(d.data?.objectId)),b=s(_.data?.interactiveId&&p.interactive(_.data.interactiveId)),C=G(e.shareId);S({title:_.data?me(`pageTitle`,{video:_.data?.name}):null}),F([d,b,_]),Y(e.shareId);let w=b.data&&_.data&&!!C.data&&!!l.data,E=w&&K(b.data,C.data,H),D=E&&E.markingRequired.length>0;return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{tabs:R(d.data,`questions`),video:_.data,hasSchoolAnalytics:r(n.ViewSchoolAnalytics),analyticsWebUrl:o.data?.analyticsWebUrl,share:d.data,yearGroups:l.data,classroom:h.data,markingRequired:D,hasData:!!C.data?.students.length,viewInsightsGatedPermission:i(n.ViewInsights)}),(0,X.jsx)(se,{interactive:b.data,interactiveMetadata:_.data,interactionId:e.interactionId,config:o.data,sortBy:e.sortBy,isFetching:!C.hasCompleted||b.isFetching,anonymiseUsers:t,results:C.data,hasDataLoaded:w})]})}var ge=r.encloseNamespace(`insights.interactiveInsightsStudents`);function _e(e){let[r]=x(g.ANONYMISE_USERS),[i]=x(g.HIDE_STAFF_RESULTS),{hasPermissions:a,getGatedPermission:l}=T(),d=s(m.currentUser()),f=s(v.config()),_=s(d.data&&u.yearGroups(d.data.customerId)),b=s(y.getShare(e.shareId)),C=O.getClassroomIdFromShare(b.data),w=s(C&&c.getClassroom(C)),E=s(b.data?.objectId&&p.interactiveMetadata(b.data.objectId)),D=s(E.data?.interactiveId&&p.interactive(E.data.interactiveId)),k=G(e.shareId),A=D.data&&E.data&&!!k.data&&!!_.data,j=A&&K(D.data,k.data,H),M=j&&j.markingRequired.length>0;S({title:E.data?ge(`pageTitle`,{video:E.data?.name}):null}),F([b,D,E]),Y(e.shareId);function N(n,r,i){t.trigger({application:o.MY_SHARES,action:h.MyShares.INTERACTIVE_STUDENT_RESULTS,params:{studentId:n.id,shareId:e.shareId,interactionId:i,sessionId:n.sessionId}})}return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{tabs:R(b.data,`results`),video:E.data,hasSchoolAnalytics:a(n.ViewSchoolAnalytics),analyticsWebUrl:f.data?.analyticsWebUrl,share:b.data,yearGroups:_.data,classroom:w.data,markingRequired:M,hasData:!!k.data?.students.length,viewInsightsGatedPermission:l(n.ViewInsights)}),(0,X.jsx)(ce,{interactiveMetadata:E.data,viewStudentResults:N,interactive:D.data,results:k.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:k.isFetching,anonymiseUsers:r,hasDataLoaded:A,config:f.data,hideStaffResults:i})]})}var ve=r.encloseNamespace(`shared.insightStudentsNotWatched`);function ye(e){let t=e.students?.filter(t=>!e.watchedIds?.includes(t.id))||[];return(0,X.jsx)(B,{title:ve(`title`),svg:ne,svgClassName:`bg-light-teal text-teal`,children:(0,X.jsx)(q,{students:t,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:ve(`studentsDisplay`),anonymiseUsers:e.anonymiseUsers})})}var Q=r.encloseNamespace(`shared.insightStudentsWatched`);function be(e){return(0,X.jsx)(B,{title:Q(`title`),svg:ae,svgClassName:`bg-light-indigo text-indigo`,count:e.students.length,children:(0,X.jsx)(q,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:Q(`studentsDisplay`),appLink:e.heatmapAppLink,appLinkText:Q(`viewAll`),anonymiseUsers:e.anonymiseUsers})})}var $={partialInsights:`_partialInsights_sk6kv_1`};function xe(){return(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h2`,{className:`h4 w-25 partial-loading-background`,children:`\xA0`}),(0,X.jsx)(`div`,{className:`row g-3 mb-5`,children:(0,X.jsx)(`div`,{className:`col-12`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})})}),(0,X.jsx)(`h2`,{className:`h4 w-25 partial-loading-background`,children:`\xA0`}),(0,X.jsxs)(`div`,{className:`row g-3 mb-5`,children:[(0,X.jsx)(`div`,{className:`col-6`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})}),(0,X.jsx)(`div`,{className:`col-6`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})})]})]})}var Se=`insights.videoInsightsOverview`;function Ce(e){let t=e.hasDataLoaded&&!!e.viewers?.length;function n(){return e.viewers?Object.values(e.viewers):[]}return(0,X.jsxs)(X.Fragment,{children:[!e.hasDataLoaded&&(0,X.jsx)(xe,{}),e.hasDataLoaded&&(0,X.jsxs)(re,{video:e.video,hasData:t,share:e.share,children:[(0,X.jsxs)(`section`,{className:`mb-5`,children:[(0,X.jsxs)(`h2`,{className:`h4`,children:[(0,X.jsx)(E,{namespace:Se,phrase:`studentViewing`}),(0,X.jsxs)(`span`,{children:[`: `,n().length,e.classroomStudents?`/${e.classroomStudents.length}`:``]})]}),(0,X.jsxs)(`div`,{className:`row g-3`,children:[!!e.classroomStudents?.length&&(0,X.jsx)(`div`,{className:`col-12 col-md`,children:(0,X.jsx)(ye,{students:e.classroomStudents,watchedIds:e.viewers?.map(e=>e.id),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:b.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})}),(0,X.jsx)(`div`,{className:`col-12 col-md`,children:(0,X.jsx)(be,{students:n(),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:b.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})})]})]}),(0,X.jsxs)(`section`,{className:`mb-5`,children:[(0,X.jsx)(`h2`,{className:`h4`,children:(0,X.jsx)(E,{namespace:Se,phrase:e.hasClassrooms?`classEngagement`:`engagement`})}),(0,X.jsxs)(`div`,{className:`row g-3`,children:[(0,X.jsx)(`div`,{className:`col-12 col-md-6`,children:(0,X.jsx)(ie,{osCount:e.osCount})}),(0,X.jsx)(`div`,{className:`col-12 col-md-6`,children:(0,X.jsx)(te,{engagement:e.aggregateEngagement,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,engagementRate:V(e.individualEngagement)})})]})]})]})]})}function we(e,t){return{heatmapAppLink:M(e,null,t)}}var Te=r.encloseNamespace(`insights.videoInsightsOverviewView`);function Ee(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasClassrooms:r}=l(null),{hasPermissions:i,getGatedPermission:a}=T(),o=s(v.config()),d=s(m.currentUser()),p=s(d.data&&u.yearGroups(d.data.customerId)),h=s(y.getShare(e.shareId)),_=O.getClassroomIdFromShare(h.data),b=s(_&&c.getClassroom(_)),C=U(e.shareId),w=s(h.data&&f.getVideoRequest(h.data.objectId,h.data.objectTypeId));S({title:w.data?Te(`pageTitle`,{video:w.data?.name}):null}),F([h,w]),Y(e.shareId);let E=s(D.shareHeatMap(e.shareId)),k=s(D.shareHeatMapAggregation(e.shareId)),A=s(D.shareAggregation(e.shareId,`os_name`)),{users:j,hasCompleted:M}=le(e.shareId),N=o.hasCompleted&&w.hasCompleted&&E.hasCompleted&&k.hasCompleted&&A.hasCompleted&&p.data&&M,P=we(h.data);return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:w.data,classroom:b.data,tabs:z(h.data,`insights`),hasSchoolAnalytics:i(n.ViewSchoolAnalytics),analyticsWebUrl:o.data?.analyticsWebUrl,share:h.data,yearGroups:p.data,hasData:N&&!!j?.length,viewInsightsGatedPermission:a(n.ViewInsights)}),(0,X.jsx)(Ce,{hasDataLoaded:!!N,hasClassrooms:r,anonymiseUsers:t,videoInsightsAppLinks:P,config:o.data,video:w.data,classroomStudents:C.items,viewers:j,individualEngagement:E.data,aggregateEngagement:k.data,share:h.data,osCount:A.data})]})}var De={[d.Video]:{insights:e=>(0,X.jsx)(Ee,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId})},[d.Clip]:{insights:e=>(0,X.jsx)(Ee,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId})},[d.Interactive]:{insights:e=>(0,X.jsx)(pe,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId}),questions:e=>(0,X.jsx)(he,{interactionId:e.interactionId,sortBy:e.sortBy,shareId:e.share.shareId}),results:e=>(0,X.jsx)(_e,{filterBy:e.filterBy,sortBy:e.sortBy,shareId:e.share.shareId})}};function Oe(e){let{share:t,tab:n}=e,r=De[t?.objectTypeId]?.[n];return r?r(e):(0,X.jsx)(X.Fragment,{})}function ke(e){let r=s(y.getShare(e.shareId)),{hasPermissions:i,isLoaded:a}=T(),c=Oe({share:r.data,tab:e.tab,interactionId:e.interactionId,sortBy:e.sortBy,filterBy:e.filterBy});return J.useEffect(()=>{if(!e.showShareOptions||!r.data)return;let n=A(r.data);n&&t.trigger(n)},[r.data,e.showShareOptions]),J.useEffect(()=>{a&&(i([n.ViewInsights,n.ViewAnalytics])||t.trigger({application:o.MY_SHARES,action:h.MyShares.HOME}))},[a]),a?(0,X.jsx)(X.Fragment,{children:c}):(0,X.jsx)(X.Fragment,{})}export{ke as BaseInsightsView};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./e1lz2ERJ2.chunk.js";import{t as l}from"./DGmmTRu72.chunk.js";import{t as u}from"./xwiwWcv12.chunk.js";import{t as d}from"./CVHQXNzi2.chunk.js";import{t as f}from"./BrbeV-Gn2.chunk.js";import{t as p}from"./BC8PeYqm.chunk.js";import{t as m}from"./CqrjHjAN.chunk.js";import{t as h}from"./eoAypzU3.chunk.js";import{t as g}from"./Kx-r9MXT.chunk.js";import{t as _}from"./CgCqPbjJ.chunk.js";import{t as v}from"./D_gWf2lC.chunk.js";import{t as y}from"./DruDe9vI.chunk.js";import{t as b}from"./7-GJWRH82.chunk.js";import{t as x}from"./dLd5d3X22.chunk.js";import{t as S}from"./C6-aC3vu.chunk.js";import{n as C,t as w}from"./BGhJ8TEx.chunk.js";import{t as T}from"./B3gsVN-_.chunk.js";import{n as E}from"./CpFtf-tI2.chunk.js";import{t as D}from"./DdwKMgn92.chunk.js";import{t as O}from"./9Eq3j62K.chunk.js";import{a as k,c as A,o as j,r as M}from"./DPySWa_g.chunk.js";import{t as N}from"./1pA_p8rV2.chunk.js";import{t as P}from"./j_TnVVKr.chunk.js";import{t as F}from"./C9XBZFiR.chunk.js";import{t as I}from"./DDmUhpUA.chunk.js";import{i as L,n as R,r as z}from"./0O76oUkQ.chunk.js";import{i as B,s as V}from"./B3ox8pZ0.chunk.js";import{n as H}from"./BLdZUAm2.chunk.js";import{t as ee}from"./DhcRnxkp.chunk.js";import{n as U,r as W,t as G}from"./DxCMdeNc2.chunk.js";import{o as K}from"./DUp_s5eM2.chunk.js";import{a as te,c as q,i as ne,n as re,o as ie,s as ae,t as oe}from"./DLGQjoMi2.chunk.js";import{t as se}from"./OuLaT5ha2.chunk.js";import{t as ce}from"./viauQ7-w2.chunk.js";var J=e(i());function Y(e){let{getGatedPermission:r,isLoaded:i}=T();J.useEffect(()=>{i&&r(n.ViewInsights)===`hard-gate`&&t.trigger({application:o.MY_SHARES,action:h.MyShares.HARD_GATE_INSIGHTS,args:[e]})},[i])}function le(e){let[t]=x(g.HIDE_STAFF_RESULTS),n=s(D.shareHeatMap(e)),r=W(e),i=n.data?.map(e=>e.userId).filter(e=>!!e)||[],a=N(i,m.getById);function o(e){return e.userId?a.items?.[e.userId]||{id:e.userId,deleted:!0}:r.items?.[e.sessionId]||{sessionId:e.sessionId}}let c={...r.items,...a.items};return{engagement:n.data?.filter(e=>{let n=c[e.userId||e.sessionId];return n&&n.userType===1&&t?null:e}).filter(e=>!!e),users:n.data?.map(e=>({...o(e),percentage:e.engagementRate})),hasCompleted:n.hasCompleted&&r.hasCompleted&&(!i?.length||a.hasCompleted)}}var X=a(),ue=r.encloseNamespace(`shared.insightsHeatmap`);function Z(e){let[t]=x(_.ANONYMISE_USERS),[r]=x(_.HIDE_STAFF_RESULTS);I();let{hasPermissions:i,getGatedPermission:a}=T(),o=s(y.getShare(e.shareId)),l=O.getClassroomIdFromShare(o.data),p=s(l&&c.getClassroom(l)),h=U(e.shareId),g=s(o.data&&f.getVideoRequest(o.data.objectId,o.data.objectTypeId)),b=s(v.config()),E=s(m.currentUser()),k=s(E.data&&u.yearGroups(E.data.customerId)),A=s(f.isInteractive(g.data)&&P.pendingReviews({interactives:[g.data].map(t=>({interactiveId:t.interactiveId,metadataId:t.id,shareId:e.shareId})),filters:{currentCustomerId:E.data.customerId,currentUserId:E.data.id}})).data?.[0]?.pendingReviewCount>0,j=s(D.shareHeatMapAggregation(e.shareId)),{users:M,engagement:N,hasCompleted:B}=le(e.shareId),V=s(D.shareAggregation(e.shareId,`year_group`)),H=s(o.data?.objectId&&w.createViewKey(o.data.objectId,C.MasterObject));S({title:g.data?ue(`pageTitle`,{video:g.data?.name}):null}),F([o,g]),Y(e.shareId);let W=o.hasCompleted&&g.hasCompleted&&b.hasCompleted&&j.hasCompleted&&V.hasCompleted&&H.hasCompleted&&k.hasCompleted;function G(){return o.data?.objectTypeId===d.Interactive?R(o.data,`heatmap`):z(o.data,`heatmap`)}return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:g.data,tabs:G(),hasSchoolAnalytics:i(n.ViewSchoolAnalytics),analyticsWebUrl:b.data?.analyticsWebUrl,share:o.data,yearGroups:k.data,classroom:p.data,markingRequired:A,hasData:!!N?.length,viewInsightsGatedPermission:a(n.ViewInsights)}),(0,X.jsx)(ee,{aggregateEngagement:j.data,individualEngagement:N,yearGroups:V.data,config:b.data,users:M,viewKey:H.data,hasDataLoaded:W,tableDataLoaded:B,anonymiseUsers:t,classroomStudents:h.items,hideStaffResults:r})]})}function de(e,t){return{resultsAppLink:j(e,null,t),questionsAppLink:k(e,null,t),heatmapAppLink:M(e,null,t)}}var fe=r.encloseNamespace(`insights.interactiveInsightsOverviewView`);function pe(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasPermissions:r,getGatedPermission:i}=T(),a=s(v.config()),o=s(m.currentUser()),l=s(o.data&&u.yearGroups(o.data.customerId)),d=s(y.getShare(e.shareId)),f=O.getClassroomIdFromShare(d.data),h=s(f&&c.getClassroom(f)),_=U(e.shareId),b=s(d.data?.objectId&&p.interactiveMetadata(d.data.objectId)),C=s(b.data?.interactiveId&&p.interactive(b.data.interactiveId)),w=G(e.shareId),E=s(D.shareHeatMap(e.shareId)),k=s(D.shareHeatMapAggregation(e.shareId)),A=s(D.shareAggregation(e.shareId,`os_name`));S({title:b.data?fe(`pageTitle`,{video:b.data?.name}):null}),F([d,C,b]),Y(e.shareId);let j=a.hasCompleted&&b.hasCompleted&&C.data&&k.hasCompleted&&E.hasCompleted&&A.hasCompleted&&w.hasCompleted&&l.hasCompleted,M=de(d.data),N=j&&K(C.data,w.data,H),P=N&&N.markingRequired.length>0;return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:b.data,tabs:R(d.data,`insights`),hasSchoolAnalytics:r(n.ViewSchoolAnalytics),analyticsWebUrl:a.data?.analyticsWebUrl,share:d.data,yearGroups:l.data,classroom:h.data,markingRequired:P,hasData:!!w.data?.students.length,viewInsightsGatedPermission:i(n.ViewInsights)}),(0,X.jsx)(oe,{aggregateEngagement:k.data,individualEngagement:E.data,interactive:C.data,interactiveMetadata:b.data,interactiveInsightsAppLinks:M,classroomStudents:_.items,results:w.data,osCount:A.data,config:a.data,anonymiseUsers:t,hasDataLoaded:j,share:d.data})]})}var me=r.encloseNamespace(`shared.interactiveInsightsQuestionsView`);function he(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasPermissions:r,getGatedPermission:i}=T(),a=s(m.currentUser()),o=s(v.config()),l=s(a.data&&u.yearGroups(a.data.customerId)),d=s(y.getShare(e.shareId)),f=O.getClassroomIdFromShare(d.data),h=s(f&&c.getClassroom(f)),_=s(d.data?.objectId&&p.interactiveMetadata(d.data?.objectId)),b=s(_.data?.interactiveId&&p.interactive(_.data.interactiveId)),C=G(e.shareId);S({title:_.data?me(`pageTitle`,{video:_.data?.name}):null}),F([d,b,_]),Y(e.shareId);let w=b.data&&_.data&&!!C.data&&!!l.data,E=w&&K(b.data,C.data,H),D=E&&E.markingRequired.length>0;return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{tabs:R(d.data,`questions`),video:_.data,hasSchoolAnalytics:r(n.ViewSchoolAnalytics),analyticsWebUrl:o.data?.analyticsWebUrl,share:d.data,yearGroups:l.data,classroom:h.data,markingRequired:D,hasData:!!C.data?.students.length,viewInsightsGatedPermission:i(n.ViewInsights)}),(0,X.jsx)(se,{interactive:b.data,interactiveMetadata:_.data,interactionId:e.interactionId,config:o.data,sortBy:e.sortBy,isFetching:!C.hasCompleted||b.isFetching,anonymiseUsers:t,results:C.data,hasDataLoaded:w})]})}var ge=r.encloseNamespace(`insights.interactiveInsightsStudents`);function _e(e){let[r]=x(g.ANONYMISE_USERS),[i]=x(g.HIDE_STAFF_RESULTS),{hasPermissions:a,getGatedPermission:l}=T(),d=s(m.currentUser()),f=s(v.config()),_=s(d.data&&u.yearGroups(d.data.customerId)),b=s(y.getShare(e.shareId)),C=O.getClassroomIdFromShare(b.data),w=s(C&&c.getClassroom(C)),E=s(b.data?.objectId&&p.interactiveMetadata(b.data.objectId)),D=s(E.data?.interactiveId&&p.interactive(E.data.interactiveId)),k=G(e.shareId),A=D.data&&E.data&&!!k.data&&!!_.data,j=A&&K(D.data,k.data,H),M=j&&j.markingRequired.length>0;S({title:E.data?ge(`pageTitle`,{video:E.data?.name}):null}),F([b,D,E]),Y(e.shareId);function N(n,r,i){t.trigger({application:o.MY_SHARES,action:h.MyShares.INTERACTIVE_STUDENT_RESULTS,params:{studentId:n.id,shareId:e.shareId,interactionId:i,sessionId:n.sessionId}})}return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{tabs:R(b.data,`results`),video:E.data,hasSchoolAnalytics:a(n.ViewSchoolAnalytics),analyticsWebUrl:f.data?.analyticsWebUrl,share:b.data,yearGroups:_.data,classroom:w.data,markingRequired:M,hasData:!!k.data?.students.length,viewInsightsGatedPermission:l(n.ViewInsights)}),(0,X.jsx)(ce,{interactiveMetadata:E.data,viewStudentResults:N,interactive:D.data,results:k.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:k.isFetching,anonymiseUsers:r,hasDataLoaded:A,config:f.data,hideStaffResults:i})]})}var ve=r.encloseNamespace(`shared.insightStudentsNotWatched`);function ye(e){let t=e.students?.filter(t=>!e.watchedIds?.includes(t.id))||[];return(0,X.jsx)(B,{title:ve(`title`),svg:ne,svgClassName:`bg-light-teal text-teal`,children:(0,X.jsx)(q,{students:t,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:ve(`studentsDisplay`),anonymiseUsers:e.anonymiseUsers})})}var Q=r.encloseNamespace(`shared.insightStudentsWatched`);function be(e){return(0,X.jsx)(B,{title:Q(`title`),svg:ae,svgClassName:`bg-light-indigo text-indigo`,count:e.students.length,children:(0,X.jsx)(q,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:Q(`studentsDisplay`),appLink:e.heatmapAppLink,appLinkText:Q(`viewAll`),anonymiseUsers:e.anonymiseUsers})})}var $={partialInsights:`_partialInsights_sk6kv_1`};function xe(){return(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h2`,{className:`h4 w-25 partial-loading-background`,children:`\xA0`}),(0,X.jsx)(`div`,{className:`row g-3 mb-5`,children:(0,X.jsx)(`div`,{className:`col-12`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})})}),(0,X.jsx)(`h2`,{className:`h4 w-25 partial-loading-background`,children:`\xA0`}),(0,X.jsxs)(`div`,{className:`row g-3 mb-5`,children:[(0,X.jsx)(`div`,{className:`col-6`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})}),(0,X.jsx)(`div`,{className:`col-6`,children:(0,X.jsx)(`div`,{className:`${$.partialInsights} rounded partial-loading-background`})})]})]})}var Se=`insights.videoInsightsOverview`;function Ce(e){let t=e.hasDataLoaded&&!!e.viewers?.length;function n(){return e.viewers?Object.values(e.viewers):[]}return(0,X.jsxs)(X.Fragment,{children:[!e.hasDataLoaded&&(0,X.jsx)(xe,{}),e.hasDataLoaded&&(0,X.jsxs)(re,{video:e.video,hasData:t,share:e.share,children:[(0,X.jsxs)(`section`,{className:`mb-5`,children:[(0,X.jsxs)(`h2`,{className:`h4`,children:[(0,X.jsx)(E,{namespace:Se,phrase:`studentViewing`}),(0,X.jsxs)(`span`,{children:[`: `,n().length,e.classroomStudents?`/${e.classroomStudents.length}`:``]})]}),(0,X.jsxs)(`div`,{className:`row g-3`,children:[!!e.classroomStudents?.length&&(0,X.jsx)(`div`,{className:`col-12 col-md`,children:(0,X.jsx)(ye,{students:e.classroomStudents,watchedIds:e.viewers?.map(e=>e.id),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:b.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})}),(0,X.jsx)(`div`,{className:`col-12 col-md`,children:(0,X.jsx)(be,{students:n(),imageCdnUrl:e.config.imageCdnUrl,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,imageUrl:b.Insights.AVATAR,anonymiseUsers:e.anonymiseUsers})})]})]}),(0,X.jsxs)(`section`,{className:`mb-5`,children:[(0,X.jsx)(`h2`,{className:`h4`,children:(0,X.jsx)(E,{namespace:Se,phrase:e.hasClassrooms?`classEngagement`:`engagement`})}),(0,X.jsxs)(`div`,{className:`row g-3`,children:[(0,X.jsx)(`div`,{className:`col-12 col-md-6`,children:(0,X.jsx)(ie,{osCount:e.osCount})}),(0,X.jsx)(`div`,{className:`col-12 col-md-6`,children:(0,X.jsx)(te,{engagement:e.aggregateEngagement,heatmapAppLink:e.videoInsightsAppLinks.heatmapAppLink,engagementRate:V(e.individualEngagement)})})]})]})]})]})}function we(e,t){return{heatmapAppLink:M(e,null,t)}}var Te=r.encloseNamespace(`insights.videoInsightsOverviewView`);function Ee(e){let[t]=x(g.ANONYMISE_USERS);I();let{hasClassrooms:r}=l(null),{hasPermissions:i,getGatedPermission:a}=T(),o=s(v.config()),d=s(m.currentUser()),p=s(d.data&&u.yearGroups(d.data.customerId)),h=s(y.getShare(e.shareId)),_=O.getClassroomIdFromShare(h.data),b=s(_&&c.getClassroom(_)),C=U(e.shareId),w=s(h.data&&f.getVideoRequest(h.data.objectId,h.data.objectTypeId));S({title:w.data?Te(`pageTitle`,{video:w.data?.name}):null}),F([h,w]),Y(e.shareId);let E=s(D.shareHeatMap(e.shareId)),k=s(D.shareHeatMapAggregation(e.shareId)),A=s(D.shareAggregation(e.shareId,`os_name`)),{users:j,hasCompleted:M}=le(e.shareId),N=o.hasCompleted&&w.hasCompleted&&E.hasCompleted&&k.hasCompleted&&A.hasCompleted&&p.data&&M,P=we(h.data);return(0,X.jsxs)(`div`,{className:`px-3`,children:[(0,X.jsx)(L,{video:w.data,classroom:b.data,tabs:z(h.data,`insights`),hasSchoolAnalytics:i(n.ViewSchoolAnalytics),analyticsWebUrl:o.data?.analyticsWebUrl,share:h.data,yearGroups:p.data,hasData:N&&!!j?.length,viewInsightsGatedPermission:a(n.ViewInsights)}),(0,X.jsx)(Ce,{hasDataLoaded:!!N,hasClassrooms:r,anonymiseUsers:t,videoInsightsAppLinks:P,config:o.data,video:w.data,classroomStudents:C.items,viewers:j,individualEngagement:E.data,aggregateEngagement:k.data,share:h.data,osCount:A.data})]})}var De={[d.Video]:{insights:e=>(0,X.jsx)(Ee,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId})},[d.Clip]:{insights:e=>(0,X.jsx)(Ee,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId})},[d.Interactive]:{insights:e=>(0,X.jsx)(pe,{shareId:e.share.shareId}),heatmap:e=>(0,X.jsx)(Z,{shareId:e.share.shareId}),questions:e=>(0,X.jsx)(he,{interactionId:e.interactionId,sortBy:e.sortBy,shareId:e.share.shareId}),results:e=>(0,X.jsx)(_e,{filterBy:e.filterBy,sortBy:e.sortBy,shareId:e.share.shareId})}};function Oe(e){let{share:t,tab:n}=e,r=De[t?.objectTypeId]?.[n];return r?r(e):(0,X.jsx)(X.Fragment,{})}function ke(e){let r=s(y.getShare(e.shareId)),{hasPermissions:i,isLoaded:a}=T(),c=Oe({share:r.data,tab:e.tab,interactionId:e.interactionId,sortBy:e.sortBy,filterBy:e.filterBy});return J.useEffect(()=>{if(!e.showShareOptions||!r.data)return;let n=A(r.data);n&&t.trigger(n)},[r.data,e.showShareOptions]),J.useEffect(()=>{a&&(i([n.ViewInsights,n.ViewAnalytics])||t.trigger({application:o.MY_SHARES,action:h.MyShares.HOME}))},[a]),a?(0,X.jsx)(X.Fragment,{children:c}):(0,X.jsx)(X.Fragment,{})}export{ke as BaseInsightsView};
|
|
2
|
+
//# sourceMappingURL=D_1m0b_a2.chunk.js.map
|