@clickview/exchange 0.63.0 → 0.64.0-rc.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 +662 -633
- package/dist/bundles.json +1 -1
- package/dist/css/DuPOYFVx.chunk.css +1 -0
- package/dist/en.json +1 -1
- package/dist/scripts/0WVIsJXw.chunk.js +2 -0
- package/dist/scripts/0WVIsJXw.chunk.js.map +1 -0
- package/dist/scripts/{CoK2sqzN2.chunk.js → B0BkP9zj2.chunk.js} +2 -2
- package/dist/scripts/{CoK2sqzN2.chunk.js.map → B0BkP9zj2.chunk.js.map} +1 -1
- package/dist/scripts/{dkfSCDWH2.chunk.js → B0CItJhp2.chunk.js} +2 -2
- package/dist/scripts/{dkfSCDWH2.chunk.js.map → B0CItJhp2.chunk.js.map} +1 -1
- package/dist/scripts/B0NqlFZf.chunk.js +2 -0
- package/dist/scripts/B0NqlFZf.chunk.js.map +1 -0
- package/dist/scripts/B1i9atik.chunk.js.map +1 -1
- package/dist/scripts/{CYFRcx63.chunk.js → B3S7B746.chunk.js} +2 -2
- package/dist/scripts/{CYFRcx63.chunk.js.map → B3S7B746.chunk.js.map} +1 -1
- package/dist/scripts/{BnbM9YhY.chunk.js → B5B9BCxo.chunk.js} +2 -2
- package/dist/scripts/{BnbM9YhY.chunk.js.map → B5B9BCxo.chunk.js.map} +1 -1
- package/dist/scripts/{C3K3VtRR2.chunk.js → BKYpYiMb2.chunk.js} +2 -2
- package/dist/scripts/{C3K3VtRR2.chunk.js.map → BKYpYiMb2.chunk.js.map} +1 -1
- package/dist/scripts/{D3Jgk2dT.chunk.js → BLXI9pzb.chunk.js} +3 -3
- package/dist/scripts/{D3Jgk2dT.chunk.js.map → BLXI9pzb.chunk.js.map} +1 -1
- package/dist/scripts/{CDXcKno52.chunk.js → BLrooXWI2.chunk.js} +2 -2
- package/dist/scripts/{CDXcKno52.chunk.js.map → BLrooXWI2.chunk.js.map} +1 -1
- package/dist/scripts/{-x9MMtVv.chunk.js → BQVqfJL8.chunk.js} +2 -2
- package/dist/scripts/{-x9MMtVv.chunk.js.map → BQVqfJL8.chunk.js.map} +1 -1
- package/dist/scripts/{jErHNuXU2.chunk.js → BU2ULxCS2.chunk.js} +2 -2
- package/dist/scripts/{jErHNuXU2.chunk.js.map → BU2ULxCS2.chunk.js.map} +1 -1
- package/dist/scripts/{B6EmIhMh.chunk.js → BU_B6gyd.chunk.js} +2 -2
- package/dist/scripts/{B6EmIhMh.chunk.js.map → BU_B6gyd.chunk.js.map} +1 -1
- package/dist/scripts/{DHV6S1fA2.chunk.js → BbaX1lfI2.chunk.js} +2 -2
- package/dist/scripts/{DHV6S1fA2.chunk.js.map → BbaX1lfI2.chunk.js.map} +1 -1
- package/dist/scripts/{D6EZoO4S2.chunk.js → Bbaycd7V.chunk.js} +2 -2
- package/dist/scripts/Bbaycd7V.chunk.js.map +1 -0
- package/dist/scripts/{CeeAb-HT2.chunk.js → BgLWPZ7H2.chunk.js} +2 -2
- package/dist/scripts/{CeeAb-HT2.chunk.js.map → BgLWPZ7H2.chunk.js.map} +1 -1
- package/dist/scripts/{CjNkj1Q92.chunk.js → Bj6lJgAv2.chunk.js} +1 -1
- package/dist/scripts/{CjNkj1Q92.chunk.js.map → Bj6lJgAv2.chunk.js.map} +1 -1
- package/dist/scripts/{Da2KHzN02.chunk.js → BoWMmXN02.chunk.js} +2 -2
- package/dist/scripts/{Da2KHzN02.chunk.js.map → BoWMmXN02.chunk.js.map} +1 -1
- package/dist/scripts/{mkasrghR2.chunk.js → BpzuiXcd2.chunk.js} +2 -2
- package/dist/scripts/{mkasrghR2.chunk.js.map → BpzuiXcd2.chunk.js.map} +1 -1
- package/dist/scripts/{BEyI0jsC2.chunk.js → Bswd1QrZ2.chunk.js} +2 -2
- package/dist/scripts/{BEyI0jsC2.chunk.js.map → Bswd1QrZ2.chunk.js.map} +1 -1
- package/dist/scripts/{BaXT2aKo2.chunk.js → ByC5ZDQ-2.chunk.js} +2 -2
- package/dist/scripts/{BaXT2aKo2.chunk.js.map → ByC5ZDQ-2.chunk.js.map} +1 -1
- package/dist/scripts/{D-ivDlyL.chunk.js → C-jHArp-.chunk.js} +2 -2
- package/dist/scripts/{D-ivDlyL.chunk.js.map → C-jHArp-.chunk.js.map} +1 -1
- package/dist/scripts/{BrEvIvRP.chunk.js → C3cl5FmM.chunk.js} +2 -2
- package/dist/scripts/{BrEvIvRP.chunk.js.map → C3cl5FmM.chunk.js.map} +1 -1
- package/dist/scripts/{c2oA1XgG.chunk.js → C4hd6q9D.chunk.js} +2 -2
- package/dist/scripts/{c2oA1XgG.chunk.js.map → C4hd6q9D.chunk.js.map} +1 -1
- package/dist/scripts/{DsolW3Wd2.chunk.js → C8dtRvC52.chunk.js} +2 -2
- package/dist/scripts/{DsolW3Wd2.chunk.js.map → C8dtRvC52.chunk.js.map} +1 -1
- package/dist/scripts/{BmEexpMP2.chunk.js → C8lms6Rf2.chunk.js} +1 -1
- package/dist/scripts/{BmEexpMP2.chunk.js.map → C8lms6Rf2.chunk.js.map} +1 -1
- package/dist/scripts/{s776Po8a2.chunk.js → C9AjegY32.chunk.js} +2 -2
- package/dist/scripts/{s776Po8a2.chunk.js.map → C9AjegY32.chunk.js.map} +1 -1
- package/dist/scripts/{DgSFdSfV.chunk.js → CBwR65WF.chunk.js} +2 -2
- package/dist/scripts/{DgSFdSfV.chunk.js.map → CBwR65WF.chunk.js.map} +1 -1
- package/dist/scripts/{D36Shrdb2.chunk.js → CEOaf0tK2.chunk.js} +2 -2
- package/dist/scripts/{D36Shrdb2.chunk.js.map → CEOaf0tK2.chunk.js.map} +1 -1
- package/dist/scripts/CFdu6aud.chunk.js +2 -0
- package/dist/scripts/CFdu6aud.chunk.js.map +1 -0
- package/dist/scripts/{CYfnBEtT2.chunk.js → CHojcsxD2.chunk.js} +1 -1
- package/dist/scripts/{CYfnBEtT2.chunk.js.map → CHojcsxD2.chunk.js.map} +1 -1
- package/dist/scripts/{BibFbDqs.chunk.js → CIxLO-TM.chunk.js} +2 -2
- package/dist/scripts/{BibFbDqs.chunk.js.map → CIxLO-TM.chunk.js.map} +1 -1
- package/dist/scripts/{CAQAUQMB.chunk.js → CLTKXoqB.chunk.js} +2 -2
- package/dist/scripts/{CAQAUQMB.chunk.js.map → CLTKXoqB.chunk.js.map} +1 -1
- package/dist/scripts/{DGy73Ett2.chunk.js → CNuGo1LQ2.chunk.js} +2 -2
- package/dist/scripts/{DGy73Ett2.chunk.js.map → CNuGo1LQ2.chunk.js.map} +1 -1
- package/dist/scripts/{DsA2RTbF.chunk.js → CQKpvTZY.chunk.js} +2 -2
- package/dist/scripts/{DsA2RTbF.chunk.js.map → CQKpvTZY.chunk.js.map} +1 -1
- package/dist/scripts/{CL9-CkqC2.chunk.js → CRAcJqQV2.chunk.js} +2 -2
- package/dist/scripts/{CL9-CkqC2.chunk.js.map → CRAcJqQV2.chunk.js.map} +1 -1
- package/dist/scripts/{C1guWVFU2.chunk.js → CSB18s8X2.chunk.js} +2 -2
- package/dist/scripts/{C1guWVFU2.chunk.js.map → CSB18s8X2.chunk.js.map} +1 -1
- package/dist/scripts/CWZvMFYz.chunk.js +2 -0
- package/dist/scripts/CWZvMFYz.chunk.js.map +1 -0
- package/dist/scripts/{4oWF2EyV2.chunk.js → CZrMa6z92.chunk.js} +2 -2
- package/dist/scripts/{4oWF2EyV2.chunk.js.map → CZrMa6z92.chunk.js.map} +1 -1
- package/dist/scripts/{CAJOpkKZ.chunk.js → CfCxi56P.chunk.js} +2 -2
- package/dist/scripts/{CAJOpkKZ.chunk.js.map → CfCxi56P.chunk.js.map} +1 -1
- package/dist/scripts/{B0jhFNam2.chunk.js → Chib9pDe2.chunk.js} +3 -3
- package/dist/scripts/{B0jhFNam2.chunk.js.map → Chib9pDe2.chunk.js.map} +1 -1
- package/dist/scripts/{DUCTNoXj.chunk.js → CiEI8sTG.chunk.js} +2 -2
- package/dist/scripts/{DUCTNoXj.chunk.js.map → CiEI8sTG.chunk.js.map} +1 -1
- package/dist/scripts/{CAoPaL8M.chunk.js → CmIbuK_d.chunk.js} +2 -2
- package/dist/scripts/{CAoPaL8M.chunk.js.map → CmIbuK_d.chunk.js.map} +1 -1
- package/dist/scripts/{BTsePUCN2.chunk.js → CsQ6WMM92.chunk.js} +2 -2
- package/dist/scripts/{BTsePUCN2.chunk.js.map → CsQ6WMM92.chunk.js.map} +1 -1
- package/dist/scripts/{BHzUOyzG.chunk.js → Cxq38DxA.chunk.js} +2 -2
- package/dist/scripts/{BHzUOyzG.chunk.js.map → Cxq38DxA.chunk.js.map} +1 -1
- package/dist/scripts/{Cllrumah2.chunk.js → D0TX42le2.chunk.js} +2 -2
- package/dist/scripts/{Cllrumah2.chunk.js.map → D0TX42le2.chunk.js.map} +1 -1
- package/dist/scripts/{B7sWLg9v2.chunk.js → D8x02prV2.chunk.js} +2 -2
- package/dist/scripts/{B7sWLg9v2.chunk.js.map → D8x02prV2.chunk.js.map} +1 -1
- package/dist/scripts/{CCvXN2-C.chunk.js → DAQxdC_x.chunk.js} +2 -2
- package/dist/scripts/{CCvXN2-C.chunk.js.map → DAQxdC_x.chunk.js.map} +1 -1
- package/dist/scripts/{DOuiFwIH2.chunk.js → DGBrggmU2.chunk.js} +2 -2
- package/dist/scripts/{DOuiFwIH2.chunk.js.map → DGBrggmU2.chunk.js.map} +1 -1
- package/dist/scripts/{CSbvS-Cl.chunk.js → DI6eYZuV.chunk.js} +2 -2
- package/dist/scripts/{CSbvS-Cl.chunk.js.map → DI6eYZuV.chunk.js.map} +1 -1
- package/dist/scripts/DIsOuUSO2.chunk.js +2 -0
- package/dist/scripts/DIsOuUSO2.chunk.js.map +1 -0
- package/dist/scripts/{B3tq0EFi2.chunk.js → DN_CuUia2.chunk.js} +2 -2
- package/dist/scripts/{B3tq0EFi2.chunk.js.map → DN_CuUia2.chunk.js.map} +1 -1
- package/dist/scripts/{DRZvc_n5.chunk.js → DT626M1P.chunk.js} +3 -3
- package/dist/scripts/{DRZvc_n5.chunk.js.map → DT626M1P.chunk.js.map} +1 -1
- package/dist/scripts/DWVn5hOy2.chunk.js +2 -0
- package/dist/scripts/DWVn5hOy2.chunk.js.map +1 -0
- package/dist/scripts/DZ85IleM.chunk.js +2 -0
- package/dist/scripts/DZ85IleM.chunk.js.map +1 -0
- package/dist/scripts/{CsrTrVKj.chunk.js → DarQpJDR.chunk.js} +2 -2
- package/dist/scripts/{CsrTrVKj.chunk.js.map → DarQpJDR.chunk.js.map} +1 -1
- package/dist/scripts/{CGLWqKaa.chunk.js → DfWNECxe.chunk.js} +2 -2
- package/dist/scripts/{CGLWqKaa.chunk.js.map → DfWNECxe.chunk.js.map} +1 -1
- package/dist/scripts/{BEgLlK2Z2.chunk.js → Dfi_iXFg2.chunk.js} +2 -2
- package/dist/scripts/{BEgLlK2Z2.chunk.js.map → Dfi_iXFg2.chunk.js.map} +1 -1
- package/dist/scripts/{8vJGuJF-2.chunk.js → DjMOZfNJ2.chunk.js} +2 -2
- package/dist/scripts/{8vJGuJF-2.chunk.js.map → DjMOZfNJ2.chunk.js.map} +1 -1
- package/dist/scripts/{DGRBUJ6T2.chunk.js → DjUmgrOk2.chunk.js} +2 -2
- package/dist/scripts/{DGRBUJ6T2.chunk.js.map → DjUmgrOk2.chunk.js.map} +1 -1
- package/dist/scripts/DjdW7gMz.chunk.js +2 -0
- package/dist/scripts/DjdW7gMz.chunk.js.map +1 -0
- package/dist/scripts/{CAOBwDbU.chunk.js → DksIM59B.chunk.js} +2 -2
- package/dist/scripts/{CAOBwDbU.chunk.js.map → DksIM59B.chunk.js.map} +1 -1
- package/dist/scripts/{aXgcldgY.chunk.js → DpARg1IG.chunk.js} +2 -2
- package/dist/scripts/{aXgcldgY.chunk.js.map → DpARg1IG.chunk.js.map} +1 -1
- package/dist/scripts/{DM0JzOpR2.chunk.js → ErGRzsV12.chunk.js} +2 -2
- package/dist/scripts/{DM0JzOpR2.chunk.js.map → ErGRzsV12.chunk.js.map} +1 -1
- package/dist/scripts/{UK8sD-oL.chunk.js → GSm09vBX.chunk.js} +2 -2
- package/dist/scripts/{UK8sD-oL.chunk.js.map → GSm09vBX.chunk.js.map} +1 -1
- package/dist/scripts/{DDO16-at.chunk.js → HkF7AIye.chunk.js} +2 -2
- package/dist/scripts/{DDO16-at.chunk.js.map → HkF7AIye.chunk.js.map} +1 -1
- package/dist/scripts/{BI2S4EFA.chunk.js → I1XD6JKC.chunk.js} +2 -2
- package/dist/scripts/{BI2S4EFA.chunk.js.map → I1XD6JKC.chunk.js.map} +1 -1
- package/dist/scripts/MGxL1vUn.chunk.js +2 -0
- package/dist/scripts/MGxL1vUn.chunk.js.map +1 -0
- package/dist/scripts/{CBQgY9MD2.chunk.js → Tj-NqZ4q2.chunk.js} +1 -1
- package/dist/scripts/{CBQgY9MD2.chunk.js.map → Tj-NqZ4q2.chunk.js.map} +1 -1
- package/dist/scripts/{app-lnmpv5W4.js → app-fNhmX-xT.js} +4 -4
- package/dist/scripts/app-fNhmX-xT.js.map +1 -0
- package/dist/scripts/{Bu37Hprb2.chunk.js → fyOxYVvI2.chunk.js} +1 -1
- package/dist/scripts/{Bu37Hprb2.chunk.js.map → fyOxYVvI2.chunk.js.map} +1 -1
- package/dist/scripts/{Dsmr6Wly.chunk.js → gsffdqjU.chunk.js} +2 -2
- package/dist/scripts/{Dsmr6Wly.chunk.js.map → gsffdqjU.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/5Z0rGCy2.chunk.js +0 -2
- package/dist/scripts/5Z0rGCy2.chunk.js.map +0 -1
- package/dist/scripts/BjzONPz9.chunk.js +0 -2
- package/dist/scripts/BjzONPz9.chunk.js.map +0 -1
- package/dist/scripts/BuSq2beZ2.chunk.js +0 -2
- package/dist/scripts/BuSq2beZ2.chunk.js.map +0 -1
- package/dist/scripts/CHQN7xOX.chunk.js +0 -2
- package/dist/scripts/CHQN7xOX.chunk.js.map +0 -1
- package/dist/scripts/CuE3TVwa.chunk.js +0 -2
- package/dist/scripts/CuE3TVwa.chunk.js.map +0 -1
- package/dist/scripts/D6EZoO4S2.chunk.js.map +0 -1
- package/dist/scripts/D_PyfoSL.chunk.js +0 -2
- package/dist/scripts/D_PyfoSL.chunk.js.map +0 -1
- package/dist/scripts/DklryBsJ.chunk.js +0 -2
- package/dist/scripts/DklryBsJ.chunk.js.map +0 -1
- package/dist/scripts/app-lnmpv5W4.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ht as e,s as t,ut as n}from"./B1i9atik.chunk.js";import{y as r}from"./TJBzqR6k.chunk.js";import{t as i}from"./CzvVp9iC.chunk.js";import{t as a}from"./YhCzLJGK.chunk.js";import{t as o}from"./CrBD6Z4s.chunk.js";import{t as s}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{ht as e,s as t,ut as n}from"./B1i9atik.chunk.js";import{y as r}from"./TJBzqR6k.chunk.js";import{t as i}from"./CzvVp9iC.chunk.js";import{t as a}from"./YhCzLJGK.chunk.js";import{t as o}from"./CrBD6Z4s.chunk.js";import{t as s}from"./B0NqlFZf.chunk.js";import{c,tt as l}from"./app-fNhmX-xT.js";import{t as u}from"./CTTruW3_2.chunk.js";import{t as d}from"./D2DuwJJH2.chunk.js";import{t as f}from"./C9AjegY32.chunk.js";import{i as p,t as m}from"./3hSOvekc2.chunk.js";var h=function(e){return e.Screenrights=`screenrights`,e.Era=`era`,e.ClickView=`clickview`,e}({}),g={clip(e,t){return{key:`clip:${e}:${t}`,url:o.urlBuilder(`{gateway}/v1/objects/${e}`,{query:c.CLIP,permissionFilterOption:t})}},videoClips(e,t,n){return{key:`video:${e}:clips:${t}:${n}`,url:o.urlBuilder(`{gateway}/v1/objects/${e}/clips`,{query:c.CLIP_COLLECTION,permissionFilterOption:t,cursor:n})}},clipWithAllInteractives(e,t){return{key:`clip:${e}:${t}:interactives`,url:o.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${c.CLIP},interactives{status:[0,1]}`,permissionFilterOption:t}),normalize:!1}},publicClip(e,t,n,r){return{key:`clip:${e}:public:${t}`,url:o.urlBuilder(`/api/objects/${e}`,{query:`_parentVideo,_canBeConsumed,_thumbnail`,permissionFilterOption:d.StripMetadata,shareId:t}),bootstrapName:`shared:object:${e}`,success:n,error:r}},sharedClip(e,t,n,r){return{key:`shared:clip:${e}`,url:o.urlBuilder(`/api/objects/${e}`,{shareId:t,query:c.CLIP}),success:n,error:r}},createClip(e,t,n,i,a){return{key:`create:clip`,url:`{gateway}/v1/objects/${e}/clips`,data:t,type:r.POST,invalidationKeys:[`videos:${e}`,`my:videos`],success:n,error:i,always:a}},updateClip(e,t,n,i,a){return{key:`update:clip`,url:`{gateway}/v1/objects/${e}`,data:t,type:r.PUT,invalidationKeys:[`clip:${e}`],success:n,error:i,always:a}},deleteClip(e,t,n,i,a){return{key:`delete:clip`,url:`{gateway}/v1/objects/${e}`,type:r.DELETE,invalidationKeys:[`videos:${t}`,`my:videos`,`videos`],success:n,error:i,always:a}}},_={interactiveMetadata(e,t){return{url:o.urlBuilder(`{gateway}/v1/objects/${e}`,{query:c.INTERACTIVE,permissionFilterOption:t}),key:`interactive:metadata:${e}:${t}`}},videoInteractives(e,t,n){return{key:`video:${e}:interactives:${t}:${n}`,url:o.urlBuilder(`{gateway}/v1/objects/${e}/interactives`,{query:c.INTERACTIVE_COLLECTION,cursor:n}),publicUrl:o.urlBuilder(`/api/objects/${e}/interactives`,{query:c.INTERACTIVE_COLLECTION,cursor:n})}},sharedInteractiveMetadata(e,t,n,r){return{url:o.urlBuilder(`/api/objects/${e}`,{shareId:t,query:c.INTERACTIVE}),key:`shared:interactive:metadata:${e}`,success:n,error:r}},publicInteractiveMetadata(e,t,n,r){return{url:o.urlBuilder(`/api/objects/${e}`,{query:`_parentVideo[_rating],_canBeConsumed,_thumbnail`,permissionFilterOption:d.StripMetadata,shareId:t}),key:`interactive:metadata:${e}:public:${t}`,bootstrapName:`shared:object:${e}`,success:n,error:r}},interactive(e){return{url:`/api/domain/v1/interactives/${e}`,key:`interactive:${e}`,normalize:!1}},createInteractive(e,t,n){return{url:`/api/domain/v1/interactives`,key:`create:interactive`,type:r.POST,invalidationKeys:[`my:videos`],data:e,success:t,error:n}},createInteractiveMetadata(e,t,n,i){return{url:`{gateway}/v1/objects/${e}/interactives`,key:`create:interactive:metadata`,type:r.POST,data:t,success:n,error:i}},updateInteractive(e,t,n,i){return{url:`/api/domain/v1/interactives/${e}`,key:`update:interactive`,type:r.PUT,data:t,success:n,error:i,formatData:()=>t,invalidationKeys:[`interactive:${e}`]}},updateInteractiveMetadata(e,t,n,i){return{url:`{gateway}/v1/objects/${e}`,key:`update:interactive:metadata`,type:r.PUT,data:t,success:n,error:i}},interactiveResultSet(e,t){return{url:`/api/domain/v1/analytics/interactives/${e}/metadata/${t}`,key:`interactive:result:set:${e}:${t}`}},copyInteractive(e,t,n){return{url:`/api/domain/v1/interactives/${e}/copy`,key:`copy:interactive`,type:r.POST,invalidationKeys:[`interactive:${e}`,`my:videos`],success:t,error:n}},deleteInteractiveMetadata(e,t,n){return{url:`{gateway}/v1/objects/${e}`,key:`delete:interactive`,type:r.DELETE,invalidationKeys:[`interactive:${e}`,`my:videos`,`videos`],success:t,error:n}},removeInteractiveMetadata({libraryId:e,categoryId:t,interactiveMetadataId:n}){return{url:o.urlBuilder(`/api/domain/v1/libraries/${e}/videos`,{categoryId:t,videoIds:n}),key:`remove:interactive:metadata:${n}`,type:r.DELETE,invalidationKeys:[`interactive:${n}`,`my:videos`,`videos`]}},contributeToCommunity(e){return{url:`/api/domain/v2/interactives/${e}/contribute`,key:`contribute:interactive`,type:r.POST}},revokefromCommunity(e){return{url:`/api/domain/v2/interactives/${e}/contribute`,key:`contribute:interactive`,type:r.DELETE}},isContributed(e){return{url:`/api/domain/v2/interactives/${e}/contributed`,key:`iscontributed:${e}`,normalize:!1}},updateInteraction(e){return{url:`/api/domain/v1/interactions/bulk/${e.id}`,key:`contribute:interactive`,data:e,type:r.PUT,invalidationKeys:[`interactive:${e.interactiveId}`]}}},v=i.encloseNamespace(`shared.shared-utils`),y={isVideo(e){return e?.typeId===l.Video},isClip(e){return e?.typeId===l.Clip},isInteractive(e){return e?.typeId===l.Interactive},isVideoTypeArchived(e){return e?.status===u.Archived},isVideoType(e){return y.isVideo(e)||y.isInteractive(e)||y.isClip(e)},hasSeries(e){return!!e?.series?.id},showVideoGuidance(e){return!e(s.StudentExperience)},showInteractivesGuidance(e){return!e||y.isInteractive(e)?!1:!!e.interactives?.data?.length},showResourcesGuidance(e){return!e||y.isInteractive(e)?!1:!!((e.resources?.data?.length||0)+(e.links?.data?.length||0))},canViewCurriculumLinks(e,t){return!(e(s.ViewCurriculums)&&e(s.ManagePresentations))||!t||!y.isVideo(t)?!1:!!t._hasCurriculumLinks?.value},getVideoProgress(e){return e?.lastProgressPoint?e?.lastProgressPoint:e?._videoProgress?.progress?e?._videoProgress?.progress:0},getThumbnail(e){if(!e)return null;if(y.isVideo(e))return e.thumbnail;if(e?._thumbnail)return e._thumbnail;if(y.isClip(e))return e.thumbnail||e._parentVideo?.thumbnail;if(y.isInteractive(e))return e._parentVideo?.thumbnail||e._parentClip?.thumbnail},getDuration(e){if(e){if(y.isVideo(e))return e.duration;if(y.isInteractive(e)){if(e._parentClip?.id)return(e._parentClip.endTime-e._parentClip.startTime)*1e3;if(e._parentVideo?.duration)return e._parentVideo.duration}if(y.isClip(e))return(e.endTime-e.startTime)*1e3}},getAnalyticsEntity(e){if(y.isVideo(e))return t.Video;if(y.isInteractive(e))return t.Interactive;if(y.isClip(e))return t.Clip},getAnalyticsData(e,t={}){if(y.isVideo(e))return{...t||{},id:e.id,name:e.name};if(y.isClip(e)){let n={...t||{},id:e.id,name:e.name};return e._parentVideo?.id&&(n.video={id:e._parentVideo?.id,name:e._parentVideo.name}),n}let n={...t,id:e.id,interactiveId:e.interactiveId,name:e.name,status:e.status,originType:e.originType};return e?._parentClip?.id&&(n.clip={id:e?._parentClip?.id,name:e?._parentClip.name}),e?._parentVideo?.id&&(n.video={id:e?._parentVideo?.id,name:e?._parentVideo.name}),n},getCanBeConsumed(e){return!e||!y.isVideoType(e)?{canNavigate:!1,canConsume:!1}:e._canBeConsumed?{canNavigate:e._canBeConsumed?.reason===`login-required`&&y.isVideo(e)||e._canBeConsumed.value===!0,canConsume:e._canBeConsumed.value,reason:e._canBeConsumed?.reason}:{canNavigate:!0,canConsume:!0}},getPrivacyReasoning(e,t=!1){let{canConsume:n,canNavigate:r,reason:i}=y.getCanBeConsumed(e),a=()=>y.isClip(e)?v(`clipParentDeleted`):y.isInteractive(e)?v(`interactiveParentDeleted`):v(`videoDeleted`),o=()=>y.isClip(e)?v(`clipLoginRequired`):y.isInteractive(e)?v(`interactiveLoginRequired`):v(`videoLoginRequired`);if(!n&&!r){if(t)return o();switch(i){case`rating-not-allowed`:return v(`ratingNotAllowed`);case`video-deleted`:return a();case`clickview-private`:return v(`clickViewPrivate`);case`private`:return v(`genericCannotAccess`);case`login-required`:return o();case`restricted-access`:return m.getWeightedRestriction(e._restrictions?.value)?.type===p.Custom?v(`awaitingApproval`):v(`restrictedAccess`);default:return v(`genericCannotAccess`)}}return y.isInteractive(e)&&e.status===u.Draft?v(`draftInteractive`):``},getTitle(e){if(e.name)return y.isInteractive(e)&&e.status===u.Draft?v(`draftInteractiveTitle`,{name:e.name}):e.name;let{canConsume:t,reason:n}=y.getCanBeConsumed(e);return v(!t&&n===`private`?`privateVideo`:!t&&n===`video-deleted`?`videoUnavailable`:`privateVideo`)},getParentVideo(e){if(y.isVideo(e))return e;if(y.isClip(e)||y.isInteractive(e))return e._parentVideo},getRating(e){return y.isVideo(e)?e._rating?.value||e.rating:e?._parentVideo?._rating?.value},getVideoRequest(t,r,i){if(i){switch(r){case l.Video:return f.sharedVideo(t,i);case l.Clip:return g.sharedClip(t,i);case l.Interactive:return _.sharedInteractiveMetadata(t,i)}e.throw(new n(`Unsupported master type`))}switch(r){case l.Video:return f.video(t);case l.Clip:return g.clip(t);case l.Interactive:return _.interactiveMetadata(t)}e.throw(new n(`Unsupported master type`))},isBroadcast(e){return!!e?.contentLicences?.data?.some(e=>e.systemName===h.Era||e.systemName===h.Screenrights)},isUgc(e){return!y.isBroadcast(e)&&!e._curationTags?.value?.isClickViewCurated&&!e._curationTags?.value?.isStreamableLearningCurated},getReleaseDate(e){return e&&e.dateReleased&&y.isBroadcast(e)?a.format(e.dateReleased,`DD/MM/YYYY`):``},canViewOriginalVideo(e){return!!e?._parentVideo?._canBeConsumed?.value},getTrackingCode(e){if(y.isVideo(e))return e.trackingCode;if(y.isClip(e)||y.isInteractive(e))return e._parentVideo.trackingCode},isInExchange(e){return!!e?.libraries?.data?.some(e=>e.typeId===l.ExchangeCollection)},canViewUploadDate(e){return!(!e||!e.dateCreated||!e._curationTags||e._curationTags?.value?.isClickViewCurated)}};export{y as t};
|
|
2
|
+
//# sourceMappingURL=ErGRzsV12.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DM0JzOpR2.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/ContentLicenceType.ts","../../../../libs/shared/src/flight-requests/ClipRequests.ts","../../../../libs/shared/src/flight-requests/InteractiveRequests.ts","../../../../libs/shared/src/utils/VideoHelper.ts"],"sourcesContent":["export enum ContentLicenseType {\n Screenrights = 'screenrights',\n Era = 'era',\n ClickView = 'clickview'\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Clip, CreateOrUpdateClipRequest } from 'libs/shared/interfaces';\n\nexport const ClipRequests = {\n clip(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n key: `clip:${id}:${permissionFilterOption}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.CLIP,\n permissionFilterOption\n })\n };\n },\n\n videoClips(parentId: string, permissionFilterOption?: PermissionFilterOption, cursor?: string) {\n return {\n key: `video:${parentId}:clips:${permissionFilterOption}:${cursor}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${parentId}/clips`, {\n query: SharedWithStatements.CLIP_COLLECTION,\n permissionFilterOption,\n cursor\n })\n };\n },\n\n clipWithAllInteractives(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n key: `clip:${id}:${permissionFilterOption}:interactives`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.CLIP},interactives{status:[0,1]}`,\n permissionFilterOption\n }),\n normalize: false\n };\n },\n\n publicClip(\n id: string,\n shareId?: string,\n success?: (clip: Clip) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n key: `clip:${id}:public:${shareId}`,\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: '_parentVideo,_canBeConsumed,_thumbnail',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n\n sharedClip(\n id: string,\n shareId: string,\n success?: (clip: Clip) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n key: `shared:clip:${id}`,\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.CLIP\n }),\n success,\n error\n };\n },\n\n createClip(\n videoId: string,\n data: CreateOrUpdateClipRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'create:clip',\n url: `{gateway}/v1/objects/${videoId}/clips`,\n data,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}`, 'my:videos' ],\n success,\n error,\n always\n };\n },\n\n updateClip(\n id: string,\n data: CreateOrUpdateClipRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'update:clip',\n url: `{gateway}/v1/objects/${id}`,\n data,\n type: HttpVerbs.PUT,\n invalidationKeys: [`clip:${id}`],\n success,\n error,\n always\n };\n },\n\n deleteClip(\n id: string,\n videoId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `delete:clip`,\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}`, 'my:videos', 'videos' ],\n success,\n error,\n always\n };\n }\n};\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { CreateInteractiveMetadataRequest, CreateInteractiveRequest, EditInteractiveMetadataOriginRequest, EditInteractiveMetadataRequest, EditInteractiveRequest, Interaction, InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport const InteractiveRequests = {\n interactiveMetadata(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.INTERACTIVE,\n permissionFilterOption\n }),\n key: `interactive:metadata:${id}:${permissionFilterOption}`\n };\n },\n\n videoInteractives(\n parentId: string,\n permissionFilterOption?: PermissionFilterOption,\n cursor?: string\n ): Flight.PublicRequest {\n return {\n key: `video:${parentId}:interactives:${permissionFilterOption}:${cursor}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${parentId}/interactives`, {\n query: SharedWithStatements.INTERACTIVE_COLLECTION,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${parentId}/interactives`, {\n query: SharedWithStatements.INTERACTIVE_COLLECTION,\n cursor\n })\n };\n },\n\n sharedInteractiveMetadata(\n id: string,\n shareId: string,\n success?: (interactiveMetadata: InteractiveMetadata) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.INTERACTIVE\n }),\n key: `shared:interactive:metadata:${id}`,\n success,\n error\n };\n },\n publicInteractiveMetadata(\n id: string,\n shareId?: string,\n success?: (interactive: InteractiveMetadata) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: '_parentVideo[_rating],_canBeConsumed,_thumbnail',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n key: `interactive:metadata:${id}:public:${shareId}`,\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n interactive(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${id}`,\n key: `interactive:${id}`,\n normalize: false\n };\n },\n createInteractive(\n data: CreateInteractiveRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/interactives',\n key: 'create:interactive',\n type: HttpVerbs.POST,\n invalidationKeys: ['my:videos'],\n data,\n success,\n error\n };\n },\n createInteractiveMetadata(\n videoId: string,\n data: CreateInteractiveMetadataRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/interactives`,\n key: 'create:interactive:metadata',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n updateInteractive(\n id: string,\n data: EditInteractiveRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${id}`,\n key: 'update:interactive',\n type: HttpVerbs.PUT,\n data,\n success,\n error,\n /* Update state because domain doesn't return the updated object */\n formatData: () => data,\n invalidationKeys: [`interactive:${id}`]\n };\n },\n updateInteractiveMetadata(\n id: string,\n data: EditInteractiveMetadataRequest | EditInteractiveMetadataOriginRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'update:interactive:metadata',\n type: HttpVerbs.PUT,\n data,\n success,\n error\n };\n },\n interactiveResultSet(interactiveId: string, interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`\n };\n },\n copyInteractive(\n interactiveId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${interactiveId}/copy`,\n key: 'copy:interactive',\n type: HttpVerbs.POST,\n invalidationKeys: [ `interactive:${interactiveId}`, 'my:videos' ],\n success,\n error\n };\n },\n deleteInteractiveMetadata(\n interactiveMetadataId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${interactiveMetadataId}`,\n key: 'delete:interactive',\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `interactive:${interactiveMetadataId}`, 'my:videos', 'videos' ],\n success,\n error\n };\n },\n removeInteractiveMetadata({\n libraryId,\n categoryId,\n interactiveMetadataId\n }: {\n libraryId: string,\n categoryId: string,\n interactiveMetadataId: string\n }): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v1/libraries/${libraryId}/videos`, { categoryId, videoIds: interactiveMetadataId }),\n key: `remove:interactive:metadata:${interactiveMetadataId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `interactive:${interactiveMetadataId}`, 'my:videos', 'videos' ]\n };\n },\n contributeToCommunity(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contribute`,\n key: 'contribute:interactive',\n type: HttpVerbs.POST\n };\n },\n revokefromCommunity(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contribute`,\n key: 'contribute:interactive',\n type: HttpVerbs.DELETE\n };\n },\n isContributed(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contributed`,\n key: `iscontributed:${interactiveMetadataId}`,\n normalize: false\n };\n },\n updateInteraction(interaction: Interaction) {\n return {\n url: `/api/domain/v1/interactions/bulk/${interaction.id}`,\n key: 'contribute:interactive',\n data: interaction,\n type: HttpVerbs.PUT,\n invalidationKeys: [`interactive:${interaction.interactiveId}`]\n };\n }\n};\n","import { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { EntityType } from 'libs/analytics/interfaces';\n\nimport { ContentLicenseType } from 'libs/shared/enums/ContentLicenceType';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { BaseObject, CanBeConsumedReason, Clip, InteractiveMetadata, Rating, Thumbnail, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\n\nimport { PermissionName } from '../enums/PermissionName';\nimport { HasPermissionsFunc } from '../hooks/usePermissions';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const VideoHelper = {\n isVideo(obj: BaseObject): obj is Video {\n return obj?.typeId === MasterType.Video;\n },\n\n isClip(obj: BaseObject): obj is Clip {\n return obj?.typeId === MasterType.Clip;\n },\n\n isInteractive(obj: BaseObject): obj is InteractiveMetadata {\n return obj?.typeId === MasterType.Interactive;\n },\n\n isVideoTypeArchived(obj: VideoTypes): boolean {\n return obj?.status === CurationStatus.Archived;\n },\n\n /**\n * Returns true of the object is a video, clip or interactive\n */\n isVideoType(object: BaseObject): object is Video | Clip | InteractiveMetadata {\n return VideoHelper.isVideo(object) || VideoHelper.isInteractive(object) || VideoHelper.isClip(object);\n },\n\n hasSeries(video: Video): boolean {\n return !!video?.series?.id;\n },\n\n showVideoGuidance(hasPermissions: HasPermissionsFunc): boolean {\n return !hasPermissions(PermissionName.StudentExperience);\n },\n\n showInteractivesGuidance(video: VideoTypes): boolean {\n if (!video || VideoHelper.isInteractive(video))\n return false;\n\n const interactiveCount = video.interactives?.data?.length || 0;\n\n return !!interactiveCount;\n },\n\n showResourcesGuidance(video: VideoTypes): boolean {\n if (!video || VideoHelper.isInteractive(video))\n return false;\n\n const resourceCount = (\n (video.resources?.data?.length || 0) +\n (video.links?.data?.length || 0)\n );\n\n return !!resourceCount;\n },\n\n canViewCurriculumLinks(hasPermissions: HasPermissionsFunc, video: VideoTypes): boolean {\n const canView = (\n hasPermissions(PermissionName.ViewCurriculums) &&\n hasPermissions(PermissionName.ManagePresentations)\n );\n\n if (!canView)\n return false;\n \n if (!video || !VideoHelper.isVideo(video))\n return false;\n\n return !!video._hasCurriculumLinks?.value;\n },\n\n getVideoProgress(video: Video): number {\n if (video?.lastProgressPoint)\n return video?.lastProgressPoint;\n\n // Use virtual assoc\n if (video?._videoProgress?.progress)\n return video?._videoProgress?.progress;\n\n return 0;\n },\n\n getThumbnail(video: VideoTypes): Thumbnail {\n if (!video)\n return null;\n\n if (VideoHelper.isVideo(video))\n return video.thumbnail;\n\n if (video?._thumbnail)\n return video._thumbnail;\n\n // Fallbacks for virtual assoc if needed\n if (VideoHelper.isClip(video))\n return video.thumbnail || video._parentVideo?.thumbnail;\n\n if (VideoHelper.isInteractive(video))\n return video._parentVideo?.thumbnail || video._parentClip?.thumbnail;\n },\n\n getDuration(video: VideoTypes): number {\n if (!video)\n return;\n\n if (VideoHelper.isVideo(video))\n return video.duration;\n\n if (VideoHelper.isInteractive(video)) {\n if (video._parentClip?.id)\n return (video._parentClip.endTime - video._parentClip.startTime) * 1000;\n\n if (video._parentVideo?.duration)\n return video._parentVideo.duration;\n }\n\n if (VideoHelper.isClip(video))\n return (video.endTime - video.startTime) * 1000;\n },\n\n getAnalyticsEntity(video: VideoTypes): EntityType {\n if (VideoHelper.isVideo(video))\n return EntityType.Video;\n\n if (VideoHelper.isInteractive(video))\n return EntityType.Interactive;\n\n if (VideoHelper.isClip(video))\n return EntityType.Clip;\n },\n\n getAnalyticsData(\n video: VideoTypes,\n extraAnalyticsData: HashObject = {}\n ): HashObject {\n if (VideoHelper.isVideo(video)) {\n return {\n ...(extraAnalyticsData || {}),\n id: video.id,\n name: video.name\n };\n }\n\n if (VideoHelper.isClip(video)) {\n const data: HashObject = {\n ...(extraAnalyticsData || {}),\n id: video.id,\n name: video.name\n };\n\n if (video._parentVideo?.id)\n data.video = { id: video._parentVideo?.id, name: video._parentVideo.name };\n\n return data;\n }\n\n const data: HashObject = {\n ...extraAnalyticsData,\n id: video.id,\n interactiveId: video.interactiveId,\n name: video.name,\n status: video.status,\n originType: video.originType\n };\n\n if (video?._parentClip?.id)\n data.clip = { id: video?._parentClip?.id, name: video?._parentClip.name };\n\n if (video?._parentVideo?.id)\n data.video = { id: video?._parentVideo?.id, name: video?._parentVideo.name };\n \n return data;\n },\n\n getCanBeConsumed(video: BaseObject): {\n canNavigate: boolean,\n canConsume: boolean,\n reason?: CanBeConsumedReason\n } {\n if (!video || !VideoHelper.isVideoType(video)) {\n return {\n canNavigate: false,\n canConsume: false\n };\n }\n\n if (video._canBeConsumed) {\n return {\n /**\n * Product navigation is enabled for \"login-required\" reason to support public access. \n * The video itself cannot be consumed, however, clients can allow users to browse the platform.\n * \n * Note: canNavigate is initially available for just videos. Interactives and Clips will be supported in Y2.\n */\n canNavigate: (video._canBeConsumed?.reason === 'login-required' && VideoHelper.isVideo(video)) || video._canBeConsumed.value === true,\n canConsume: video._canBeConsumed.value,\n reason: video._canBeConsumed?.reason\n };\n }\n\n /**\n * Many of the components shared between online and lite read this value.\n * Online doesn't fetch or care about this value, which means by this point it should\n * still be null. In this case, we just set it to true so that the components can render\n * as normal.\n */\n return {\n canNavigate: true,\n canConsume: true\n };\n },\n\n getPrivacyReasoning(video: VideoTypes, showSignIn: boolean = false): string {\n const { canConsume, canNavigate, reason } = VideoHelper.getCanBeConsumed(video);\n\n const getNoLongerAvailableText = () => {\n if (VideoHelper.isClip(video))\n return getPhrase('clipParentDeleted');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveParentDeleted');\n\n return getPhrase('videoDeleted');\n };\n\n const getLoginRequiredText = () => {\n if (VideoHelper.isClip(video))\n return getPhrase('clipLoginRequired');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveLoginRequired');\n\n return getPhrase('videoLoginRequired');\n };\n\n if (!canConsume && !canNavigate) {\n if (showSignIn)\n return getLoginRequiredText();\n\n switch (reason) {\n case 'rating-not-allowed': {\n return getPhrase('ratingNotAllowed');\n }\n\n case 'video-deleted': {\n return getNoLongerAvailableText();\n }\n\n case 'clickview-private': {\n return getPhrase('clickViewPrivate');\n }\n\n case 'private': {\n return getPhrase('genericCannotAccess');\n }\n\n case 'login-required': {\n return getLoginRequiredText();\n }\n\n case 'restricted-access': {\n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n\n if (restriction?.type === RestrictionType.Custom)\n return getPhrase('awaitingApproval');\n\n return getPhrase('restrictedAccess');\n }\n\n default: {\n return getPhrase('genericCannotAccess');\n }\n }\n }\n\n if (VideoHelper.isInteractive(video) && video.status === CurationStatus.Draft)\n return getPhrase('draftInteractive');\n\n return '';\n },\n\n getTitle(video: VideoTypes): string {\n if (video.name) {\n if (VideoHelper.isInteractive(video) && video.status === CurationStatus.Draft) {\n return getPhrase('draftInteractiveTitle', { name: video.name });\n }\n\n return video.name;\n }\n\n const { canConsume, reason } = VideoHelper.getCanBeConsumed(video);\n\n if (!canConsume && reason === 'private')\n return getPhrase('privateVideo');\n\n if (!canConsume && reason === 'video-deleted')\n return getPhrase('videoUnavailable');\n\n return getPhrase('privateVideo');\n },\n\n getParentVideo(video: VideoTypes): Video | null {\n if (VideoHelper.isVideo(video))\n return video;\n\n if (VideoHelper.isClip(video) || VideoHelper.isInteractive(video))\n return video._parentVideo;\n },\n\n getRating(video: VideoTypes): Rating | null {\n if (VideoHelper.isVideo(video))\n return video._rating?.value || video.rating;\n\n return video?._parentVideo?._rating?.value;\n },\n\n getVideoRequest(\n objectId: string,\n objectTypeId: MasterType,\n shareId?: string\n ): Flight.Request {\n if (shareId) {\n switch (objectTypeId) {\n case MasterType.Video:\n return VideoRequests.sharedVideo(objectId, shareId);\n case MasterType.Clip:\n return ClipRequests.sharedClip(objectId, shareId);\n case MasterType.Interactive:\n return InteractiveRequests.sharedInteractiveMetadata(objectId, shareId);\n }\n\n Core.ErrorHelper.throw(new DevError('Unsupported master type'));\n }\n\n switch (objectTypeId) {\n case MasterType.Video:\n return VideoRequests.video(objectId);\n case MasterType.Clip:\n return ClipRequests.clip(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.interactiveMetadata(objectId);\n }\n\n Core.ErrorHelper.throw(new DevError('Unsupported master type'));\n },\n\n isBroadcast(video: Video): boolean {\n return !!video?.contentLicences?.data?.some(l =>\n l.systemName === ContentLicenseType.Era ||\n l.systemName === ContentLicenseType.Screenrights);\n },\n\n isUgc(video: Video): boolean {\n // if video isn't broadcast and isn't curated by the ClickView team, chances are it's UGC\n return (\n !VideoHelper.isBroadcast(video) &&\n !video._curationTags?.value?.isClickViewCurated &&\n !video._curationTags?.value?.isStreamableLearningCurated\n );\n },\n\n getReleaseDate(video: Video): string {\n if (!video)\n return '';\n\n if (video.dateReleased && VideoHelper.isBroadcast(video))\n return DateHelper.format(video.dateReleased, 'DD/MM/YYYY');\n\n return '';\n },\n\n canViewOriginalVideo(video: Clip | InteractiveMetadata): boolean {\n return !!video?._parentVideo?._canBeConsumed?.value;\n },\n\n getTrackingCode(video: VideoTypes): string | undefined {\n if (VideoHelper.isVideo(video))\n return video.trackingCode;\n\n if (VideoHelper.isClip(video) || VideoHelper.isInteractive(video))\n return video._parentVideo.trackingCode;\n },\n\n isInExchange(video: Video): boolean {\n return !!video?.libraries?.data?.some(l => l.typeId === MasterType.ExchangeCollection);\n },\n\n canViewUploadDate(video: Video): boolean {\n if (!video || !video.dateCreated)\n return false;\n\n if (!video._curationTags || video._curationTags?.value?.isClickViewCurated)\n return false;\n\n return true;\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ErGRzsV12.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/ContentLicenceType.ts","../../../../libs/shared/src/flight-requests/ClipRequests.ts","../../../../libs/shared/src/flight-requests/InteractiveRequests.ts","../../../../libs/shared/src/utils/VideoHelper.ts"],"sourcesContent":["export enum ContentLicenseType {\n Screenrights = 'screenrights',\n Era = 'era',\n ClickView = 'clickview'\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Clip, CreateOrUpdateClipRequest } from 'libs/shared/interfaces';\n\nexport const ClipRequests = {\n clip(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n key: `clip:${id}:${permissionFilterOption}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.CLIP,\n permissionFilterOption\n })\n };\n },\n\n videoClips(parentId: string, permissionFilterOption?: PermissionFilterOption, cursor?: string) {\n return {\n key: `video:${parentId}:clips:${permissionFilterOption}:${cursor}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${parentId}/clips`, {\n query: SharedWithStatements.CLIP_COLLECTION,\n permissionFilterOption,\n cursor\n })\n };\n },\n\n clipWithAllInteractives(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n key: `clip:${id}:${permissionFilterOption}:interactives`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.CLIP},interactives{status:[0,1]}`,\n permissionFilterOption\n }),\n normalize: false\n };\n },\n\n publicClip(\n id: string,\n shareId?: string,\n success?: (clip: Clip) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n key: `clip:${id}:public:${shareId}`,\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: '_parentVideo,_canBeConsumed,_thumbnail',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n\n sharedClip(\n id: string,\n shareId: string,\n success?: (clip: Clip) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n key: `shared:clip:${id}`,\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.CLIP\n }),\n success,\n error\n };\n },\n\n createClip(\n videoId: string,\n data: CreateOrUpdateClipRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'create:clip',\n url: `{gateway}/v1/objects/${videoId}/clips`,\n data,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}`, 'my:videos' ],\n success,\n error,\n always\n };\n },\n\n updateClip(\n id: string,\n data: CreateOrUpdateClipRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'update:clip',\n url: `{gateway}/v1/objects/${id}`,\n data,\n type: HttpVerbs.PUT,\n invalidationKeys: [`clip:${id}`],\n success,\n error,\n always\n };\n },\n\n deleteClip(\n id: string,\n videoId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `delete:clip`,\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}`, 'my:videos', 'videos' ],\n success,\n error,\n always\n };\n }\n};\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { CreateInteractiveMetadataRequest, CreateInteractiveRequest, EditInteractiveMetadataOriginRequest, EditInteractiveMetadataRequest, EditInteractiveRequest, Interaction, InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport const InteractiveRequests = {\n interactiveMetadata(id: string, permissionFilterOption?: PermissionFilterOption): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.INTERACTIVE,\n permissionFilterOption\n }),\n key: `interactive:metadata:${id}:${permissionFilterOption}`\n };\n },\n\n videoInteractives(\n parentId: string,\n permissionFilterOption?: PermissionFilterOption,\n cursor?: string\n ): Flight.PublicRequest {\n return {\n key: `video:${parentId}:interactives:${permissionFilterOption}:${cursor}`,\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${parentId}/interactives`, {\n query: SharedWithStatements.INTERACTIVE_COLLECTION,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${parentId}/interactives`, {\n query: SharedWithStatements.INTERACTIVE_COLLECTION,\n cursor\n })\n };\n },\n\n sharedInteractiveMetadata(\n id: string,\n shareId: string,\n success?: (interactiveMetadata: InteractiveMetadata) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.INTERACTIVE\n }),\n key: `shared:interactive:metadata:${id}`,\n success,\n error\n };\n },\n publicInteractiveMetadata(\n id: string,\n shareId?: string,\n success?: (interactive: InteractiveMetadata) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: '_parentVideo[_rating],_canBeConsumed,_thumbnail',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n key: `interactive:metadata:${id}:public:${shareId}`,\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n interactive(id: string): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${id}`,\n key: `interactive:${id}`,\n normalize: false\n };\n },\n createInteractive(\n data: CreateInteractiveRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: '/api/domain/v1/interactives',\n key: 'create:interactive',\n type: HttpVerbs.POST,\n invalidationKeys: ['my:videos'],\n data,\n success,\n error\n };\n },\n createInteractiveMetadata(\n videoId: string,\n data: CreateInteractiveMetadataRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/interactives`,\n key: 'create:interactive:metadata',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n updateInteractive(\n id: string,\n data: EditInteractiveRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${id}`,\n key: 'update:interactive',\n type: HttpVerbs.PUT,\n data,\n success,\n error,\n /* Update state because domain doesn't return the updated object */\n formatData: () => data,\n invalidationKeys: [`interactive:${id}`]\n };\n },\n updateInteractiveMetadata(\n id: string,\n data: EditInteractiveMetadataRequest | EditInteractiveMetadataOriginRequest,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'update:interactive:metadata',\n type: HttpVerbs.PUT,\n data,\n success,\n error\n };\n },\n interactiveResultSet(interactiveId: string, interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`\n };\n },\n copyInteractive(\n interactiveId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/interactives/${interactiveId}/copy`,\n key: 'copy:interactive',\n type: HttpVerbs.POST,\n invalidationKeys: [ `interactive:${interactiveId}`, 'my:videos' ],\n success,\n error\n };\n },\n deleteInteractiveMetadata(\n interactiveMetadataId: string,\n success?: (data: any) => void,\n error?: (data: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${interactiveMetadataId}`,\n key: 'delete:interactive',\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `interactive:${interactiveMetadataId}`, 'my:videos', 'videos' ],\n success,\n error\n };\n },\n removeInteractiveMetadata({\n libraryId,\n categoryId,\n interactiveMetadataId\n }: {\n libraryId: string,\n categoryId: string,\n interactiveMetadataId: string\n }): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v1/libraries/${libraryId}/videos`, { categoryId, videoIds: interactiveMetadataId }),\n key: `remove:interactive:metadata:${interactiveMetadataId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `interactive:${interactiveMetadataId}`, 'my:videos', 'videos' ]\n };\n },\n contributeToCommunity(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contribute`,\n key: 'contribute:interactive',\n type: HttpVerbs.POST\n };\n },\n revokefromCommunity(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contribute`,\n key: 'contribute:interactive',\n type: HttpVerbs.DELETE\n };\n },\n isContributed(interactiveMetadataId: string): Flight.Request {\n return {\n url: `/api/domain/v2/interactives/${interactiveMetadataId}/contributed`,\n key: `iscontributed:${interactiveMetadataId}`,\n normalize: false\n };\n },\n updateInteraction(interaction: Interaction) {\n return {\n url: `/api/domain/v1/interactions/bulk/${interaction.id}`,\n key: 'contribute:interactive',\n data: interaction,\n type: HttpVerbs.PUT,\n invalidationKeys: [`interactive:${interaction.interactiveId}`]\n };\n }\n};\n","import { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { EntityType } from 'libs/analytics/interfaces';\n\nimport { ContentLicenseType } from 'libs/shared/enums/ContentLicenceType';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { BaseObject, CanBeConsumedReason, Clip, InteractiveMetadata, Rating, Thumbnail, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\n\nimport { PermissionName } from '../enums/PermissionName';\nimport { HasPermissionsFunc } from '../hooks/usePermissions';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const VideoHelper = {\n isVideo(obj: BaseObject): obj is Video {\n return obj?.typeId === MasterType.Video;\n },\n\n isClip(obj: BaseObject): obj is Clip {\n return obj?.typeId === MasterType.Clip;\n },\n\n isInteractive(obj: BaseObject): obj is InteractiveMetadata {\n return obj?.typeId === MasterType.Interactive;\n },\n\n isVideoTypeArchived(obj: VideoTypes): boolean {\n return obj?.status === CurationStatus.Archived;\n },\n\n /**\n * Returns true of the object is a video, clip or interactive\n */\n isVideoType(object: BaseObject): object is Video | Clip | InteractiveMetadata {\n return VideoHelper.isVideo(object) || VideoHelper.isInteractive(object) || VideoHelper.isClip(object);\n },\n\n hasSeries(video: Video): boolean {\n return !!video?.series?.id;\n },\n\n showVideoGuidance(hasPermissions: HasPermissionsFunc): boolean {\n return !hasPermissions(PermissionName.StudentExperience);\n },\n\n showInteractivesGuidance(video: VideoTypes): boolean {\n if (!video || VideoHelper.isInteractive(video))\n return false;\n\n const interactiveCount = video.interactives?.data?.length || 0;\n\n return !!interactiveCount;\n },\n\n showResourcesGuidance(video: VideoTypes): boolean {\n if (!video || VideoHelper.isInteractive(video))\n return false;\n\n const resourceCount = (\n (video.resources?.data?.length || 0) +\n (video.links?.data?.length || 0)\n );\n\n return !!resourceCount;\n },\n\n canViewCurriculumLinks(hasPermissions: HasPermissionsFunc, video: VideoTypes): boolean {\n const canView = (\n hasPermissions(PermissionName.ViewCurriculums) &&\n hasPermissions(PermissionName.ManagePresentations)\n );\n\n if (!canView)\n return false;\n \n if (!video || !VideoHelper.isVideo(video))\n return false;\n\n return !!video._hasCurriculumLinks?.value;\n },\n\n getVideoProgress(video: Video): number {\n if (video?.lastProgressPoint)\n return video?.lastProgressPoint;\n\n // Use virtual assoc\n if (video?._videoProgress?.progress)\n return video?._videoProgress?.progress;\n\n return 0;\n },\n\n getThumbnail(video: VideoTypes): Thumbnail {\n if (!video)\n return null;\n\n if (VideoHelper.isVideo(video))\n return video.thumbnail;\n\n if (video?._thumbnail)\n return video._thumbnail;\n\n // Fallbacks for virtual assoc if needed\n if (VideoHelper.isClip(video))\n return video.thumbnail || video._parentVideo?.thumbnail;\n\n if (VideoHelper.isInteractive(video))\n return video._parentVideo?.thumbnail || video._parentClip?.thumbnail;\n },\n\n getDuration(video: VideoTypes): number {\n if (!video)\n return;\n\n if (VideoHelper.isVideo(video))\n return video.duration;\n\n if (VideoHelper.isInteractive(video)) {\n if (video._parentClip?.id)\n return (video._parentClip.endTime - video._parentClip.startTime) * 1000;\n\n if (video._parentVideo?.duration)\n return video._parentVideo.duration;\n }\n\n if (VideoHelper.isClip(video))\n return (video.endTime - video.startTime) * 1000;\n },\n\n getAnalyticsEntity(video: VideoTypes): EntityType {\n if (VideoHelper.isVideo(video))\n return EntityType.Video;\n\n if (VideoHelper.isInteractive(video))\n return EntityType.Interactive;\n\n if (VideoHelper.isClip(video))\n return EntityType.Clip;\n },\n\n getAnalyticsData(\n video: VideoTypes,\n extraAnalyticsData: HashObject = {}\n ): HashObject {\n if (VideoHelper.isVideo(video)) {\n return {\n ...(extraAnalyticsData || {}),\n id: video.id,\n name: video.name\n };\n }\n\n if (VideoHelper.isClip(video)) {\n const data: HashObject = {\n ...(extraAnalyticsData || {}),\n id: video.id,\n name: video.name\n };\n\n if (video._parentVideo?.id)\n data.video = { id: video._parentVideo?.id, name: video._parentVideo.name };\n\n return data;\n }\n\n const data: HashObject = {\n ...extraAnalyticsData,\n id: video.id,\n interactiveId: video.interactiveId,\n name: video.name,\n status: video.status,\n originType: video.originType\n };\n\n if (video?._parentClip?.id)\n data.clip = { id: video?._parentClip?.id, name: video?._parentClip.name };\n\n if (video?._parentVideo?.id)\n data.video = { id: video?._parentVideo?.id, name: video?._parentVideo.name };\n \n return data;\n },\n\n getCanBeConsumed(video: BaseObject): {\n canNavigate: boolean,\n canConsume: boolean,\n reason?: CanBeConsumedReason\n } {\n if (!video || !VideoHelper.isVideoType(video)) {\n return {\n canNavigate: false,\n canConsume: false\n };\n }\n\n if (video._canBeConsumed) {\n return {\n /**\n * Product navigation is enabled for \"login-required\" reason to support public access. \n * The video itself cannot be consumed, however, clients can allow users to browse the platform.\n * \n * Note: canNavigate is initially available for just videos. Interactives and Clips will be supported in Y2.\n */\n canNavigate: (video._canBeConsumed?.reason === 'login-required' && VideoHelper.isVideo(video)) || video._canBeConsumed.value === true,\n canConsume: video._canBeConsumed.value,\n reason: video._canBeConsumed?.reason\n };\n }\n\n /**\n * Many of the components shared between online and lite read this value.\n * Online doesn't fetch or care about this value, which means by this point it should\n * still be null. In this case, we just set it to true so that the components can render\n * as normal.\n */\n return {\n canNavigate: true,\n canConsume: true\n };\n },\n\n getPrivacyReasoning(video: VideoTypes, showSignIn: boolean = false): string {\n const { canConsume, canNavigate, reason } = VideoHelper.getCanBeConsumed(video);\n\n const getNoLongerAvailableText = () => {\n if (VideoHelper.isClip(video))\n return getPhrase('clipParentDeleted');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveParentDeleted');\n\n return getPhrase('videoDeleted');\n };\n\n const getLoginRequiredText = () => {\n if (VideoHelper.isClip(video))\n return getPhrase('clipLoginRequired');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveLoginRequired');\n\n return getPhrase('videoLoginRequired');\n };\n\n if (!canConsume && !canNavigate) {\n if (showSignIn)\n return getLoginRequiredText();\n\n switch (reason) {\n case 'rating-not-allowed': {\n return getPhrase('ratingNotAllowed');\n }\n\n case 'video-deleted': {\n return getNoLongerAvailableText();\n }\n\n case 'clickview-private': {\n return getPhrase('clickViewPrivate');\n }\n\n case 'private': {\n return getPhrase('genericCannotAccess');\n }\n\n case 'login-required': {\n return getLoginRequiredText();\n }\n\n case 'restricted-access': {\n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n\n if (restriction?.type === RestrictionType.Custom)\n return getPhrase('awaitingApproval');\n\n return getPhrase('restrictedAccess');\n }\n\n default: {\n return getPhrase('genericCannotAccess');\n }\n }\n }\n\n if (VideoHelper.isInteractive(video) && video.status === CurationStatus.Draft)\n return getPhrase('draftInteractive');\n\n return '';\n },\n\n getTitle(video: VideoTypes): string {\n if (video.name) {\n if (VideoHelper.isInteractive(video) && video.status === CurationStatus.Draft) {\n return getPhrase('draftInteractiveTitle', { name: video.name });\n }\n\n return video.name;\n }\n\n const { canConsume, reason } = VideoHelper.getCanBeConsumed(video);\n\n if (!canConsume && reason === 'private')\n return getPhrase('privateVideo');\n\n if (!canConsume && reason === 'video-deleted')\n return getPhrase('videoUnavailable');\n\n return getPhrase('privateVideo');\n },\n\n getParentVideo(video: VideoTypes): Video | null {\n if (VideoHelper.isVideo(video))\n return video;\n\n if (VideoHelper.isClip(video) || VideoHelper.isInteractive(video))\n return video._parentVideo;\n },\n\n getRating(video: VideoTypes): Rating | null {\n if (VideoHelper.isVideo(video))\n return video._rating?.value || video.rating;\n\n return video?._parentVideo?._rating?.value;\n },\n\n getVideoRequest(\n objectId: string,\n objectTypeId: MasterType,\n shareId?: string\n ): Flight.Request {\n if (shareId) {\n switch (objectTypeId) {\n case MasterType.Video:\n return VideoRequests.sharedVideo(objectId, shareId);\n case MasterType.Clip:\n return ClipRequests.sharedClip(objectId, shareId);\n case MasterType.Interactive:\n return InteractiveRequests.sharedInteractiveMetadata(objectId, shareId);\n }\n\n Core.ErrorHelper.throw(new DevError('Unsupported master type'));\n }\n\n switch (objectTypeId) {\n case MasterType.Video:\n return VideoRequests.video(objectId);\n case MasterType.Clip:\n return ClipRequests.clip(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.interactiveMetadata(objectId);\n }\n\n Core.ErrorHelper.throw(new DevError('Unsupported master type'));\n },\n\n isBroadcast(video: Video): boolean {\n return !!video?.contentLicences?.data?.some(l =>\n l.systemName === ContentLicenseType.Era ||\n l.systemName === ContentLicenseType.Screenrights);\n },\n\n isUgc(video: Video): boolean {\n // if video isn't broadcast and isn't curated by the ClickView team, chances are it's UGC\n return (\n !VideoHelper.isBroadcast(video) &&\n !video._curationTags?.value?.isClickViewCurated &&\n !video._curationTags?.value?.isStreamableLearningCurated\n );\n },\n\n getReleaseDate(video: Video): string {\n if (!video)\n return '';\n\n if (video.dateReleased && VideoHelper.isBroadcast(video))\n return DateHelper.format(video.dateReleased, 'DD/MM/YYYY');\n\n return '';\n },\n\n canViewOriginalVideo(video: Clip | InteractiveMetadata): boolean {\n return !!video?._parentVideo?._canBeConsumed?.value;\n },\n\n getTrackingCode(video: VideoTypes): string | undefined {\n if (VideoHelper.isVideo(video))\n return video.trackingCode;\n\n if (VideoHelper.isClip(video) || VideoHelper.isInteractive(video))\n return video._parentVideo.trackingCode;\n },\n\n isInExchange(video: Video): boolean {\n return !!video?.libraries?.data?.some(l => l.typeId === MasterType.ExchangeCollection);\n },\n\n canViewUploadDate(video: Video): boolean {\n if (!video || !video.dateCreated)\n return false;\n\n if (!video._curationTags || video._curationTags?.value?.isClickViewCurated)\n return false;\n\n return true;\n }\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{C as e,D as t,bt as n,fn as r,t as i}from"./B1i9atik.chunk.js";import{_ as a,g as o,t as s}from"./NpQVkKE2.chunk.js";import{T as c}from"./app-
|
|
1
|
+
import{C as e,D as t,bt as n,fn as r,t as i}from"./B1i9atik.chunk.js";import{_ as a,g as o,t as s}from"./NpQVkKE2.chunk.js";import{T as c}from"./app-fNhmX-xT.js";import{n as l,t as u}from"./B4b3fF2e.chunk.js";var d={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},f=r(t()),p=e();function m(e){return(0,p.jsxs)(p.Fragment,{children:[!!e.tab.svg&&(0,p.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,p.jsx)(s,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,typeof e.tab.count==`number`&&(0,p.jsx)(`div`,{className:`ps-2`,children:(0,p.jsx)(u,{type:l.Count,data:e.tab.count})})]})}function h(e){let{borderRadius:t=`lg`}=e,r=c();function s(e){e.analyticsData&&e.analyticsOptions&&i.logUserAction(e.analyticsData,e.analyticsOptions)}function l(e){e.active||!e.onSelect||(e.onSelect(),s(e))}function u(t){let r=t.target.value,i=e.tabs.find(e=>e.name===r);!i||i.active||(s(i),n.trigger(i.appLink))}let h=e.tabs.find(e=>e.active),g=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(r.sm||r.xs);return(0,p.jsxs)(`nav`,{className:e.className??``,children:[g&&(0,p.jsx)(`select`,{className:`form-select`,onChange:u,value:h?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,p.jsx)(f.Fragment,{},n):(0,p.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!g&&(0,p.jsx)(`ul`,{className:`
|
|
2
2
|
list-unstyled d-inline-block m-0 ${d.pillTabSelector}
|
|
3
3
|
${t?d.radiusSmall:``}
|
|
4
4
|
${e.listClassName}
|
|
@@ -12,4 +12,4 @@ import{C as e,D as t,bt as n,fn as r,t as i}from"./B1i9atik.chunk.js";import{_ a
|
|
|
12
12
|
cursor-pointer d-flex align-items-center justify-content-center
|
|
13
13
|
text-decoration-none text-reset px-2 text-nowrap ${d.tabLink}
|
|
14
14
|
`,onClick:()=>l(t),children:(0,p.jsx)(m,{tab:t,formatDisplayText:e.formatDisplayText})})},n))})]})}export{h as t};
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=GSm09vBX.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"GSm09vBX.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n"],"mappings":"oYCwBA,SAAS,EAAY,EAAsC,CACzD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAM,IAAI,MACX,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAM,IAAI,KAAO,OAAS,aACxC,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAM,IAAI,IAAK,KAAM,EAAM,IAAI,QAAW,CAAA,CACzD,CAAA,CAGP,EAAM,oBAAoB,EAAM,IAAI,KAAK,EAAI,EAAM,IAAI,KAEvD,OAAQ,EAAM,IAAI,OAAW,WAC5B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,KAAC,EAAD,CAAO,KAAM,EAAU,MAAO,KAAM,EAAM,IAAI,MAAS,CAAA,CACnD,CAAA,CAEP,CAAA,CAAA,CAiCP,SAAgB,EAAgB,EAA0C,CACxE,GAAM,CAAE,eAAe,MAAS,EAE1B,EAAc,GAAgB,CAEpC,SAAS,EAAa,EAAoB,CACpC,EAAI,eAAiB,EAAI,kBAC3B,EAAgB,cAAc,EAAI,cAAe,EAAI,iBAAiB,CAG1E,SAAS,EAAY,EAAoB,CACnC,EAAI,QAAU,CAAC,EAAI,WAGvB,EAAI,UAAU,CAEd,EAAa,EAAI,EAGnB,SAAS,EAAe,EAAmD,CACzE,IAAM,EAAQ,EAAM,OAAO,MACrB,EAAM,EAAM,KAAK,KAAK,GAAO,EAAI,OAAS,EAAM,CAClD,CAAC,GAAO,EAAI,SAGhB,EAAa,EAAI,CACjB,EAAc,QAAQ,EAAI,QAAQ,EAGpC,IAAM,EAAc,EAAM,KAAK,KAAK,GAAO,EAAI,OAAO,CAChD,EAAqB,EAAM,0BAC3B,EAAM,2BAA6B,EAAY,IAAM,EAAY,IAEvE,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAM,WAAa,YAAnC,CACG,IACC,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,cAAc,SAAU,EAAgB,MAAO,GAAa,KAAM,MAAO,CAAE,SAAU,QAAS,UAC7G,EAAM,KAAK,KAAK,EAAK,IAChB,EAAI,MACC,EAAA,EAAA,KAAA,EAAO,SAAP,EAA6B,CAAR,EAAQ,EAGpC,EAAA,EAAA,KAAC,SAAD,CAEE,MAAO,EAAI,cACV,EAAM,oBAAoB,EAAI,KAAK,EAAI,EAAI,KACrC,CAHF,EAGE,EAGN,CAAA,CAGV,CAAC,IACA,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW;6CACsB,EAAO,gBAAA;YACxC,EAAe,EAAO,YAAc,GAAA;YACpC,EAAM,cAAA;mBAEP,EAAM,KAAK,KAAK,EAAK,IAChB,EAAI,MACC,EAAA,EAAA,KAAA,EAAO,SAAP,EAA6B,CAAR,EAAQ,EAGpC,EAAA,EAAA,KAAC,KAAD,CACE,UAAW;sBACL,EAAO,IAAI,GAAG,EAAI,OAAS,eAAiB,uBAAA;kBAChD,EAAI,KAAO,EAAO,SAAW,GAAG,GAAG,EAAI,UAAA;yBAIxC,EAAI,SACH,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EAAI,QACb,cAAe,EAAI,cACnB,iBAAkB,EAAI,iBACtB,UAAW;;uEAEwC,EAAO,QAAA;8BAG1D,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAK,kBAAmB,EAAM,kBAAqB,CAAA,CAC7D,CAAA,EAEV,EAAA,EAAA,KAAC,EAAD,CACE,UAAW;;uEAEwC,EAAO,QAAA;oBAE1D,YAAe,EAAY,EAAI,WAE/B,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAK,kBAAmB,EAAM,kBAAqB,CAAA,CAC3D,CAAA,CAEX,CAzBE,EAyBF,EAGN,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t,fn as n}from"./B1i9atik.chunk.js";import{g as r,n as i,t as a,v as o}from"./NpQVkKE2.chunk.js";import{t as s}from"./CzvVp9iC.chunk.js";import{t as c}from"./Y2Q2F5X6.chunk.js";import{$ as l}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t,fn as n}from"./B1i9atik.chunk.js";import{g as r,n as i,t as a,v as o}from"./NpQVkKE2.chunk.js";import{t as s}from"./CzvVp9iC.chunk.js";import{t as c}from"./Y2Q2F5X6.chunk.js";import{$ as l}from"./app-fNhmX-xT.js";import{t as u}from"./B7KaaLVd.chunk.js";import{n as d,t as f}from"./BG-pznhQ.chunk.js";var p=n(t()),m=e(),h=s.encloseNamespace(`shared.breadcrumbComponent`),g=64,_=48,v=p.forwardRef((e,t)=>{let{breadcrumb:{name:n,appLink:o,active:s},withBackIcon:c,linkClassName:l}=e,u=n,f=null;return u.length>_&&(u=n.slice(0,_)+`...`,f=n),(0,m.jsx)(`li`,{className:`breadcrumb-item${s?` active`:``}`,title:f,children:s?(0,m.jsx)(`strong`,{children:u}):(0,m.jsxs)(r,{appLink:o,ref:t,className:o?l:``,children:[c&&(0,m.jsx)(a,{svg:d,size:i.Small}),(0,m.jsx)(`span`,{className:c?`ms-2`:``,children:u})]})})}),y=({breadcrumbs:e,linkClassName:t})=>{let n=c(u.XS),r=e?.length||0,[i,a]=p.useState(!1),[o,s]=p.useState(!1),l=p.useRef(null);p.useEffect(()=>{let t=e?.reduce((e,t)=>e+t.name.length,0)??0;r>4&&t>g&&a(!0)},[e?.length]),p.useLayoutEffect(()=>{o&&l.current?.focus()},[l.current,o]);function d(){a(!1),s(!0)}if(!r||n&&r<2)return(0,m.jsx)(m.Fragment,{});if(n)return(0,m.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,m.jsx)(`ol`,{className:`breadcrumb m-0 p-0`,children:(0,m.jsx)(v,{breadcrumb:e[r-2],withBackIcon:!0,linkClassName:t})})});let f=(0,m.jsx)(v,{breadcrumb:e[0],linkClassName:t}),_=r>2?(0,m.jsx)(v,{breadcrumb:e[1],linkClassName:t}):(0,m.jsx)(m.Fragment,{}),y=r>3?(0,m.jsx)(v,{breadcrumb:e[r-2],linkClassName:t}):(0,m.jsx)(m.Fragment,{}),b=r>1?(0,m.jsx)(v,{breadcrumb:e[r-1],linkClassName:t}):(0,m.jsx)(m.Fragment,{}),x=e.slice(2,r-2);return(0,m.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,m.jsxs)(`ol`,{className:`breadcrumb m-0 p-0`,children:[f,_,i?(0,m.jsx)(`li`,{className:`breadcrumb-item`,children:(0,m.jsx)(`button`,{className:`btn-link`,onClick:d,"aria-label":h(`expand`),children:`...`})}):x.map((e,n)=>(0,m.jsx)(v,{breadcrumb:e,ref:n===0?l:null,linkClassName:t},n)),y,b]})})},b=p.memo(function({numItems:e=3}){return c(u.XS)?(0,m.jsx)(`div`,{className:`partial-loading-background`,style:{height:`1.3125rem`,width:`6rem`}}):(0,m.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,m.jsx)(`ol`,{className:`breadcrumb m-0 p-0`,children:f.getPartialLoadingItems({numItems:e}).map(({width:e},t)=>(0,m.jsx)(`li`,{className:`breadcrumb-item`,children:(0,m.jsx)(`span`,{className:`d-inline-block partial-loading-background`,style:{width:e},dangerouslySetInnerHTML:{__html:` `}})},t))})})}),x=`shared.videoSortSelect`,S=o.memoize(()=>({[l.RecentlyAdded]:{name:s.getPhrase(x,`recentlyAdded`)},[l.AtoZ]:{name:s.getPhrase(x,`atoz`)},[l.ZtoA]:{name:s.getPhrase(x,`ztoa`)},[l.Newest]:{name:s.getPhrase(x,`newest`)},[l.Oldest]:{name:s.getPhrase(x,`oldest`)},[l.Series]:{name:s.getPhrase(x,`series`)}}));function C(e){let t=S();return e&&(t={[l.ProductionYear]:{name:s.getPhrase(x,`productionYear`)},...t}),t}w.defaultProps={variant:`light`};function w(e){let t=e.sortTypes||C(e.includeProductionYear);return(0,m.jsxs)(`div`,{className:`dropdown`,children:[(0,m.jsx)(`button`,{className:`btn btn-${e.variant} ms-2 dropdown-toggle`,type:`button`,id:`sort-select`,"data-bs-toggle":`dropdown`,"aria-haspopup":`true`,"aria-expanded":`false`,children:t[e.type].name}),(0,m.jsx)(`ul`,{className:`dropdown-menu dropdown-menu-end`,"aria-labelledby":`sort-select`,children:Object.keys(t).map(n=>{let i=`dropdown-item`;return n===e.type&&(i+=` active`),(0,m.jsx)(`li`,{children:(0,m.jsx)(r,{className:i,appLink:e.getSortAppLink(n),analyticsData:{sort:t[n].name},analyticsOptions:e.analyticsOptions,children:t[n].name})},n)})})]})}export{y as n,b as r,w as t};
|
|
2
|
+
//# sourceMappingURL=HkF7AIye.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DDO16-at.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","../../../../libs/shared/src/components/video-sort-select/VideoSortSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n linkClassName?: string;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon, linkClassName } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active ?\n <strong>{trimmedName}</strong> :\n <AppLink appLink={appLink} ref={ref} className={appLink ? linkClassName : ''}>\n {withBackIcon && <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n linkClassName?: string;\n}\n\nexport const Breadcrumbs = ({ breadcrumbs, linkClassName }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon linkClassName={linkClassName} />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} linkClassName={linkClassName} />;\n const second = length > 2 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[1]} linkClassName={linkClassName} /> :\n <></>;\n const secondLast = length > 3 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} linkClassName={linkClassName} /> :\n <></>;\n const last = length > 1 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} linkClassName={linkClassName} /> :\n <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n linkClassName={linkClassName}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});\n","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\n\nconst namespace = 'shared.videoSortSelect';\n\ntype SortTypes = {[sort: string]: { name: string } };\n\nconst getDefaultSortTypes: () => SortTypes = FunctionHelper.memoize(() => {\n return {\n [VideoSortType.RecentlyAdded]: {\n name: LanguageService.getPhrase(namespace, 'recentlyAdded')\n },\n [VideoSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [VideoSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [VideoSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [VideoSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n },\n [VideoSortType.Series]: {\n name: LanguageService.getPhrase(namespace, 'series')\n }\n };\n});\n\nfunction getSortTypes(productionYear: boolean): SortTypes {\n let defaultSortTypes = getDefaultSortTypes();\n\n if (productionYear) {\n defaultSortTypes = {\n [VideoSortType.ProductionYear]: {\n name: LanguageService.getPhrase(namespace, 'productionYear')\n },\n ...defaultSortTypes\n };\n }\n \n return defaultSortTypes;\n}\n\ninterface VideoSortSelectProps {\n type: VideoSortType;\n getSortAppLink: (sort: string) => Core.AppLink;\n variant?: ButtonProps['variant'];\n sortTypes?: SortTypes;\n analyticsOptions: AnalyticsOptions;\n includeProductionYear?: boolean;\n}\n\nVideoSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function VideoSortSelect(props: VideoSortSelectProps): JSX.Element {\n const sortTypes = props.sortTypes || getSortTypes(props.includeProductionYear);\n\n return (\n <div className='dropdown'>\n <button className={`btn btn-${props.variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[props.type].name}\n </button>\n <ul className='dropdown-menu dropdown-menu-end' aria-labelledby='sort-select'>\n {Object.keys(sortTypes).map(k => {\n let className = 'dropdown-item';\n\n if (k === props.type)\n className += ' active';\n\n return (\n <li key={k}>\n <AppLink\n className={className}\n appLink={props.getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={props.analyticsOptions}\n >\n {sortTypes[k].name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n"],"mappings":"oVAcM,EAAY,EAAgB,iBADhB,6BAC2C,CAEvD,EAA2B,GAC3B,EAAqB,GAcd,EAAA,EAAuB,YAClC,EACA,IACG,CACH,GAAM,CAAE,WAAY,CAAE,OAAM,UAAS,UAAU,eAAc,iBAAkB,EAE3E,EAAc,EACd,EAAgB,KASpB,OAPI,EAAY,OAAS,IACvB,EAAc,EAAK,MAAM,EAAG,EAAmB,CAAG,MAGlD,EAAQ,IAIR,EAAA,EAAA,KAAC,KAAD,CACE,UAAW,kBAAkB,EAAS,UAAY,KAC3C,iBAEN,GACC,EAAA,EAAA,KAAC,SAAD,CAAA,SAAS,EAAqB,CAAA,EAC9B,EAAA,EAAA,MAAC,EAAD,CAAkB,UAAc,MAAK,UAAW,EAAU,EAAgB,YAA1E,CACG,IAAgB,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAgB,KAAM,EAAiB,MAAS,CAAA,EACpF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAe,OAAS,YAAK,EAAmB,CAAA,CAAA,GAGlE,CAAA,EAEP,CAOW,GAAe,CAAE,cAAa,mBAAsC,CAC/E,IAAM,EAAW,EAAc,EAAkB,GAAG,CAE9C,EAAS,GAAa,QAAU,EAEhC,CAAE,EAAU,GAAA,EAAsB,SAAS,GAAM,CACjD,CAAE,EAAa,GAAA,EAAyB,SAAS,GAAM,CACvD,EAAA,EAAkB,OAAoB,KAAK,CAEjD,EAAM,cAAgB,CACpB,IAAM,EAAkB,GAAa,QAAQ,EAAM,IAAS,EAAO,EAAK,KAAK,OAAQ,EAAE,EAAI,EAEvF,EAAS,GAAK,EAAkB,GAClC,EAAY,GAAK,EAClB,CAAC,GAAa,OAAO,CAAC,CAKzB,EAAM,oBAAsB,CACtB,GACF,EAAU,SAAS,OAAO,EAC3B,CAAE,EAAU,QAAS,EAAa,CAAC,CAEtC,SAAS,GAAgB,CACvB,EAAY,GAAM,CAClB,EAAe,GAAK,CAGtB,GAAI,CAAC,GAAW,GAAY,EAAS,EACnC,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CAEd,GAAI,EACF,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,aAAW,uBACd,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,+BACZ,EAAA,EAAA,KAAC,EAAD,CAAgB,WAAY,EAAY,EAAS,GAAI,aAAA,GAA4B,gBAAiB,CAAA,CAC/F,CAAA,CACD,CAAA,CAGV,IAAM,GAAQ,EAAA,EAAA,KAAC,EAAD,CAAgB,WAAY,EAAY,GAAmB,gBAAiB,CAAA,CACpF,EAAS,EAAS,GACtB,EAAA,EAAA,KAAC,EAAD,CAAgB,WAAY,EAAY,GAAmB,gBAAiB,CAAA,EAC5E,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CACD,EAAa,EAAS,GAC1B,EAAA,EAAA,KAAC,EAAD,CAAgB,WAAY,EAAY,EAAS,GAAmB,gBAAiB,CAAA,EACrF,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CACD,EAAO,EAAS,GACpB,EAAA,EAAA,KAAC,EAAD,CAAgB,WAAY,EAAY,EAAS,GAAmB,gBAAiB,CAAA,EACrF,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,CACD,EAAO,EAAY,MAAM,EAAG,EAAS,EAAE,CAE7C,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,aAAW,uBACd,EAAA,EAAA,MAAC,KAAD,CAAI,UAAU,8BAAd,CACG,EACA,EACA,GACC,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,4BACZ,EAAA,EAAA,KAAC,SAAD,CACE,UAAU,WACV,QAAS,EACT,aAAY,EAAU,SAAS,UAChC,MAEQ,CAAA,CACN,CAAA,CACL,EAAK,KAAK,EAAY,KACpB,EAAA,EAAA,KAAC,EAAD,CAEc,aACZ,IAAK,IAAQ,EAAI,EAAY,KACd,gBACf,CAJK,EAIL,CACF,CAEH,EACA,KAEC,CAAA,EAIG,EAAA,EAA2B,KAAK,SAAS,CAAE,WAAW,GAA4B,CAS7F,OARiB,EAAc,EAAkB,GAAG,EAIhD,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6BAA6B,MAAO,CAAE,OAAQ,YAAa,MAAO,QAAY,CAAA,EAK/F,EAAA,EAAA,KAAC,MAAD,CAAK,aAAW,uBACd,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,8BACX,EAAqB,uBAAuB,CAAE,WAAU,CAAC,CAAC,KAAK,CAAE,SAAS,KACzE,EAAA,EAAA,KAAC,KAAD,CAAc,UAAU,4BACtB,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4CAA4C,MAAO,CAAE,QAAO,CAAE,wBAAyB,CAAE,OAAQ,QAAA,CAAa,CAAA,CAC3H,CAFI,EAEJ,CAAA,CAEJ,CAAA,CACD,CAAA,EAER,CChKI,EAAY,yBAIZ,EAAuC,EAAe,aACnD,EACJ,EAAc,eAAgB,CAC7B,KAAM,EAAgB,UAAU,EAAW,gBAAgB,CAC5D,EACA,EAAc,MAAO,CACpB,KAAM,EAAgB,UAAU,EAAW,OAAO,CACnD,EACA,EAAc,MAAO,CACpB,KAAM,EAAgB,UAAU,EAAW,OAAO,CACnD,EACA,EAAc,QAAS,CACtB,KAAM,EAAgB,UAAU,EAAW,SAAS,CACrD,EACA,EAAc,QAAS,CACtB,KAAM,EAAgB,UAAU,EAAW,SAAS,CACrD,EACA,EAAc,QAAS,CACtB,KAAM,EAAgB,UAAU,EAAW,SAAS,CAAA,CAEvD,EACD,CAEF,SAAS,EAAa,EAAoC,CACxD,IAAI,EAAmB,GAAqB,CAW5C,OATI,IACF,EAAmB,EAChB,EAAc,gBAAiB,CAC9B,KAAM,EAAgB,UAAU,EAAW,iBAAiB,CAC7D,CACD,GAAG,EACJ,EAGI,EAYT,EAAgB,aAAe,CAC7B,QAAS,QACV,CAED,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAY,EAAM,WAAa,EAAa,EAAM,sBAAsB,CAE9E,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oBAAf,EACE,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAW,WAAW,EAAM,QAAQ,uBAAwB,KAAK,SAAS,GAAG,cAAc,iBAAe,WAAW,gBAAc,OAAO,gBAAc,iBAC7J,EAAU,EAAM,MAAM,KAChB,CAAA,EACT,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,kCAAkC,kBAAgB,uBAC7D,OAAO,KAAK,EAAU,CAAC,IAAI,GAAK,CAC/B,IAAI,EAAY,gBAKhB,OAHI,IAAM,EAAM,OACd,GAAa,YAGb,EAAA,EAAA,KAAC,KAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CACa,YACX,QAAS,EAAM,eAAe,EAAE,CAChC,cAAe,CACb,KAAM,EAAU,GAAG,KACpB,CACD,iBAAkB,EAAM,0BAEvB,EAAU,GAAG,KACN,CAAA,CACP,CAXI,EAWJ,GAGN,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"HkF7AIye.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","../../../../libs/shared/src/components/video-sort-select/VideoSortSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n linkClassName?: string;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon, linkClassName } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active ?\n <strong>{trimmedName}</strong> :\n <AppLink appLink={appLink} ref={ref} className={appLink ? linkClassName : ''}>\n {withBackIcon && <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n linkClassName?: string;\n}\n\nexport const Breadcrumbs = ({ breadcrumbs, linkClassName }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon linkClassName={linkClassName} />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} linkClassName={linkClassName} />;\n const second = length > 2 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[1]} linkClassName={linkClassName} /> :\n <></>;\n const secondLast = length > 3 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} linkClassName={linkClassName} /> :\n <></>;\n const last = length > 1 ?\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} linkClassName={linkClassName} /> :\n <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n linkClassName={linkClassName}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});\n","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\n\nconst namespace = 'shared.videoSortSelect';\n\ntype SortTypes = {[sort: string]: { name: string } };\n\nconst getDefaultSortTypes: () => SortTypes = FunctionHelper.memoize(() => {\n return {\n [VideoSortType.RecentlyAdded]: {\n name: LanguageService.getPhrase(namespace, 'recentlyAdded')\n },\n [VideoSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [VideoSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [VideoSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [VideoSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n },\n [VideoSortType.Series]: {\n name: LanguageService.getPhrase(namespace, 'series')\n }\n };\n});\n\nfunction getSortTypes(productionYear: boolean): SortTypes {\n let defaultSortTypes = getDefaultSortTypes();\n\n if (productionYear) {\n defaultSortTypes = {\n [VideoSortType.ProductionYear]: {\n name: LanguageService.getPhrase(namespace, 'productionYear')\n },\n ...defaultSortTypes\n };\n }\n \n return defaultSortTypes;\n}\n\ninterface VideoSortSelectProps {\n type: VideoSortType;\n getSortAppLink: (sort: string) => Core.AppLink;\n variant?: ButtonProps['variant'];\n sortTypes?: SortTypes;\n analyticsOptions: AnalyticsOptions;\n includeProductionYear?: boolean;\n}\n\nVideoSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function VideoSortSelect(props: VideoSortSelectProps): JSX.Element {\n const sortTypes = props.sortTypes || getSortTypes(props.includeProductionYear);\n\n return (\n <div className='dropdown'>\n <button className={`btn btn-${props.variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[props.type].name}\n </button>\n <ul className='dropdown-menu dropdown-menu-end' aria-labelledby='sort-select'>\n {Object.keys(sortTypes).map(k => {\n let className = 'dropdown-item';\n\n if (k === props.type)\n className += ' active';\n\n return (\n <li key={k}>\n <AppLink\n className={className}\n appLink={props.getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={props.analyticsOptions}\n >\n {sortTypes[k].name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t,b as n,fn as r,s as i}from"./B1i9atik.chunk.js";import{_ as a,g as o}from"./NpQVkKE2.chunk.js";import{t as s}from"./CrBD6Z4s.chunk.js";import{t as c}from"./BIhfRmDn.chunk.js";import{n as l,r as u}from"./kh-nUTBX.chunk.js";import{I as d,T as f}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t,b as n,fn as r,s as i}from"./B1i9atik.chunk.js";import{_ as a,g as o}from"./NpQVkKE2.chunk.js";import{t as s}from"./CrBD6Z4s.chunk.js";import{t as c}from"./BIhfRmDn.chunk.js";import{n as l,r as u}from"./kh-nUTBX.chunk.js";import{I as d,T as f}from"./app-fNhmX-xT.js";import{t as p}from"./DXN-HToH2.chunk.js";import{t as m}from"./BU8rJI4_2.chunk.js";import{t as h}from"./DrNTTfHX.chunk.js";import{n as g}from"./KRUU7yGI.chunk.js";import{n as _,r as v,t as y}from"./CnBbU5eq.chunk.js";var b={actions:`_actions_1psxq_1`,actionsContainer:`_actionsContainer_1psxq_14`,ownerLogo:`_ownerLogo_1psxq_24`,dropStyle:`_dropStyle_1psxq_33`,dragStyle:`_dragStyle_1psxq_38`},x=r(t()),S=e();function C(e){let t=e.folder.thumbnail?s.urlBuilder(e.folder.thumbnail.url,{size:l.Small}):null,r=e.folder?.libraries?.data?.[0]?.owner,a=e.showOwnerLogo&&r?.logo?.url?s.urlBuilder(r.logo.url,{size:l.Small}):null,c=e.getFolderActions?.(e.folder),d=e.analyticsData?{id:e.folder.id.toString(),name:e.folder.name,...e.analyticsData}:void 0,f=e.analyticsOptions?{actionType:n.Click,entity:i.Folder,...e.analyticsOptions}:void 0;return(0,S.jsx)(h,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:b.dropStyle,dragStyle:b.dragStyle,children:(0,S.jsxs)(`div`,{className:`position-relative`,children:[(0,S.jsxs)(o,{className:`rounded-3 d-block text-decoration-none`,appLink:e.getAppLink(e.folder),title:e.folder.name,analyticsData:d,analyticsOptions:f,children:[(0,S.jsx)(g,{data:t,imageType:u.Thumbnails,imageClassName:`rounded-top-lg`,children:(0,S.jsx)(_,{name:e.folder.name,type:v.Folder,extraClasses:`rounded-top-lg`})}),(0,S.jsx)(`h3`,{className:`bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2`,children:(0,S.jsx)(`span`,{className:`text-truncate d-block`,children:e.folder.name})})]}),c?.length&&(0,S.jsx)(p,{actions:c,className:b.actionsContainer,actionsDropdownClassName:b.actions,dropdownToggleSvgSize:null}),!!a&&(0,S.jsx)(`img`,{src:a,className:`rounded-circle ${b.ownerLogo}`,alt:`${r?.name} logo`,title:r?.name||``})]})})}var w=`libraries.folderList`,T=`has:expanded:library:folders`;function E(){let e=f();return e.xxl||e.xl||e.lg?6:e.md?4:3}D.defaultProps={showHeading:!0};function D(e){let[t,n]=x.useState(c.get(T)||!1),r=e.expandFolders||t,i=E();function o(){n(!r),c.set(T,!r)}let s=r?e.folders:e.folders.slice(0,i),l=e.folders.length>i&&!e.expandFolders;return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center`,children:[e.showHeading&&(0,S.jsxs)(a,{className:`d-inline-flex align-items-center mb-2 px-2 ${l?``:`cursor-default`}`,onClick:o,children:[l&&(0,S.jsx)(m,{direction:r?`down`:`right`}),(0,S.jsx)(`h2`,{className:`h4 mb-0`,children:(0,S.jsx)(d,{namespace:w,phrase:`folders`,options:{count:e.folders.length}})})]}),!!(!r&&l)&&(0,S.jsx)(`div`,{className:`d-flex justify-content-end justify-self-end px-2`,children:(0,S.jsx)(a,{onClick:o,className:`text-dark hover-text-underline d-inline-block`,children:(0,S.jsx)(d,{namespace:w,phrase:`seeAll`,options:{count:e.folders.length}})})}),!!(r&&l)&&(0,S.jsx)(`div`,{className:`d-flex justify-content-end justify-self-end px-2`,children:(0,S.jsx)(a,{onClick:o,className:`text-dark hover-text-underline d-inline-block`,children:(0,S.jsx)(d,{namespace:w,phrase:`seeLess`})})}),e.extraButtons?e.extraButtons:(0,S.jsx)(S.Fragment,{})]}),(0,S.jsx)(`div`,{className:`row mx-1`,children:s.map(t=>(0,S.jsx)(`div`,{className:`col-4 col-md-3 col-lg-2 px-1 pb-3`,children:(0,S.jsx)(C,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop})},t.id))})]})}function O(e,t){let n=e,r=t,i=y(e&&(e=>n(e).key));return(0,x.useEffect)(()=>{i&&i.shouldInitialFetch&&t&&r()},[i?.shouldInitialFetch,t]),(0,x.useEffect)(()=>{!i||!i.nextCursor||i.isFetching||!t||r(i.nextCursor)},[i?.nextCursor,i?.isFetching,t]),i}var k={partialFolderHeading:`_partialFolderHeading_1surw_1`,partialFolderThumbnail:`_partialFolderThumbnail_1surw_4`,partialFolderName:`_partialFolderName_1surw_7`},A=()=>(0,S.jsxs)(`div`,{className:`col-4 col-md-3 col-lg-2 px-1 pb-3`,children:[(0,S.jsx)(`div`,{className:`${k.partialFolderThumbnail} partial-loading-background rounded-top-lg`}),(0,S.jsx)(`div`,{className:`${k.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`,children:`\xA0`})]});function j({count:e=3}){return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`${k.partialFolderHeading} h4 mb-2 partial-loading-background`,children:`\xA0`}),(0,S.jsx)(`div`,{className:`row mx-n1`,children:Array(e).fill(null).map((e,t)=>(0,S.jsx)(A,{},t))})]})}export{O as n,D as r,j as t};
|
|
2
|
+
//# sourceMappingURL=I1XD6JKC.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BI2S4EFA.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/library-folder/library-folder.module.scss","../../../../libs/shared/src/components/library-folder/LibraryFolder.tsx","../../../../libs/shared/src/components/folder-list/FolderList.tsx","../../../../libs/shared/src/hooks/UseFetchAll.ts","../../../../libs/shared/src/components/folder-list/partial-loading/partial-folder-list.module.scss","../../../../libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx"],"sourcesContent":[":local {\n .actions {\n background: none;\n color: $white;\n border: none;\n padding: 0;\n outline: inherit;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n\n &:hover {\n background-color: rgba(0, 0, 0, .5);\n }\n }\n\n .actionsContainer {\n position: absolute;\n top: 0;\n right: 0;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: 0.9375rem;\n margin-right: 0.9375rem;\n z-index: 10;\n }\n\n .ownerLogo {\n position: absolute;\n top: 0;\n left: 0;\n width: 2rem;\n height: 2rem;\n margin-top: 0.9375rem;\n margin-left: 0.9375rem;\n }\n\n .dropStyle {\n box-shadow: 0 0 $focus-ring-blur 2px $gray-900;\n border-radius: $border-radius-lg;\n background: $gray-900;\n }\n\n .dragStyle {\n opacity: 0.5;\n }\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.module.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail ?\n UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small }) :\n null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url ?\n UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small }) :\n null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}\n","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}\n","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectAllPagesResult, useSelectAllPages } from './UseSelectAllPages';\n\n/**\n * Hook to fetch all pages of a collection.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useFetchAll<T = BaseObject>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false\n): SelectAllPagesResult<T> {\n const getRequestFn = getRequest as (cursor?: string) => Flight.Request;\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext)\n fetchNextFn();\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response || !response.nextCursor || response.isFetching || !fetchNext)\n return;\n\n fetchNextFn(response.nextCursor);\n }, [ response?.nextCursor, response?.isFetching, fetchNext ]);\n\n return response;\n}\n",":local {\n .partialFolderHeading {\n width: 6.25rem;\n }\n\n .partialFolderThumbnail {\n padding-bottom: 56.25%;\n }\n\n .partialFolderName {\n line-height: 1.2;\n }\n}","import React from 'react';\n\nimport styles from './partial-folder-list.module.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"I1XD6JKC.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/library-folder/library-folder.module.scss","../../../../libs/shared/src/components/library-folder/LibraryFolder.tsx","../../../../libs/shared/src/components/folder-list/FolderList.tsx","../../../../libs/shared/src/hooks/UseFetchAll.ts","../../../../libs/shared/src/components/folder-list/partial-loading/partial-folder-list.module.scss","../../../../libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx"],"sourcesContent":[":local {\n .actions {\n background: none;\n color: $white;\n border: none;\n padding: 0;\n outline: inherit;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n\n &:hover {\n background-color: rgba(0, 0, 0, .5);\n }\n }\n\n .actionsContainer {\n position: absolute;\n top: 0;\n right: 0;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: 0.9375rem;\n margin-right: 0.9375rem;\n z-index: 10;\n }\n\n .ownerLogo {\n position: absolute;\n top: 0;\n left: 0;\n width: 2rem;\n height: 2rem;\n margin-top: 0.9375rem;\n margin-left: 0.9375rem;\n }\n\n .dropStyle {\n box-shadow: 0 0 $focus-ring-blur 2px $gray-900;\n border-radius: $border-radius-lg;\n background: $gray-900;\n }\n\n .dragStyle {\n opacity: 0.5;\n }\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.module.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail ?\n UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small }) :\n null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url ?\n UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small }) :\n null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}\n","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}\n","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectAllPagesResult, useSelectAllPages } from './UseSelectAllPages';\n\n/**\n * Hook to fetch all pages of a collection.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useFetchAll<T = BaseObject>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false\n): SelectAllPagesResult<T> {\n const getRequestFn = getRequest as (cursor?: string) => Flight.Request;\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext)\n fetchNextFn();\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response || !response.nextCursor || response.isFetching || !fetchNext)\n return;\n\n fetchNextFn(response.nextCursor);\n }, [ response?.nextCursor, response?.isFetching, fetchNext ]);\n\n return response;\n}\n",":local {\n .partialFolderHeading {\n width: 6.25rem;\n }\n\n .partialFolderThumbnail {\n padding-bottom: 56.25%;\n }\n\n .partialFolderName {\n line-height: 1.2;\n }\n}","import React from 'react';\n\nimport styles from './partial-folder-list.module.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as e,D as t,b as n,d as r,s as i,y as a}from"./B1i9atik.chunk.js";import{g as o}from"./NpQVkKE2.chunk.js";import{l as s}from"./TJBzqR6k.chunk.js";import{t as c}from"./CzvVp9iC.chunk.js";import{n as l,t as u}from"./Dn3hwC-o.chunk.js";import{t as d}from"./CBwR65WF.chunk.js";import{t as f}from"./DKbUI-vj.chunk.js";import{D as p,I as m,Z as h}from"./app-fNhmX-xT.js";import{t as g}from"./CfCxi56P.chunk.js";import{t as _}from"./DWVn5hOy2.chunk.js";import{t as v}from"./DjUmgrOk2.chunk.js";import{n as y,t as b}from"./BLrooXWI2.chunk.js";import{n as x}from"./Bj6lJgAv2.chunk.js";import{t as S}from"./C8dtRvC52.chunk.js";import{t as C}from"./DjdW7gMz.chunk.js";import{t as w}from"./Bbaycd7V.chunk.js";t();var T={cardContainer:`_cardContainer_p5jjm_1`,image:`_image_p5jjm_4`},E=e();function D(e){return(0,E.jsx)(`div`,{className:`${T.cardContainer} px-2 mb-3`,children:(0,E.jsxs)(o,{className:`${e.className} border rounded-3 py-3 px-4 d-block text-center`,appLink:e.appLink,children:[(0,E.jsx)(`div`,{className:`${T.image} d-flex align-items-center justify-content-center`,children:(0,E.jsx)(`img`,{className:`mh-100`,src:e.logoUrl})}),(0,E.jsx)(`p`,{className:`fw-semibold text-dark text-truncate mb-0`,children:e.name})]})})}var O={cardContainer:`_cardContainer_1s4mp_1`,image:`_image_1s4mp_4`};function k(){return(0,E.jsx)(`div`,{className:`${O.cardContainer} px-2 mb-3`,children:(0,E.jsxs)(`div`,{className:`partial-loading-background border rounded-3 py-3 px-4`,children:[(0,E.jsx)(`div`,{className:`${O.image}`}),(0,E.jsx)(`p`,{className:`mb-0`,children:`\xA0`})]})})}function A(e){return(0,E.jsx)(E.Fragment,{children:(0,E.jsx)(`div`,{className:`row mb-2`,children:[...Array(e.cards)].map((e,t)=>(0,E.jsx)(k,{},t))})})}var j={cardContainer:`_cardContainer_7wzee_1`,image:`_image_7wzee_4`},M=`tv.tvRegionSelectMap`,N=e=>{let t=w(e.instanceRegion);return!e.regions||!e.currentRegion?(0,E.jsx)(A,{cards:5}):e.regions.length<=1?(0,E.jsx)(E.Fragment,{}):(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`h2`,{className:`h4`,children:(0,E.jsx)(m,{namespace:M,phrase:`regions`,options:{country:t.country}})}),(0,E.jsx)(`div`,{className:`row`,children:e.regions.map((t,s)=>{if(t.id!==e.currentRegion.id)return(0,E.jsx)(`div`,{className:`${j.cardContainer} px-2 mb-3`,children:(0,E.jsxs)(o,{className:`border rounded-3 py-3 px-4 d-block text-center`,appLink:{...e.appLink,args:[t.code]},analyticsData:{region:e.currentRegion.code},analyticsOptions:{actionType:n.Click,entity:i.Region,location:r.RegionMap,descriptor:a.RegionSelect},onClick:()=>e.onClick(t),children:[(0,E.jsx)(`div`,{className:`${j.image} d-flex align-items-center justify-content-center`,children:(0,E.jsx)(`img`,{src:`https://tv.clickview.com.au/content/images/${t.code}.png`})}),(0,E.jsx)(`p`,{className:`fw-semibold text-dark mb-0`,children:t.stateFull})]})},s)})})]})},P=c.encloseNamespace(`tv.channels`);function F(e){let t=s(_.region(e.region)),n=s(_.dateRange(e.region)),r=s(_.regions()),i=s(h.config()),a=s(t.data&&_.channels(t.data.code)),o=s(t.data&&_.regionStatus(t.data.code)),c=s(f.currentUser()),m=c.data?.instanceRegion,{setRegion:T}=S(),{liteUpgradeTypeCustomer:O}=p(null);v(t),g([r,a]),d({title:P(`title`)});let k=t.hasCompleted&&r.hasCompleted&&n.hasCompleted&&a.hasCompleted&&c.hasCompleted,j=w(m);return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(C,{currentRegion:t.data,message:o?.data?.message}),(0,E.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,E.jsx)(b,{active:`channels`,currentRegion:t.data,showTvGuide:!!O,config:i.data}),(0,E.jsx)(x,{currentRegion:t.data,regions:r.data,appLink:{application:l.TV,action:u.Tv.CHANNELS},onClick:T})]}),(0,E.jsx)(y,{dateRange:n.data,region:t.data}),k?(0,E.jsx)(E.Fragment,{children:(0,E.jsxs)(`div`,{className:`row mb-2`,children:[!!j.requestProgram&&(0,E.jsx)(D,{appLink:{application:l.TV,action:u.Tv.REQUEST_PROGRAM,args:[e.region]},logoUrl:j.logo,name:P(`requestProgram`),className:j.bgColor}),a.data.map((t,n)=>(0,E.jsx)(D,{appLink:{application:l.TV,action:u.Tv.CHANNEL,args:[t.region,t.id],params:{region:t.region===e.region?null:e.region}},logoUrl:t.logoUrl,name:t.displayName},n))]})}):(0,E.jsx)(A,{cards:20}),(0,E.jsx)(N,{instanceRegion:m,currentRegion:t.data,regions:r.data,appLink:{application:l.TV,action:u.Tv.CHANNELS},onClick:T})]})}export{F as TvChannelsView};
|
|
2
|
+
//# sourceMappingURL=MGxL1vUn.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MGxL1vUn.chunk.js","names":[],"sources":["../../src/apps/tv/views/tv-channels/components/tv-channel-card/tv-channel-card.module.scss","../../src/apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard.tsx","../../src/apps/tv/views/tv-channels/partial-loading/partial-card-row.module.scss","../../src/apps/tv/views/tv-channels/partial-loading/PartialCardRow.tsx","../../src/apps/tv/views/tv-channels/components/tv-region-select-map/tv-region-select-map.module.scss","../../src/apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap.tsx","../../src/apps/tv/views/tv-channels/TvChannelsView.tsx"],"sourcesContent":[":local {\n .cardContainer {\n width: 20%;\n }\n\n .image {\n height: 5rem;\n\n img {\n max-width: 7.5rem;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './tv-channel-card.module.scss';\n\ninterface TvChannelCardProps {\n appLink: Core.AppLink;\n logoUrl: string;\n name: string;\n className?: string;\n}\n\nexport function TvChannelCard(props: TvChannelCardProps): JSX.Element {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className={`${props.className} border rounded-3 py-3 px-4 d-block text-center`}\n appLink={props.appLink}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n className='mh-100'\n src={props.logoUrl}\n />\n </div>\n <p className='fw-semibold text-dark text-truncate mb-0'>\n {props.name}\n </p>\n </AppLink>\n </div>\n );\n}\n",":local {\n .cardContainer {\n width: 20%;\n }\n\n .image {\n height: 5rem;\n }\n}","import React from 'react';\n\nimport styles from './partial-card-row.module.scss';\n\nfunction PartialRow() {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <div className='partial-loading-background border rounded-3 py-3 px-4'>\n <div className={`${styles.image}`}></div>\n <p className='mb-0'> </p>\n </div>\n </div>\n );\n}\n\ninterface PartialCardRowProps {\n cards: number;\n}\n\nexport function PartialCardRow(props: PartialCardRowProps) {\n return (\n <>\n <div className='row mb-2'>\n {[...Array(props.cards)].map((_, index) => <PartialRow key={index} />)}\n </div>\n </>\n );\n}\n",":local {\n .cardContainer {\n width: 20%;\n }\n\n .image {\n height: 5rem;\n\n img {\n max-width: 7.5rem;\n max-height: 100%;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { EntityType, LocationContext, TvDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { PartialCardRow } from 'apps/tv/views/tv-channels/partial-loading/PartialCardRow';\n\nimport styles from './tv-region-select-map.module.scss';\n\nconst namespace = 'tv.tvRegionSelectMap';\n\ninterface TvRegionSelectMapProps {\n instanceRegion: InstanceRegion;\n currentRegion: TvRegion;\n regions: TvRegion[];\n appLink: Core.AppLink;\n onClick: (region: TvRegion) => void;\n}\n\nconst TvRegionSelectMap = (props: TvRegionSelectMapProps) => {\n const regionInfo = getRegionInfo(props.instanceRegion);\n\n if (!props.regions || !props.currentRegion)\n return <PartialCardRow cards={5} />;\n\n if (props.regions.length <= 1)\n return <></>;\n \n return (\n <>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase='regions'\n options={{ country: regionInfo.country }}\n />\n </h2>\n <div className='row'>\n {props.regions.map((region, index) => {\n if (region.id !== props.currentRegion.id)\n return (\n <div key={index} className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className='border rounded-3 py-3 px-4 d-block text-center'\n appLink={{\n ...props.appLink,\n args: [region.code]\n }}\n analyticsData={{ region: props.currentRegion.code }}\n analyticsOptions={{\n actionType: UserAction.Click,\n entity: EntityType.Region,\n location: LocationContext.RegionMap,\n descriptor: TvDescriptor.RegionSelect\n }}\n onClick={() => props.onClick(region)}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n src={`https://tv.clickview.com.au/content/images/${region.code}.png`}\n />\n </div>\n <p className='fw-semibold text-dark mb-0'>\n {region.stateFull}\n </p>\n </AppLink>\n </div>\n );\n })}\n </div>\n </>\n );\n};\n\nexport default TvRegionSelectMap;\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { TvStatusWithRegionCode } from 'libs/shared/interfaces/TvStatus';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvHeader } from 'apps/tv/components/tv-header/TvHeader';\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { TvChannelCard } from 'apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard';\nimport TvRegionSelectMap from 'apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap';\n\nimport { PartialCardRow } from './partial-loading/PartialCardRow';\n\nconst namespace = 'tv.channels';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvChannelsViewProps {\n region: string;\n}\n\nexport function TvChannelsView(props: TvChannelsViewProps): JSX.Element {\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n const statusRequest = Flight.useBasicFetch<TvStatusWithRegionCode>(\n region.data && TvRequests.regionStatus(region.data.code)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n\n const { setRegion } = useSelectedRegion();\n const { liteUpgradeTypeCustomer } = useSettings(null);\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n channels.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const regionInfo = getRegionInfo(instanceRegion);\n\n return (\n <>\n <TvHeader currentRegion={region.data} message={statusRequest?.data?.message}/>\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\n currentRegion={region.data}\n showTvGuide={!!liteUpgradeTypeCustomer}\n config={config.data}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {dataLoaded ? (\n <>\n <div className='row mb-2'>\n {!!regionInfo.requestProgram &&\n <TvChannelCard\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.REQUEST_PROGRAM,\n args: [props.region]\n }}\n logoUrl={regionInfo.logo}\n name={getPhrase('requestProgram')}\n className={regionInfo.bgColor}\n />\n }\n {channels.data.map((channel, index) => {\n return (\n <TvChannelCard\n key={index}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNEL,\n args: [ channel.region, channel.id ],\n params: {\n region: channel.region !== props.region ? props.region : null\n }\n }}\n logoUrl={channel.logoUrl}\n name={channel.displayName}\n />\n );\n })}\n </div>\n </>\n ) : <PartialCardRow cards={20} />}\n\n <TvRegionSelectMap\n instanceRegion={instanceRegion}\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </>\n );\n}\n"],"mappings":"kxBCeA,SAAgB,EAAc,EAAwC,CACpE,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,cAAc,sBACtC,EAAA,EAAA,MAAC,EAAD,CACE,UAAW,GAAG,EAAM,UAAU,iDAC9B,QAAS,EAAM,iBAFjB,EAIE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,MAAM,6DAC9B,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,SACV,IAAK,EAAM,QACX,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oDACV,EAAM,KACL,CAAA,CAAA,GAEF,CAAA,uEE5BV,SAAS,GAAa,CACpB,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,cAAc,sBACtC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iEAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,QAAe,CAAA,EACzC,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,gBAAO,OAAU,CAAA,CAAA,GAE5B,CAAA,CAQV,SAAgB,EAAe,EAA4B,CACzD,OACE,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oBACZ,CAAC,GAAG,MAAM,EAAM,MAAM,CAAC,CAAC,KAAK,EAAG,KAAU,EAAA,EAAA,KAAC,EAAD,EAA0B,CAAT,EAAS,CAAA,CACjE,CAAA,CACL,CAAA,uEETD,EAAY,uBAUZ,EAAqB,GAAkC,CAC3D,IAAM,EAAa,EAAc,EAAM,eAAe,CAQtD,MANI,CAAC,EAAM,SAAW,CAAC,EAAM,eACpB,EAAA,EAAA,KAAC,EAAD,CAAgB,MAAO,EAAK,CAAA,CAEjC,EAAM,QAAQ,QAAU,GACnB,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA,EAGZ,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,eACZ,EAAA,EAAA,KAAC,EAAD,CACa,YACX,OAAO,UACP,QAAS,CAAE,QAAS,EAAW,QAAA,CAC/B,CAAA,CACC,CAAA,EACL,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,eACZ,EAAM,QAAQ,KAAK,EAAQ,IAAU,CACpC,GAAI,EAAO,KAAO,EAAM,cAAc,GACpC,OACE,EAAA,EAAA,KAAC,MAAD,CAAiB,UAAW,GAAG,EAAO,cAAc,sBAClD,EAAA,EAAA,MAAC,EAAD,CACE,UAAU,iDACV,QAAS,CACP,GAAG,EAAM,QACT,KAAM,CAAC,EAAO,KAAA,CACf,CACD,cAAe,CAAE,OAAQ,EAAM,cAAc,KAAM,CACnD,iBAAkB,CAChB,WAAY,EAAW,MACvB,OAAQ,EAAW,OACnB,SAAU,EAAgB,UAC1B,WAAY,EAAa,aAC1B,CACD,YAAe,EAAM,QAAQ,EAAO,UAbtC,EAeE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,MAAM,6DAC9B,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,8CAA8C,EAAO,KAAK,MAC/D,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,sCACV,EAAO,UACN,CAAA,CAAA,GAEF,CAzBI,EAyBJ,GAGR,CAAA,CACL,CAAA,CAAA,EC7CD,EAAY,EAAgB,iBADhB,cAC2C,CAM7D,SAAgB,EAAe,EAAyC,CACtE,IAAM,EAAS,EAA+B,EAAW,OAAO,EAAM,OAAO,CAAC,CACxE,EAAY,EAAkC,EAAW,UAAU,EAAM,OAAO,CAAC,CACjF,EAAU,EAAiC,EAAW,SAAS,CAAC,CAChE,EAAS,EAA6B,EAAe,QAAQ,CAAC,CAC9D,EAAW,EACf,EAAO,MAAQ,EAAW,SAAS,EAAO,KAAK,KAAK,CACrD,CACK,EAAgB,EACpB,EAAO,MAAQ,EAAW,aAAa,EAAO,KAAK,KAAK,CACzD,CAEK,EAAc,EAAkC,EAAa,aAAa,CAAC,CAC3E,EAAiB,EAAY,MAAM,eAEnC,CAAE,aAAc,GAAmB,CACnC,CAAE,2BAA4B,EAAY,KAAK,CAErD,EAAqB,EAAO,CAC5B,EAAqB,CAAE,EAAS,EAAU,CAAC,CAE3C,EAAmB,CAAE,MAAO,EAAU,QAAQ,CAAE,CAAC,CAEjD,IAAM,EACJ,EAAO,cACP,EAAQ,cACR,EAAU,cACV,EAAS,cACT,EAAY,aAGR,EAAa,EAAc,EAAe,CAEhD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CAAU,cAAe,EAAO,KAAM,QAAS,GAAe,MAAM,QAAU,CAAA,EAE9E,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0CAAf,EACE,EAAA,EAAA,KAAC,EAAD,CACE,OAAO,WACP,cAAe,EAAO,KACtB,YAAa,CAAC,CAAC,EACf,OAAQ,EAAO,KACf,CAAA,EAEF,EAAA,EAAA,KAAC,EAAD,CACE,cAAe,EAAO,KACtB,QAAS,EAAQ,KACjB,QAAS,CACP,YAAa,EAAY,GACzB,OAAQ,EAAQ,GAAG,SACpB,CACD,QAAS,EACT,CAAA,CACE,IAEN,EAAA,EAAA,KAAC,EAAD,CAAa,UAAW,EAAU,KAAM,OAAQ,EAAO,KAAQ,CAAA,CAE9D,GACC,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,UACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oBAAf,CACG,CAAC,CAAC,EAAW,iBACZ,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,CACP,YAAa,EAAY,GACzB,OAAQ,EAAQ,GAAG,gBACnB,KAAM,CAAC,EAAM,OAAO,CACrB,CACD,QAAS,EAAW,KACpB,KAAM,EAAU,iBAAiB,CACjC,UAAW,EAAW,QACtB,CAAA,CAEH,EAAS,KAAK,KAAK,EAAS,KAEzB,EAAA,EAAA,KAAC,EAAD,CAEE,QAAS,CACP,YAAa,EAAY,GACzB,OAAQ,EAAQ,GAAG,QACnB,KAAM,CAAE,EAAQ,OAAQ,EAAQ,GAAI,CACpC,OAAQ,CACN,OAAQ,EAAQ,SAAW,EAAM,OAAwB,KAAf,EAAM,OACjD,CACF,CACD,QAAS,EAAQ,QACjB,KAAM,EAAQ,YACd,CAXK,EAWL,CAEJ,CACE,GACL,CAAA,EACD,EAAA,EAAA,KAAC,EAAD,CAAgB,MAAO,GAAM,CAAA,EAEjC,EAAA,EAAA,KAAC,EAAD,CACkB,iBAChB,cAAe,EAAO,KACtB,QAAS,EAAQ,KACjB,QAAS,CACP,YAAa,EAAY,GACzB,OAAQ,EAAQ,GAAG,SACpB,CACD,QAAS,EACT,CAAA,CACD,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{C as e,D as t}from"./B1i9atik.chunk.js";var n={channelBadge:`_channelBadge_1riea_1`,small:`_small_1riea_4`};t();var r=e();function i(e){return(0,r.jsx)(`div`,{className:`${n.channelBadge} ${e.small?n.small:``} ${e.className||``}`,children:(0,r.jsx)(`img`,{className:`h-100 align-baseline`,src:e.logoUrl})})}export{i as t};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=Tj-NqZ4q2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"Tj-NqZ4q2.chunk.js","names":[],"sources":["../../src/apps/tv/components/tv-channel-badge/tv-channel-badge.module.scss","../../src/apps/tv/components/tv-channel-badge/TvChannelBadge.tsx"],"sourcesContent":[":local {\n .channelBadge {\n height: 1.5rem;\n\n &.small {\n height: 1.25rem;\n }\n }\n}","import React from 'react';\n\nimport styles from './tv-channel-badge.module.scss';\n\ninterface TvChannelBadgeProps {\n logoUrl: string;\n small?: boolean;\n className?: string;\n}\n\nexport function TvChannelBadge(props: TvChannelBadgeProps) {\n return (\n <div className={`${styles.channelBadge} ${props.small ? styles.small : ''} ${props.className || ''}`}>\n <img className='h-100 align-baseline' src={props.logoUrl} />\n </div>\n );\n}\n"],"mappings":"iICUA,SAAgB,EAAe,EAA4B,CACzD,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,aAAa,GAAG,EAAM,MAAQ,EAAO,MAAQ,GAAG,GAAG,EAAM,WAAa,eAC9F,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uBAAuB,IAAK,EAAM,QAAW,CAAA,CACxD,CAAA"}
|