@clickview/streamable-learning 0.48.0-rc.0 → 0.48.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +646 -646
- package/dist/bundles.json +1 -1
- package/dist/css/DU3tPCD_.chunk.css +12 -0
- package/dist/en.json +1 -1
- package/dist/scripts/{m9QbGES0.chunk.js → ACTQklJQ.chunk.js} +2 -2
- package/dist/scripts/{m9QbGES0.chunk.js.map → ACTQklJQ.chunk.js.map} +1 -1
- package/dist/scripts/{B7if0Lk52.chunk.js → B-qOny0I2.chunk.js} +2 -2
- package/dist/scripts/{B7if0Lk52.chunk.js.map → B-qOny0I2.chunk.js.map} +1 -1
- package/dist/scripts/{BSjm_rCE.chunk.js → B5jBIPaP.chunk.js} +2 -2
- package/dist/scripts/{BSjm_rCE.chunk.js.map → B5jBIPaP.chunk.js.map} +1 -1
- package/dist/scripts/{CPkKuTSK2.chunk.js → B703cBe72.chunk.js} +2 -2
- package/dist/scripts/{CPkKuTSK2.chunk.js.map → B703cBe72.chunk.js.map} +1 -1
- package/dist/scripts/{DNNNPLMp.chunk.js → B7iwtSij.chunk.js} +2 -2
- package/dist/scripts/{DNNNPLMp.chunk.js.map → B7iwtSij.chunk.js.map} +1 -1
- package/dist/scripts/{CXNve4Wq2.chunk.js → BCBfXCYM2.chunk.js} +2 -2
- package/dist/scripts/{CXNve4Wq2.chunk.js.map → BCBfXCYM2.chunk.js.map} +1 -1
- package/dist/scripts/{CoYNU7We2.chunk.js → BKnxYKDu2.chunk.js} +2 -2
- package/dist/scripts/{CoYNU7We2.chunk.js.map → BKnxYKDu2.chunk.js.map} +1 -1
- package/dist/scripts/{BoxedFO8.chunk.js → BLrjbrp8.chunk.js} +2 -2
- package/dist/scripts/{BoxedFO8.chunk.js.map → BLrjbrp8.chunk.js.map} +1 -1
- package/dist/scripts/{CibcLNJP2.chunk.js → BTYwcYPL2.chunk.js} +2 -2
- package/dist/scripts/{CibcLNJP2.chunk.js.map → BTYwcYPL2.chunk.js.map} +1 -1
- package/dist/scripts/{CwI-7tep2.chunk.js → BXJetawx2.chunk.js} +2 -2
- package/dist/scripts/{CwI-7tep2.chunk.js.map → BXJetawx2.chunk.js.map} +1 -1
- package/dist/scripts/{BV74ZRR22.chunk.js → BZOcEcTA2.chunk.js} +2 -2
- package/dist/scripts/{BV74ZRR22.chunk.js.map → BZOcEcTA2.chunk.js.map} +1 -1
- package/dist/scripts/{DxsW8K0n2.chunk.js → BaMNOAYj2.chunk.js} +2 -2
- package/dist/scripts/{DxsW8K0n2.chunk.js.map → BaMNOAYj2.chunk.js.map} +1 -1
- package/dist/scripts/{DrDQfaFN2.chunk.js → BihZ4r0z2.chunk.js} +3 -3
- package/dist/scripts/{DrDQfaFN2.chunk.js.map → BihZ4r0z2.chunk.js.map} +1 -1
- package/dist/scripts/{CK6c6uHp2.chunk.js → BpgHKWR52.chunk.js} +2 -2
- package/dist/scripts/{CK6c6uHp2.chunk.js.map → BpgHKWR52.chunk.js.map} +1 -1
- package/dist/scripts/{JtFbyaXc.chunk.js → Br0Uc4GG.chunk.js} +2 -2
- package/dist/scripts/{JtFbyaXc.chunk.js.map → Br0Uc4GG.chunk.js.map} +1 -1
- package/dist/scripts/{Dd8r1SE32.chunk.js → BsAo7Lri2.chunk.js} +2 -2
- package/dist/scripts/{Dd8r1SE32.chunk.js.map → BsAo7Lri2.chunk.js.map} +1 -1
- package/dist/scripts/{BMjES83N2.chunk.js → BvJXPFoz2.chunk.js} +2 -2
- package/dist/scripts/{BMjES83N2.chunk.js.map → BvJXPFoz2.chunk.js.map} +1 -1
- package/dist/scripts/{CpFOQcL7.chunk.js → BxypZGPK.chunk.js} +2 -2
- package/dist/scripts/{CpFOQcL7.chunk.js.map → BxypZGPK.chunk.js.map} +1 -1
- package/dist/scripts/C4MLxDS-.chunk.js +1 -0
- package/dist/scripts/{DLp7yHzT2.chunk.js → C5i1HsPp2.chunk.js} +2 -2
- package/dist/scripts/{DLp7yHzT2.chunk.js.map → C5i1HsPp2.chunk.js.map} +1 -1
- package/dist/scripts/{Bkv1Tbyu.chunk.js → CCoZQmgX.chunk.js} +2 -2
- package/dist/scripts/{Bkv1Tbyu.chunk.js.map → CCoZQmgX.chunk.js.map} +1 -1
- package/dist/scripts/{Clh6wBrg.chunk.js → CGxa1Jzq.chunk.js} +2 -2
- package/dist/scripts/{Clh6wBrg.chunk.js.map → CGxa1Jzq.chunk.js.map} +1 -1
- package/dist/scripts/{DAvXFgC62.chunk.js → CKdklY2o2.chunk.js} +2 -2
- package/dist/scripts/{DAvXFgC62.chunk.js.map → CKdklY2o2.chunk.js.map} +1 -1
- package/dist/scripts/{CeWjJPIz.chunk.js → CN8PeBwg.chunk.js} +2 -2
- package/dist/scripts/{CeWjJPIz.chunk.js.map → CN8PeBwg.chunk.js.map} +1 -1
- package/dist/scripts/{B1jitqYS2.chunk.js → CNJrD44-2.chunk.js} +2 -2
- package/dist/scripts/{B1jitqYS2.chunk.js.map → CNJrD44-2.chunk.js.map} +1 -1
- package/dist/scripts/{DIHDe4Sg.chunk.js → CNmmq34f.chunk.js} +2 -2
- package/dist/scripts/{DIHDe4Sg.chunk.js.map → CNmmq34f.chunk.js.map} +1 -1
- package/dist/scripts/{CikSQKH-.chunk.js → CUUUI6pl.chunk.js} +2 -2
- package/dist/scripts/{CikSQKH-.chunk.js.map → CUUUI6pl.chunk.js.map} +1 -1
- package/dist/scripts/{DNO0KpY72.chunk.js → CWFInhB82.chunk.js} +2 -2
- package/dist/scripts/{DNO0KpY72.chunk.js.map → CWFInhB82.chunk.js.map} +1 -1
- package/dist/scripts/{i2-k6ULv2.chunk.js → CbLL7dIz2.chunk.js} +2 -2
- package/dist/scripts/{i2-k6ULv2.chunk.js.map → CbLL7dIz2.chunk.js.map} +1 -1
- package/dist/scripts/{KCdpQ8qv2.chunk.js → Ce1TZZdV2.chunk.js} +2 -2
- package/dist/scripts/{KCdpQ8qv2.chunk.js.map → Ce1TZZdV2.chunk.js.map} +1 -1
- package/dist/scripts/{NV4_mMU8.chunk.js → Ces-KTwe.chunk.js} +2 -2
- package/dist/scripts/{NV4_mMU8.chunk.js.map → Ces-KTwe.chunk.js.map} +1 -1
- package/dist/scripts/{0xQRFMBY.chunk.js → CkYqp83j.chunk.js} +2 -2
- package/dist/scripts/{0xQRFMBY.chunk.js.map → CkYqp83j.chunk.js.map} +1 -1
- package/dist/scripts/{DvL3J2BU.chunk.js → CrCAJmt6.chunk.js} +2 -2
- package/dist/scripts/{DvL3J2BU.chunk.js.map → CrCAJmt6.chunk.js.map} +1 -1
- package/dist/scripts/{CcDgbmw52.chunk.js → CsC3VVvE2.chunk.js} +2 -2
- package/dist/scripts/{CcDgbmw52.chunk.js.map → CsC3VVvE2.chunk.js.map} +1 -1
- package/dist/scripts/{C9UjF0q6.chunk.js → D0SYGnyF.chunk.js} +2 -2
- package/dist/scripts/{C9UjF0q6.chunk.js.map → D0SYGnyF.chunk.js.map} +1 -1
- package/dist/scripts/{BqO6i89w2.chunk.js → D7tastET2.chunk.js} +2 -2
- package/dist/scripts/{BqO6i89w2.chunk.js.map → D7tastET2.chunk.js.map} +1 -1
- package/dist/scripts/{CeI-LCE-.chunk.js → DIavEegC.chunk.js} +2 -2
- package/dist/scripts/{CeI-LCE-.chunk.js.map → DIavEegC.chunk.js.map} +1 -1
- package/dist/scripts/{BKbKu9Rp.chunk.js → DK3xia1t.chunk.js} +2 -2
- package/dist/scripts/{BKbKu9Rp.chunk.js.map → DK3xia1t.chunk.js.map} +1 -1
- package/dist/scripts/{BCdnm1Nn.chunk.js → DKnZ8BaN.chunk.js} +2 -2
- package/dist/scripts/{BCdnm1Nn.chunk.js.map → DKnZ8BaN.chunk.js.map} +1 -1
- package/dist/scripts/{awemA_vU2.chunk.js → DO8_mR5i2.chunk.js} +2 -2
- package/dist/scripts/{awemA_vU2.chunk.js.map → DO8_mR5i2.chunk.js.map} +1 -1
- package/dist/scripts/{DlQrdOls.chunk.js → DR80oZtZ.chunk.js} +2 -2
- package/dist/scripts/{DlQrdOls.chunk.js.map → DR80oZtZ.chunk.js.map} +1 -1
- package/dist/scripts/{DMq5Gp-U2.chunk.js → DU1SE31v2.chunk.js} +2 -2
- package/dist/scripts/{DMq5Gp-U2.chunk.js.map → DU1SE31v2.chunk.js.map} +1 -1
- package/dist/scripts/{XnBhLH-02.chunk.js → Dj4AeYQQ2.chunk.js} +2 -2
- package/dist/scripts/{XnBhLH-02.chunk.js.map → Dj4AeYQQ2.chunk.js.map} +1 -1
- package/dist/scripts/{CmrPRojb.chunk.js → DnSy_Myx.chunk.js} +2 -2
- package/dist/scripts/{CmrPRojb.chunk.js.map → DnSy_Myx.chunk.js.map} +1 -1
- package/dist/scripts/{D0vsmyva.chunk.js → Dr1flAez.chunk.js} +2 -2
- package/dist/scripts/{D0vsmyva.chunk.js.map → Dr1flAez.chunk.js.map} +1 -1
- package/dist/scripts/{BXT8nHry2.chunk.js → DwzBzBlI2.chunk.js} +2 -2
- package/dist/scripts/{BXT8nHry2.chunk.js.map → DwzBzBlI2.chunk.js.map} +1 -1
- package/dist/scripts/{CvqqZmNo2.chunk.js → DyT1OGvP2.chunk.js} +2 -2
- package/dist/scripts/{CvqqZmNo2.chunk.js.map → DyT1OGvP2.chunk.js.map} +1 -1
- package/dist/scripts/{E9tNds1l.chunk.js → Llxar-VU.chunk.js} +2 -2
- package/dist/scripts/{E9tNds1l.chunk.js.map → Llxar-VU.chunk.js.map} +1 -1
- package/dist/scripts/{app-B1XBsz23.js → app-BIigh9wv.js} +4 -4
- package/dist/scripts/{app-B1XBsz23.js.map → app-BIigh9wv.js.map} +1 -1
- package/dist/scripts/{BMl02f_62.chunk.js → bycmewy72.chunk.js} +2 -2
- package/dist/scripts/{BMl02f_62.chunk.js.map → bycmewy72.chunk.js.map} +1 -1
- package/dist/scripts/{DmfbtOlu.chunk.js → jWpq99N3.chunk.js} +2 -2
- package/dist/scripts/{DmfbtOlu.chunk.js.map → jWpq99N3.chunk.js.map} +1 -1
- package/dist/scripts/{BDliRFoa.chunk.js → oTYyWWB-.chunk.js} +2 -2
- package/dist/scripts/{BDliRFoa.chunk.js.map → oTYyWWB-.chunk.js.map} +1 -1
- package/dist/scripts/{lokG7Sha2.chunk.js → qcrBN1zR2.chunk.js} +2 -2
- package/dist/scripts/{lokG7Sha2.chunk.js.map → qcrBN1zR2.chunk.js.map} +1 -1
- package/dist/scripts/{UAcFqQzZ.chunk.js → smdLElLq.chunk.js} +2 -2
- package/dist/scripts/{UAcFqQzZ.chunk.js.map → smdLElLq.chunk.js.map} +1 -1
- package/dist/scripts/{D8_5yfHY2.chunk.js → tYi-sUb22.chunk.js} +2 -2
- package/dist/scripts/{D8_5yfHY2.chunk.js.map → tYi-sUb22.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/D5Jnyjf8.chunk.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{r as n,t as r}from"./BJvPfCvt.chunk.js";import{t as i}from"./ImQRQGZr.chunk.js";import{C as a,T as o,c as s,dt as c,l,lt as u,m as d,n as f,ut as p}from"./Dun43GrB.chunk.js";import{t as m}from"./B-OL6Vs7.chunk.js";import{l as h}from"./BQ5XMoHG.chunk.js";import{t as g}from"./ibuOpDkQ.chunk.js";import{t as _}from"./DeldjYRc.chunk.js";import{t as v}from"./BYYiNmLB.chunk.js";import{n as y,t as b}from"./Ca1QPe-q2.chunk.js";import{a as x}from"./D2om474U2.chunk.js";import{t as S}from"./X4vTaPlk.chunk.js";import{t as C}from"./C6L8Y-TQ.chunk.js";import{E as w,N as T,R as E,X as D,z as O}from"./app-
|
|
1
|
+
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{r as n,t as r}from"./BJvPfCvt.chunk.js";import{t as i}from"./ImQRQGZr.chunk.js";import{C as a,T as o,c as s,dt as c,l,lt as u,m as d,n as f,ut as p}from"./Dun43GrB.chunk.js";import{t as m}from"./B-OL6Vs7.chunk.js";import{l as h}from"./BQ5XMoHG.chunk.js";import{t as g}from"./ibuOpDkQ.chunk.js";import{t as _}from"./DeldjYRc.chunk.js";import{t as v}from"./BYYiNmLB.chunk.js";import{n as y,t as b}from"./Ca1QPe-q2.chunk.js";import{a as x}from"./D2om474U2.chunk.js";import{t as S}from"./X4vTaPlk.chunk.js";import{t as C}from"./C6L8Y-TQ.chunk.js";import{E as w,N as T,R as E,X as D,z as O}from"./app-BIigh9wv.js";import{t as k}from"./CnDOpuFK.chunk.js";import{t as A}from"./NrXAMmgy2.chunk.js";import{t as j}from"./Ct5auYPr2.chunk.js";import{t as M}from"./BK011l4Q2.chunk.js";import{i as N,t as P}from"./DobKejA8.chunk.js";import{n as F,t as I}from"./BxypZGPK.chunk.js";import{t as L}from"./BA8QDRzp.chunk.js";var R=w(),z=e(p()),B={imageStyle:`_imageStyle_1xzbz_1`,item:`_item_1xzbz_6`,dashboard:`_dashboard_1xzbz_10`,playPage:`_playPage_1xzbz_24`,aspectRatio:`_aspectRatio_1xzbz_32`,outerContainer:`_outerContainer_1xzbz_37`,innerContainer:`_innerContainer_1xzbz_45`,actions:`_actions_1xzbz_45`,titleBelow:`_titleBelow_1xzbz_55`,heading:`_heading_1xzbz_58`,thumbnailContainer:`_thumbnailContainer_1xzbz_61`,titleAbove:`_titleAbove_1xzbz_64`,teacherPack:`_teacherPack_1xzbz_67`,text:`_text_1xzbz_67`,hoverState:`_hoverState_1xzbz_73`,atomGuide:`_atomGuide_1xzbz_76`,studentActivity:`_studentActivity_1xzbz_85`,additionalMaterials:`_additionalMaterials_1xzbz_94`,userUploaded:`_userUploaded_1xzbz_103`,imageTypeResource:`_imageTypeResource_1xzbz_112`,download:`_download_1xzbz_118`},V=u();function H(e){switch(e){case`atom-guide`:return B.atomGuide;case`student-activity`:return B.studentActivity;case`teacher-pack`:return B.teacherPack;case`additional-materials`:return B.additionalMaterials;default:return B.userUploaded}}function U(e,t){let n=T();return t===`public`?!0:n.xs||n.sm||e.type!==`resource`||!(`metadata`in e)?!1:e.metadata.type===A.Image?!0:e.metadata.type===A.Pdf?!!e.url:!!e.pdf?.url}W.defaultProps={preloadImage:!0,actionBehaviour:`normal`};function W(e){let t=null;`metadata`in e.data&&(t=e.data.metadata);let i=k.isType(e.data,S.Resource);function a(t){let n=`
|
|
2
2
|
d-flex flex-column align-items-center justify-content-end rounded-3 h-100
|
|
3
3
|
position-relative ${H(t)} ${B.innerContainer}`;return e.theme?.containerClass?n+=` ${e.theme.containerClass}`:n+=` pt-3 px-3`,e.applyHoverState&&(n+=` ${B.hoverState}`),n}function o(){k.isResource(e.data)&&typeof e.onClickDownload==`function`&&e.onClickDownload(e.data)}return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:B.aspectRatio,children:(0,V.jsx)(`div`,{className:B.outerContainer,children:(0,V.jsxs)(`div`,{className:a(t?.resourceType),children:[e.titlePosition===`above`&&(0,V.jsx)(n,{title:e.data.name,children:(0,V.jsx)(`h3`,{className:`text-center text-break h5 mb-3 ${B.text}`,children:(0,V.jsx)(`span`,{className:`clamp-1`,children:e.data.name})})}),(0,V.jsx)(`div`,{className:`
|
|
4
4
|
${e.theme?.thumbnailContainerClass??``} w-75 overflow-hidden
|
|
5
5
|
${B.thumbnailContainer} ${e.titlePosition===`above`?B.titleAbove:``}
|
|
6
6
|
${B.imageStyle}
|
|
7
7
|
`,children:(0,V.jsx)(F,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage,dynamicRatioImageOptions:e.dynamicRatioImageOptions})}),i&&e.onClickDownload&&e.actionBehaviour===`normal`&&(0,V.jsx)(`div`,{className:B.actions,children:(0,V.jsx)(y,{onClick:e=>{e.preventDefault(),e.stopPropagation(),o()},className:`${B.download} d-flex align-items-center justify-content-center`,children:(0,V.jsx)(r,{svg:M})})}),!e.hideTypeBadge&&i&&(0,V.jsx)(P,{typeId:S.Resource})]})})}),e.titlePosition===`below`&&(0,V.jsxs)(`div`,{className:`mt-2 ${B.titleBelow}`,children:[k.isType(e.data,S.Resource)&&!!e.data?.metadata?.resourceType&&(0,V.jsx)(N,{children:I.getResourceTypeName(e.data.metadata.resourceType)}),(0,V.jsx)(`h3`,{className:`h6 clamp-2 ${B.heading}`,children:e.data.name})]})]})}z.memo(function(e){let n=U(e.data,e.actionBehaviour);function r(){return e.location===`play-page`?B.playPage:B.dashboard}let i={...e.analyticsData,id:e.data.id,name:e.data.name},o={...e.analyticsOptions,actionType:a.Click,entity:e.data.typeId===S.Resource?l.Resource:l.Link};function s(){f.logUserAction(i,o)}let c={...e,applyHoverState:n||!!e.data.url};return(0,V.jsx)(`div`,{className:`px-1 flex-shrink-0 ${B.item} ${r()} ${C.RESOURCE_ITEM_SELECTOR}`,children:(()=>{let r=`d-block no-decoration`;return e.data.type===`link`?(0,V.jsx)(`a`,{href:e.data.url,target:`_blank`,className:r,onClick:s,children:(0,V.jsx)(W,{...c})}):n?e.actionBehaviour===`public`?(0,V.jsx)(`div`,{className:`${r} cursor-pointer d-inline`,onClick:()=>{s(),t.trigger(e.getAppLink(e.data))},children:(0,V.jsx)(W,{...c})}):(0,V.jsx)(b,{appLink:e.getAppLink(e.data),className:r,analyticsData:i,analyticsOptions:o,children:(0,V.jsx)(W,{...c})}):e.data.url?(0,V.jsx)(`a`,{href:e.data.url,className:r,onClick:s,children:(0,V.jsx)(W,{...c})}):(0,V.jsx)(`div`,{className:r,children:(0,V.jsx)(W,{...c})})})()})});function G(e){let n=U(e.resource,e.actionBehaviour);function r(){f.logUserAction(e.analyticsData,e.analyticsOptions)}return k.isType(e.resource,S.Link)?(0,V.jsx)(`a`,{href:e.resource.url,target:`_blank`,onClick:r,children:e.children}):n?e.actionBehaviour===`public`?(0,V.jsx)(`div`,{className:`cursor-pointer d-inline`,onClick:()=>{r(),t.trigger(e.appLink)},children:e.children}):(0,V.jsx)(b,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,children:e.children}):(0,V.jsx)(`div`,{children:e.children})}function K(e){let t={id:e.resource.id,name:e.resource.name,parentVideoId:e.parentVideo.id,parentVideoName:e.parentVideo.name,parentVideoType:e.parentVideo.type},n={...e.analyticsOptions,actionType:a.Click,entity:k.isResource(e.resource)?l.Resource:l.Link};return(0,V.jsxs)(`div`,{className:`row gx-0`,children:[(0,V.jsx)(`div`,{className:`col-4`,children:(0,V.jsx)(G,{resource:e.resource,appLink:e.appLink,analyticsData:t,analyticsOptions:{...n,descriptor:s.Thumbnail},actionBehaviour:e.actionBehaviour,children:(0,V.jsx)(W,{data:e.resource,titlePosition:`none`,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage,dynamicRatioImageOptions:{width:400,resizeType:x.Cover},theme:{thumbnailContainerClass:`w-100`,containerClass:`px-3`}})})}),(0,V.jsx)(`div`,{className:`col-8 ps-2`,children:(0,V.jsxs)(G,{resource:e.resource,appLink:e.appLink,analyticsData:t,analyticsOptions:{...n,descriptor:s.Title},actionBehaviour:e.actionBehaviour,children:[k.isType(e.resource,S.Resource)&&!!e.resource?.metadata?.resourceType&&(0,V.jsx)(N,{children:I.getResourceTypeName(e.resource.metadata.resourceType)}),(0,V.jsx)(`h3`,{className:`h6 clamp-2`,children:e.resource.name})]})})]})}var q=`shared.videoGuidanceResourcesPopup`,J=350;function Y(e){let t=[...e.video?.resources?.data||[],...e.video?.links?.data||[]],n=e.isLoading?[]:e.resources||t;return(0,V.jsx)(O,{closePopup:e.onClickClose,showLoadingSpinner:e.isLoading,title:e.isLoading?``:i.getPhrase(q,`resources`),size:`lg`,children:!e.isLoading&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(R.Scrollbars,{autoHeightMax:J,autoHeightMin:J,autoHeight:!0,children:[(0,V.jsx)(`ul`,{className:`list-unstyled`,children:n.map(t=>(0,V.jsx)(`li`,{className:`mb-3`,children:(0,V.jsx)(K,{resource:t,parentVideo:e.video,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceImageErrorFallbackUrl,preloadImage:!0,appLink:e.getResourceAppLink?.(t.id),actionBehaviour:e.actionBehaviour,analyticsOptions:{location:d.ResourcesGuidancePopup}})},t.id))}),(e.hasMore||e.isFetching)&&(0,V.jsx)(L,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})]}),(0,V.jsxs)(E,{children:[(0,V.jsx)(E.Cancel,{onClick:e.onClickClose,text:i.getPhrase(q,`close`)}),(0,V.jsx)(E.Submit,{text:i.getPhrase(q,`viewVideo`),variant:`dark`,onClick:e.onClickViewVideo})]})]})})}function X(e){let n=h(j.video(e.id)),r=h(D.config()),i=h(g.currentUser());function s(){f.logUserAction({id:n.data.id,name:n.data.name},{entity:l.Video,actionType:a.Click,location:d.CurriculumGuidancePopup,descriptor:o.Close}),e.closePopup()}function u(){f.logUserAction({id:n.data.id,name:n.data.name},{entity:l.Video,location:d.CurriculumGuidancePopup,actionType:a.Click,descriptor:o.ViewVideo}),t.trigger({application:m.VIDEOS,action:_.Videos.PLAY_VIDEO,args:[n.data.id,c.slugify(n.data.name)]}),e.closePopup()}return(0,V.jsx)(Y,{isLoading:!n.hasCompleted||!r.hasCompleted,video:n.data,imageCdnUrl:r.data?.imageCdnUrl,resourceImageErrorFallbackUrl:v.Fallbacks.RESOURCE_THUMBNAIL,getResourceAppLink:e=>({application:m.VIDEOS,action:_.Videos.PREVIEW_PDF,args:[e],params:{videoId:n.data.id,showBackButton:!0}}),actionBehaviour:i.data?.isAuthenticated?`normal`:`public`,onClickClose:s,onClickViewVideo:u,hasMore:!1,isFetching:!1,fetchNext:()=>{},nextCursor:null})}export{X as VideoGuidanceResourcesView};
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=Dj4AeYQQ2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XnBhLH-02.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/play-page/resources-widget/resource-widget-item.module.scss","../../../../libs/shared/src/components/play-page/resources-widget/ResourceWidgetItemV2.tsx","../../../../libs/shared/src/components/resource-list-item/ResourceListItem.tsx","../../../../libs/shared/src/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup.tsx","../../src/apps/videos/views/video-guidance-resources/VideoGuidanceResourcesView.tsx"],"sourcesContent":["@import '~styles/utils/include-media';\n:local {\n .imageStyle {\n border-top-left-radius: $border-radius-lg;\n border-top-right-radius: $border-radius-lg;\n filter: drop-shadow(0px -1px 4px rgba(0, 0, 0, 0.1));\n }\n\n .item {\n width: 25%;\n\n &.dashboard {\n @include media('<=xl') {\n width: 33.33333%;\n }\n \n @include media('<=md') {\n width: 50%;\n }\n \n @include media('<=sm') {\n width: 100%;\n }\n }\n\n &.playPage {\n width: percentage(calc(1 / 3));\n\n @include media('<=sm') {\n width: 50%;\n }\n }\n }\n\n .aspectRatio {\n position: relative;\n padding-bottom: 56.25%;\n width: 100%;\n }\n\n .outerContainer {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n }\n\n .innerContainer {\n .actions {\n display: none;\n position: absolute;\n top: map-get($spacers, 2);\n right: map-get($spacers, 2);\n z-index: 5;\n }\n\n &:hover {\n .actions {\n display: block;\n }\n }\n }\n\n .titleBelow:hover {\n text-decoration: underline;\n }\n .heading {\n line-height: 1.5; //24px\n }\n .thumbnailContainer {\n height: 85%;\n\n &.titleAbove {\n height: percentage(calc(2 / 3));\n }\n }\n\n // Resource type colour classes\n .teacherPack {\n .text {\n color: $blue;\n }\n\n background-color: scale-color($blue, $lightness: 86%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($blue, $lightness: 93%, $saturation: 100%);\n }\n }\n }\n\n .atomGuide {\n .text {\n color: $indigo;\n }\n\n background-color: scale-color($indigo, $lightness: 80%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($indigo, $lightness: 90%, $saturation: 100%);\n }\n }\n }\n\n .studentActivity {\n .text {\n color: $purple;\n }\n \n background-color: scale-color($purple, $lightness: 84%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($purple, $lightness: 92%, $saturation: 100%);\n }\n }\n }\n\n .additionalMaterials {\n .text {\n color: $green;\n }\n \n background-color: scale-color($green, $lightness: 82%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($green, $lightness: 88%, $saturation: 100%);\n }\n }\n }\n\n .userUploaded {\n .text {\n color: $teal;\n }\n\n background-color: scale-color($teal, $lightness: 80%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($teal, $lightness: 89%, $saturation: 100%);\n }\n }\n }\n\n .imageTypeResource {\n width: auto;\n object-fit: contain;\n left: 50% !important;\n transform: translateX(-50%);\n }\n\n .download {\n color: $dark;\n background-color: rgba(darken($white, 2%), 0.8);\n border-radius: 50%;\n width: 2rem;\n height: 2rem;\n\n &:hover {\n background-color: $white;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { DownloadSvg } from 'libs/shared/images/svg/actions/DownloadSvg';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport styles from './resource-widget-item.module.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nexport function useCanPreviewResource(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n dynamicRatioImageOptions?: ImageOptions;\n}\n\nResourceTileV2.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTileV2(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n function onDownload() {\n if (!MasterTypeHelper.isResource(props.data))\n return;\n\n if (typeof props.onClickDownload === 'function') {\n props.onClickDownload(props.data);\n }\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n dynamicRatioImageOptions={props.dynamicRatioImageOptions}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDownload();\n }}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svg={DownloadSvg} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && (\n <div className={`mt-2 ${styles.titleBelow}`}>\n {(\n MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) &&\n !!props.data?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className={`h6 clamp-2 ${styles.heading}`}>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemV2Props extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItemV2 = React.memo(function(props: ResourceWidgetItemV2Props): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, id: props.data.id, name: props.data.name };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block no-decoration`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTileV2 {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport { ResourceTileV2, useCanPreviewResource } from '../play-page/resources-widget/ResourceWidgetItemV2';\n\ninterface ResourceWrapperProps {\n resource: Resource | Link;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n actionBehaviour: 'normal' | 'public';\n}\n\nfunction ResourceWrapper(props: React.PropsWithChildren<ResourceWrapperProps>): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.resource, props.actionBehaviour);\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\n }\n\n // Handle resource links\n if (MasterTypeHelper.isType<Link>(props.resource, MasterType.Link)) {\n return (\n <a href={props.resource.url} target='_blank' onClick={logAction}>\n {props.children}\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a div over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div\n className='cursor-pointer d-inline'\n onClick={() => {\n logAction();\n Core.AppLinkHelper.trigger(props.appLink);\n }}\n >\n {props.children}\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div>\n {props.children}\n </div>\n );\n}\n\ninterface ResourceListItemProps {\n resource: Resource | Link;\n parentVideo: Clip | Video;\n imageCdnUrl: string;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n appLink: Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourceListItem(props: ResourceListItemProps): JSX.Element {\n const analyticsData = {\n id: props.resource.id,\n name: props.resource.name,\n parentVideoId: props.parentVideo.id,\n parentVideoName: props.parentVideo.name,\n parentVideoType: props.parentVideo.type\n };\n \n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: MasterTypeHelper.isResource(props.resource) ? EntityType.Resource : EntityType.Link\n };\n\n return (\n <div className='row gx-0'>\n <div className='col-4'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n actionBehaviour={props.actionBehaviour}\n >\n <ResourceTileV2\n data={props.resource}\n titlePosition='none'\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n dynamicRatioImageOptions={{\n width: 400,\n resizeType: ResizeType.Cover\n }}\n theme={{\n thumbnailContainerClass: 'w-100',\n containerClass: 'px-3'\n }}\n />\n </ResourceWrapper>\n </div>\n <div className='col-8 ps-2'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n actionBehaviour={props.actionBehaviour}\n >\n {(\n MasterTypeHelper.isType<Resource>(props.resource, MasterType.Resource) &&\n !!props.resource?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.resource.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className='h6 clamp-2'>\n {props.resource.name}\n </h3>\n </ResourceWrapper>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ResourceListItem } from 'libs/shared/components/resource-list-item/ResourceListItem';\nimport { Link, Resource, Video } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoGuidanceResourcesPopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceResourcesPopupProps {\n isLoading: boolean;\n video: Video;\n resources?: (Link | Resource)[];\n hasMore: boolean;\n isFetching: boolean;\n fetchNext: (cursor?: string) => void;\n nextCursor?: string;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n imageCdnUrl: string;\n resourceImageErrorFallbackUrl: string;\n getResourceAppLink?: (id: string) => Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n}\n\nexport function VideoGuidanceResourcesPopup(props: VideoGuidanceResourcesPopupProps): JSX.Element {\n const videoResources = [ ...(props.video?.resources?.data || []), ...(props.video?.links?.data || []) ];\n const resources = props.isLoading ?\n [] :\n props.resources || videoResources;\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={props.isLoading ?\n '' :\n LanguageService.getPhrase(namespace, 'resources')\n }\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars autoHeightMax={MIN_MAX_HEIGHT} autoHeightMin={MIN_MAX_HEIGHT} autoHeight>\n <ul className='list-unstyled'>\n {resources.map(resource => {\n return (\n <li key={resource.id} className='mb-3'>\n <ResourceListItem\n resource={resource}\n parentVideo={props.video}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.resourceImageErrorFallbackUrl}\n preloadImage\n appLink={props.getResourceAppLink?.(resource.id)}\n actionBehaviour={props.actionBehaviour}\n analyticsOptions={{\n location: LocationContext.ResourcesGuidancePopup\n }}\n />\n </li>\n );\n })}\n </ul>\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceResourcesPopup } from 'libs/shared/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Config, CurrentUser, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\ninterface VideoGuidanceResourcesViewProps extends PopupViewProps {\n id: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceResourcesView(props: VideoGuidanceResourcesViewProps): JSX.Element {\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n actionType: UserAction.Click,\n location: LocationContext.CurriculumGuidancePopup,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceResourcesPopup\n isLoading={!video.hasCompleted || !config.hasCompleted}\n video={video.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceImageErrorFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getResourceAppLink={id => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [id],\n params: { videoId: video.data.id, showBackButton: true }\n })}\n actionBehaviour={currentUser.data?.isAuthenticated ? 'normal' : 'public'}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n hasMore={false}\n isFetching={false}\n fetchNext={() => {}}\n nextCursor={null}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dj4AeYQQ2.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/play-page/resources-widget/resource-widget-item.module.scss","../../../../libs/shared/src/components/play-page/resources-widget/ResourceWidgetItemV2.tsx","../../../../libs/shared/src/components/resource-list-item/ResourceListItem.tsx","../../../../libs/shared/src/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup.tsx","../../src/apps/videos/views/video-guidance-resources/VideoGuidanceResourcesView.tsx"],"sourcesContent":["@import '~styles/utils/include-media';\n:local {\n .imageStyle {\n border-top-left-radius: $border-radius-lg;\n border-top-right-radius: $border-radius-lg;\n filter: drop-shadow(0px -1px 4px rgba(0, 0, 0, 0.1));\n }\n\n .item {\n width: 25%;\n\n &.dashboard {\n @include media('<=xl') {\n width: 33.33333%;\n }\n \n @include media('<=md') {\n width: 50%;\n }\n \n @include media('<=sm') {\n width: 100%;\n }\n }\n\n &.playPage {\n width: percentage(calc(1 / 3));\n\n @include media('<=sm') {\n width: 50%;\n }\n }\n }\n\n .aspectRatio {\n position: relative;\n padding-bottom: 56.25%;\n width: 100%;\n }\n\n .outerContainer {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n }\n\n .innerContainer {\n .actions {\n display: none;\n position: absolute;\n top: map-get($spacers, 2);\n right: map-get($spacers, 2);\n z-index: 5;\n }\n\n &:hover {\n .actions {\n display: block;\n }\n }\n }\n\n .titleBelow:hover {\n text-decoration: underline;\n }\n .heading {\n line-height: 1.5; //24px\n }\n .thumbnailContainer {\n height: 85%;\n\n &.titleAbove {\n height: percentage(calc(2 / 3));\n }\n }\n\n // Resource type colour classes\n .teacherPack {\n .text {\n color: $blue;\n }\n\n background-color: scale-color($blue, $lightness: 86%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($blue, $lightness: 93%, $saturation: 100%);\n }\n }\n }\n\n .atomGuide {\n .text {\n color: $indigo;\n }\n\n background-color: scale-color($indigo, $lightness: 80%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($indigo, $lightness: 90%, $saturation: 100%);\n }\n }\n }\n\n .studentActivity {\n .text {\n color: $purple;\n }\n \n background-color: scale-color($purple, $lightness: 84%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($purple, $lightness: 92%, $saturation: 100%);\n }\n }\n }\n\n .additionalMaterials {\n .text {\n color: $green;\n }\n \n background-color: scale-color($green, $lightness: 82%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($green, $lightness: 88%, $saturation: 100%);\n }\n }\n }\n\n .userUploaded {\n .text {\n color: $teal;\n }\n\n background-color: scale-color($teal, $lightness: 80%, $saturation: 100%);\n\n &.hoverState {\n &:hover {\n background-color: scale-color($teal, $lightness: 89%, $saturation: 100%);\n }\n }\n }\n\n .imageTypeResource {\n width: auto;\n object-fit: contain;\n left: 50% !important;\n transform: translateX(-50%);\n }\n\n .download {\n color: $dark;\n background-color: rgba(darken($white, 2%), 0.8);\n border-radius: 50%;\n width: 2rem;\n height: 2rem;\n\n &:hover {\n background-color: $white;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { DownloadSvg } from 'libs/shared/images/svg/actions/DownloadSvg';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport styles from './resource-widget-item.module.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nexport function useCanPreviewResource(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n dynamicRatioImageOptions?: ImageOptions;\n}\n\nResourceTileV2.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTileV2(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n function onDownload() {\n if (!MasterTypeHelper.isResource(props.data))\n return;\n\n if (typeof props.onClickDownload === 'function') {\n props.onClickDownload(props.data);\n }\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n dynamicRatioImageOptions={props.dynamicRatioImageOptions}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDownload();\n }}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svg={DownloadSvg} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && (\n <div className={`mt-2 ${styles.titleBelow}`}>\n {(\n MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) &&\n !!props.data?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className={`h6 clamp-2 ${styles.heading}`}>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemV2Props extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItemV2 = React.memo(function(props: ResourceWidgetItemV2Props): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, id: props.data.id, name: props.data.name };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block no-decoration`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTileV2 {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport { ResourceTileV2, useCanPreviewResource } from '../play-page/resources-widget/ResourceWidgetItemV2';\n\ninterface ResourceWrapperProps {\n resource: Resource | Link;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n actionBehaviour: 'normal' | 'public';\n}\n\nfunction ResourceWrapper(props: React.PropsWithChildren<ResourceWrapperProps>): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.resource, props.actionBehaviour);\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\n }\n\n // Handle resource links\n if (MasterTypeHelper.isType<Link>(props.resource, MasterType.Link)) {\n return (\n <a href={props.resource.url} target='_blank' onClick={logAction}>\n {props.children}\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a div over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div\n className='cursor-pointer d-inline'\n onClick={() => {\n logAction();\n Core.AppLinkHelper.trigger(props.appLink);\n }}\n >\n {props.children}\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div>\n {props.children}\n </div>\n );\n}\n\ninterface ResourceListItemProps {\n resource: Resource | Link;\n parentVideo: Clip | Video;\n imageCdnUrl: string;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n appLink: Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourceListItem(props: ResourceListItemProps): JSX.Element {\n const analyticsData = {\n id: props.resource.id,\n name: props.resource.name,\n parentVideoId: props.parentVideo.id,\n parentVideoName: props.parentVideo.name,\n parentVideoType: props.parentVideo.type\n };\n \n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: MasterTypeHelper.isResource(props.resource) ? EntityType.Resource : EntityType.Link\n };\n\n return (\n <div className='row gx-0'>\n <div className='col-4'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n actionBehaviour={props.actionBehaviour}\n >\n <ResourceTileV2\n data={props.resource}\n titlePosition='none'\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n dynamicRatioImageOptions={{\n width: 400,\n resizeType: ResizeType.Cover\n }}\n theme={{\n thumbnailContainerClass: 'w-100',\n containerClass: 'px-3'\n }}\n />\n </ResourceWrapper>\n </div>\n <div className='col-8 ps-2'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n actionBehaviour={props.actionBehaviour}\n >\n {(\n MasterTypeHelper.isType<Resource>(props.resource, MasterType.Resource) &&\n !!props.resource?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.resource.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className='h6 clamp-2'>\n {props.resource.name}\n </h3>\n </ResourceWrapper>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ResourceListItem } from 'libs/shared/components/resource-list-item/ResourceListItem';\nimport { Link, Resource, Video } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoGuidanceResourcesPopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceResourcesPopupProps {\n isLoading: boolean;\n video: Video;\n resources?: (Link | Resource)[];\n hasMore: boolean;\n isFetching: boolean;\n fetchNext: (cursor?: string) => void;\n nextCursor?: string;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n imageCdnUrl: string;\n resourceImageErrorFallbackUrl: string;\n getResourceAppLink?: (id: string) => Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n}\n\nexport function VideoGuidanceResourcesPopup(props: VideoGuidanceResourcesPopupProps): JSX.Element {\n const videoResources = [ ...(props.video?.resources?.data || []), ...(props.video?.links?.data || []) ];\n const resources = props.isLoading ?\n [] :\n props.resources || videoResources;\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={props.isLoading ?\n '' :\n LanguageService.getPhrase(namespace, 'resources')\n }\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars autoHeightMax={MIN_MAX_HEIGHT} autoHeightMin={MIN_MAX_HEIGHT} autoHeight>\n <ul className='list-unstyled'>\n {resources.map(resource => {\n return (\n <li key={resource.id} className='mb-3'>\n <ResourceListItem\n resource={resource}\n parentVideo={props.video}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.resourceImageErrorFallbackUrl}\n preloadImage\n appLink={props.getResourceAppLink?.(resource.id)}\n actionBehaviour={props.actionBehaviour}\n analyticsOptions={{\n location: LocationContext.ResourcesGuidancePopup\n }}\n />\n </li>\n );\n })}\n </ul>\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceResourcesPopup } from 'libs/shared/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Config, CurrentUser, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\ninterface VideoGuidanceResourcesViewProps extends PopupViewProps {\n id: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceResourcesView(props: VideoGuidanceResourcesViewProps): JSX.Element {\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n actionType: UserAction.Click,\n location: LocationContext.CurriculumGuidancePopup,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceResourcesPopup\n isLoading={!video.hasCompleted || !config.hasCompleted}\n video={video.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceImageErrorFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getResourceAppLink={id => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [id],\n params: { videoId: video.data.id, showBackButton: true }\n })}\n actionBehaviour={currentUser.data?.isAuthenticated ? 'normal' : 'public'}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n hasMore={false}\n isFetching={false}\n fetchNext={() => {}}\n nextCursor={null}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{a as n,r,t as i,v as a}from"./BJvPfCvt.chunk.js";import{t as o}from"./ImQRQGZr.chunk.js";import{M as s,lt as c,ut as l}from"./Dun43GrB.chunk.js";import{i as u}from"./CEsevkum.chunk.js";import{l as d}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{a as n,r,t as i,v as a}from"./BJvPfCvt.chunk.js";import{t as o}from"./ImQRQGZr.chunk.js";import{M as s,lt as c,ut as l}from"./Dun43GrB.chunk.js";import{i as u}from"./CEsevkum.chunk.js";import{l as d}from"./oTYyWWB-.chunk.js";import{n as f}from"./Ca1QPe-q2.chunk.js";import{n as p}from"./D7d5XFW82.chunk.js";import{n as m,t as h}from"./CL1ST5J62.chunk.js";import{t as g}from"./Bx_V3too2.chunk.js";import{n as _}from"./DKnZ8BaN.chunk.js";import{t as v}from"./CE7XVl4t.chunk.js";import{o as y}from"./CIGsvs1s.chunk.js";import{t as b}from"./BgJGBaQ7.chunk.js";var x={disabled:`_disabled_1idjr_1`,disabledHighlighted:`_disabledHighlighted_1idjr_4`,badgeMd:`_badgeMd_1idjr_7`,badgeLg:`_badgeLg_1idjr_11`},S=e(l()),C=c(),w=o.encloseNamespace(`shared.audienceItem`);function T(e){return e.split(` `).map(e=>e.charAt(0).toUpperCase()+e.substring(1)).join(` `)}function E(e,t){return e?t?`${x.disabledHighlighted} text-light`:`bg-gray-900 text-light`:t?`${x.disabled} text-secondary`:`bg-light`}O.defaultProps={extraClasses:``,size:`md`};var D={md:x.badgeMd,lg:x.badgeLg};function O(e){let{audience:t,highlight:r,setAudience:i,isDisabled:o,extraClasses:s,size:c}=e,l=n(E(r,o),o?`cursor-default`:`cursor-pointer`,D[c],s,`lh-1 rounded-pill d-inline-block user-select-none`);return(0,C.jsx)(`button`,{type:`button`,className:l,onClick:()=>{o||!a.isFunction(i)||i(t,!r)},role:`checkbox`,"aria-checked":r,"aria-label":`${w(`ariaFilter`)} ${t.name}`,disabled:o,children:T(t.name)})}var k=`subjects.audienceFilter`;function A(e){let{audiences:n,activeAudiences:i,appLink:a}=e,o=e.disabled||!a,[,c]=m(h.AUDIENCE_FILTER,void 0,{storage:u.SessionStorage});S.useEffect(()=>{e.disablePersist||c(i)},[i?.map(e=>e.masterId).join(`:`)]);function l(e,n){if(o)return;let r=n?[...i?.map(e=>e.name)??[],e.name]:i.map(e=>e.name).filter(t=>t!==e.name),c=()=>{let e=s.omit(a.params,[`a`]);return r.length?Object.assign({},e,{a:r}):e};t.trigger({...a,params:c()},{replace:!0})}function d(){if(o)return;let e=s.omit(a.params,[`a`]);t.trigger({...a,params:e},{replace:!0})}return!n||!n.length?(0,C.jsx)(C.Fragment,{}):(0,C.jsx)(r,{title:e.tooltip,spanHack:!0,children:(0,C.jsxs)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:[n.map(e=>(0,C.jsx)(O,{audience:e,highlight:!o&&!!i?.find(t=>t.masterId===e.masterId),setAudience:l,isDisabled:o},e.masterId)),!o&&!!i&&!!Object.keys(i).length&&(0,C.jsx)(f,{className:`info-link d-inline-block ms-1`,onClick:d,children:(0,C.jsx)(p,{namespace:k,phrase:`clear`})})]})})}var j=v.getPartialLoadingItems({numItems:6}),M=()=>(0,C.jsx)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:j.map(({width:e},t)=>(0,C.jsx)(`span`,{className:`rounded-pill partial-loading-background me-1`,dangerouslySetInnerHTML:{__html:` `},style:{width:e}},t))}),N={[g.Archived]:{svg:b,svgColorClassName:`text-secondary`,actionName:`Archive`,statusName:`Archived`},[g.Draft]:{svg:y,svgColorClassName:``,actionName:`Draft`,statusName:`Draft`},[g.Published]:{svg:_,svgColorClassName:`text-success`,actionName:`Publish`,statusName:`Published`}},P={badge:`_badge_1fgi1_1`,draftLight:`_draftLight_1fgi1_5`,draftDark:`_draftDark_1fgi1_10`,published:`_published_1fgi1_15`,archived:`_archived_1fgi1_20`};function F(e){let t=`rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${P.badge}`;switch(e.status){case g.Published:t+=` ${P.published}`;break;case g.Archived:t+=` ${P.archived}`;break;case g.Draft:t+=` ${e.darkMode?P.draftDark:P.draftLight}`;break}return e.wrapperClassName&&(t+=` ${e.wrapperClassName}`),t}function I(e){let{statusName:t,svg:n}=N[e.status];return(0,C.jsxs)(`div`,{className:F(e),children:[(0,C.jsx)(i,{svg:n}),(0,C.jsx)(`div`,{children:t})]})}var L={stickyWrapper:`_stickyWrapper_190fb_1`,channelBanner:`_channelBanner_190fb_8`,badgeWrapper:`_badgeWrapper_190fb_14`,badge:`_badge_190fb_14`},R=o.encloseNamespace(`shared.classificationPreviewBanner`),z={company:R(`companyTitle`),topic:R(`topicTitle`),channel:R(`channelTitle`)},B={company:L.stickyWrapper,topic:L.stickyWrapper,channel:L.channelBanner};function V(e){return(0,C.jsxs)(`div`,{className:n(`py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`,B[e.type]),children:[(0,C.jsx)(`div`,{className:n(`position-absolute d-flex`,L.badgeWrapper),children:(0,C.jsx)(I,{status:e.status,wrapperClassName:L.badge,darkMode:!0})}),(0,C.jsx)(`div`,{className:`flex-grow-1`,children:(0,C.jsxs)(`h1`,{className:`text-center my-3 h5`,children:[(0,C.jsx)(d,{emoji:`👀`}),z[e.type]]})})]})}export{A as n,M as r,V as t};
|
|
2
|
+
//# sourceMappingURL=DnSy_Myx.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmrPRojb.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/components/audience-item/audience-item.module.scss","../../../../libs/shared/src/apps/subjects/components/audience-item/AudienceItem.tsx","../../../../libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.tsx","../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":[":local {\n $badge-base-height-md: 1.5rem; // 24px — original look\n $badge-base-height-lg: 2.375rem; // 38px — matches btn-lg\n\n .disabled {\n background-color: $gray-100;\n }\n\n .disabledHighlighted {\n background-color: lighten($info, 15%);\n }\n\n .badgeMd {\n height: $badge-base-height-md;\n margin-right: 0.25rem;\n }\n\n .badgeLg {\n height: $badge-base-height-lg;\n font-size: $font-size-lg;\n padding: 0 1rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n }\n}\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport styles from './audience-item.module.scss';\n\nconst namespace = 'shared.audienceItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction lowerCaseToTitleCase(str: string): string {\n return str.split(' ').map((s: string) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\n}\n\nfunction getColourClass(highlight: boolean, isDisabled: boolean): string {\n if (highlight) return isDisabled ? `${styles.disabledHighlighted} text-light` : 'bg-gray-900 text-light';\n if (isDisabled) return `${styles.disabled} text-secondary`;\n return 'bg-light';\n}\n\ntype AudienceItemSize = 'md' | 'lg';\n\ninterface AudienceItemProps {\n audience: PresentationAudience;\n highlight: boolean;\n setAudience?: (audience: PresentationAudience, highlight: boolean) => void;\n isDisabled?: boolean;\n extraClasses?: string;\n size?: AudienceItemSize;\n}\n\nAudienceItem.defaultProps = {\n extraClasses: '',\n size: 'md'\n};\n\nconst SIZE_CLASS_MAP: Record<AudienceItemSize, string> = {\n md: styles.badgeMd,\n lg: styles.badgeLg\n};\n\nexport function AudienceItem(props: AudienceItemProps): React.ReactElement {\n const { audience, highlight, setAudience, isDisabled, extraClasses, size } = props;\n\n const className = classNames(\n getColourClass(highlight, isDisabled),\n isDisabled ? 'cursor-default' : 'cursor-pointer',\n SIZE_CLASS_MAP[size],\n extraClasses,\n 'lh-1 rounded-pill d-inline-block user-select-none'\n );\n\n const onClick = () => {\n if (isDisabled || !FunctionHelper.isFunction(setAudience))\n return;\n\n setAudience(audience, !highlight);\n };\n\n return (\n <button\n type='button'\n className={className}\n onClick={onClick}\n role='checkbox'\n aria-checked={highlight}\n aria-label={`${getPhrase('ariaFilter')} ${audience.name}`}\n disabled={isDisabled}\n >\n {lowerCaseToTitleCase(audience.name)}\n </button>\n );\n}\n","import * as React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceItem } from 'libs/shared/apps/subjects/components/audience-item/AudienceItem';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nconst namespace = 'subjects.audienceFilter';\n\ninterface AudienceFilterProps {\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n disabled?: boolean;\n appLink: Core.AppLink;\n disablePersist?: boolean;\n tooltip?: string;\n}\n\nexport function AudienceFilter(props: AudienceFilterProps): React.ReactElement {\n const { audiences, activeAudiences, appLink } = props;\n\n const isDisabled = props.disabled || !appLink;\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n React.useEffect(() => {\n if (!props.disablePersist)\n setActiveAudiences(activeAudiences);\n }, [activeAudiences?.map(o => o.masterId).join(':')]);\n\n function onToggleAudience(audience: PresentationAudience, isSelected: boolean): void {\n if (isDisabled)\n return;\n\n const activeAudienceNames = isSelected ?\n [ ...(activeAudiences?.map(a => a.name) ?? []), audience.name ] :\n activeAudiences.map(a => a.name).filter(name => name !== audience.name);\n\n const getParams = () => {\n const otherParams = ObjectHelper.omit(appLink.params, ['a']);\n\n if (!activeAudienceNames.length)\n return otherParams;\n\n return Object.assign({}, otherParams, { a: activeAudienceNames });\n };\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: getParams()\n }, { replace: true });\n }\n\n function onClickClearAudiences(): void {\n if (isDisabled)\n return;\n\n const params = ObjectHelper.omit(appLink.params, ['a']);\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params\n }, { replace: true });\n }\n\n if (!audiences || !audiences.length)\n return <></>;\n\n return (\n <Tooltip title={props.tooltip} spanHack>\n <div className='d-flex flex-wrap row-gap-2'>\n {audiences.map((a: PresentationAudience) => (\n <AudienceItem\n key={a.masterId}\n audience={a}\n highlight={!isDisabled && !!activeAudiences?.find(aa => aa.masterId === a.masterId)}\n setAudience={onToggleAudience}\n isDisabled={isDisabled}\n />\n ))}\n {(!isDisabled && !!activeAudiences && !!Object.keys(activeAudiences).length) && (\n <DivButton className='info-link d-inline-block ms-1' onClick={onClickClearAudiences}>\n <Text namespace={namespace} phrase='clear' />\n </DivButton>\n )}\n </div>\n </Tooltip>\n );\n}\n\nconst PARTIAL_AUDIENCES = PartialLoadingHelper.getPartialLoadingItems({ numItems: 6 });\n\nexport const PartialAudienceFilter = () => (\n <div className='d-flex flex-wrap row-gap-2'>\n {PARTIAL_AUDIENCES.map(({ width }, idx) => (\n <span\n key={idx}\n className='rounded-pill partial-loading-background me-1'\n dangerouslySetInnerHTML={{ __html: ' ' }}\n style={{ width }}\n />\n ))}\n </div>\n);\n","import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DnSy_Myx.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/components/audience-item/audience-item.module.scss","../../../../libs/shared/src/apps/subjects/components/audience-item/AudienceItem.tsx","../../../../libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.tsx","../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":[":local {\n $badge-base-height-md: 1.5rem; // 24px — original look\n $badge-base-height-lg: 2.375rem; // 38px — matches btn-lg\n\n .disabled {\n background-color: $gray-100;\n }\n\n .disabledHighlighted {\n background-color: lighten($info, 15%);\n }\n\n .badgeMd {\n height: $badge-base-height-md;\n margin-right: 0.25rem;\n }\n\n .badgeLg {\n height: $badge-base-height-lg;\n font-size: $font-size-lg;\n padding: 0 1rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n }\n}\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport styles from './audience-item.module.scss';\n\nconst namespace = 'shared.audienceItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction lowerCaseToTitleCase(str: string): string {\n return str.split(' ').map((s: string) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\n}\n\nfunction getColourClass(highlight: boolean, isDisabled: boolean): string {\n if (highlight) return isDisabled ? `${styles.disabledHighlighted} text-light` : 'bg-gray-900 text-light';\n if (isDisabled) return `${styles.disabled} text-secondary`;\n return 'bg-light';\n}\n\ntype AudienceItemSize = 'md' | 'lg';\n\ninterface AudienceItemProps {\n audience: PresentationAudience;\n highlight: boolean;\n setAudience?: (audience: PresentationAudience, highlight: boolean) => void;\n isDisabled?: boolean;\n extraClasses?: string;\n size?: AudienceItemSize;\n}\n\nAudienceItem.defaultProps = {\n extraClasses: '',\n size: 'md'\n};\n\nconst SIZE_CLASS_MAP: Record<AudienceItemSize, string> = {\n md: styles.badgeMd,\n lg: styles.badgeLg\n};\n\nexport function AudienceItem(props: AudienceItemProps): React.ReactElement {\n const { audience, highlight, setAudience, isDisabled, extraClasses, size } = props;\n\n const className = classNames(\n getColourClass(highlight, isDisabled),\n isDisabled ? 'cursor-default' : 'cursor-pointer',\n SIZE_CLASS_MAP[size],\n extraClasses,\n 'lh-1 rounded-pill d-inline-block user-select-none'\n );\n\n const onClick = () => {\n if (isDisabled || !FunctionHelper.isFunction(setAudience))\n return;\n\n setAudience(audience, !highlight);\n };\n\n return (\n <button\n type='button'\n className={className}\n onClick={onClick}\n role='checkbox'\n aria-checked={highlight}\n aria-label={`${getPhrase('ariaFilter')} ${audience.name}`}\n disabled={isDisabled}\n >\n {lowerCaseToTitleCase(audience.name)}\n </button>\n );\n}\n","import * as React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceItem } from 'libs/shared/apps/subjects/components/audience-item/AudienceItem';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nconst namespace = 'subjects.audienceFilter';\n\ninterface AudienceFilterProps {\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n disabled?: boolean;\n appLink: Core.AppLink;\n disablePersist?: boolean;\n tooltip?: string;\n}\n\nexport function AudienceFilter(props: AudienceFilterProps): React.ReactElement {\n const { audiences, activeAudiences, appLink } = props;\n\n const isDisabled = props.disabled || !appLink;\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n React.useEffect(() => {\n if (!props.disablePersist)\n setActiveAudiences(activeAudiences);\n }, [activeAudiences?.map(o => o.masterId).join(':')]);\n\n function onToggleAudience(audience: PresentationAudience, isSelected: boolean): void {\n if (isDisabled)\n return;\n\n const activeAudienceNames = isSelected ?\n [ ...(activeAudiences?.map(a => a.name) ?? []), audience.name ] :\n activeAudiences.map(a => a.name).filter(name => name !== audience.name);\n\n const getParams = () => {\n const otherParams = ObjectHelper.omit(appLink.params, ['a']);\n\n if (!activeAudienceNames.length)\n return otherParams;\n\n return Object.assign({}, otherParams, { a: activeAudienceNames });\n };\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: getParams()\n }, { replace: true });\n }\n\n function onClickClearAudiences(): void {\n if (isDisabled)\n return;\n\n const params = ObjectHelper.omit(appLink.params, ['a']);\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params\n }, { replace: true });\n }\n\n if (!audiences || !audiences.length)\n return <></>;\n\n return (\n <Tooltip title={props.tooltip} spanHack>\n <div className='d-flex flex-wrap row-gap-2'>\n {audiences.map((a: PresentationAudience) => (\n <AudienceItem\n key={a.masterId}\n audience={a}\n highlight={!isDisabled && !!activeAudiences?.find(aa => aa.masterId === a.masterId)}\n setAudience={onToggleAudience}\n isDisabled={isDisabled}\n />\n ))}\n {(!isDisabled && !!activeAudiences && !!Object.keys(activeAudiences).length) && (\n <DivButton className='info-link d-inline-block ms-1' onClick={onClickClearAudiences}>\n <Text namespace={namespace} phrase='clear' />\n </DivButton>\n )}\n </div>\n </Tooltip>\n );\n}\n\nconst PARTIAL_AUDIENCES = PartialLoadingHelper.getPartialLoadingItems({ numItems: 6 });\n\nexport const PartialAudienceFilter = () => (\n <div className='d-flex flex-wrap row-gap-2'>\n {PARTIAL_AUDIENCES.map(({ width }, idx) => (\n <span\n key={idx}\n className='rounded-pill partial-loading-background me-1'\n dangerouslySetInnerHTML={{ __html: ' ' }}\n style={{ width }}\n />\n ))}\n </div>\n);\n","import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{gt as e}from"./Dp9qJj1C.chunk.js";import{n as t,t as n}from"./BJvPfCvt.chunk.js";import{t as r}from"./ImQRQGZr.chunk.js";import{lt as i,ut as a}from"./Dun43GrB.chunk.js";import{t as o}from"./Ca1QPe-q2.chunk.js";import{t as s}from"./B13dpWxS2.chunk.js";import{w as c}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{gt as e}from"./Dp9qJj1C.chunk.js";import{n as t,t as n}from"./BJvPfCvt.chunk.js";import{t as r}from"./ImQRQGZr.chunk.js";import{lt as i,ut as a}from"./Dun43GrB.chunk.js";import{t as o}from"./Ca1QPe-q2.chunk.js";import{t as s}from"./B13dpWxS2.chunk.js";import{w as c}from"./app-BIigh9wv.js";import{t as l}from"./DXfGdqxs.chunk.js";import{t as u}from"./CE7XVl4t.chunk.js";var d=e(a()),f=i(),p=r.encloseNamespace(`shared.breadcrumbComponent`),m=64,h=48,g=d.forwardRef((e,r)=>{let{breadcrumb:{name:i,appLink:a,active:s},withBackIcon:c,linkClassName:u}=e,d=i,p=null;return d.length>h&&(d=i.slice(0,h)+`...`,p=i),(0,f.jsx)(`li`,{className:`breadcrumb-item${s?` active`:``}`,title:p,children:s?(0,f.jsx)(`strong`,{children:d}):(0,f.jsxs)(o,{appLink:a,ref:r,className:a?u:``,children:[c&&(0,f.jsx)(n,{svg:l,size:t.Small}),(0,f.jsx)(`span`,{className:c?`ms-2`:``,children:d})]})})}),_=({breadcrumbs:e,linkClassName:t})=>{let n=s(c.XS),r=e?.length||0,[i,a]=d.useState(!1),[o,l]=d.useState(!1),u=d.useRef(null);d.useEffect(()=>{let t=e?.reduce((e,t)=>e+t.name.length,0)??0;r>4&&t>m&&a(!0)},[e?.length]),d.useLayoutEffect(()=>{o&&u.current?.focus()},[u.current,o]);function h(){a(!1),l(!0)}if(!r||n&&r<2)return(0,f.jsx)(f.Fragment,{});if(n)return(0,f.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,f.jsx)(`ol`,{className:`breadcrumb m-0 p-0`,children:(0,f.jsx)(g,{breadcrumb:e[r-2],withBackIcon:!0,linkClassName:t})})});let _=(0,f.jsx)(g,{breadcrumb:e[0],linkClassName:t}),v=r>2?(0,f.jsx)(g,{breadcrumb:e[1],linkClassName:t}):(0,f.jsx)(f.Fragment,{}),y=r>3?(0,f.jsx)(g,{breadcrumb:e[r-2],linkClassName:t}):(0,f.jsx)(f.Fragment,{}),b=r>1?(0,f.jsx)(g,{breadcrumb:e[r-1],linkClassName:t}):(0,f.jsx)(f.Fragment,{}),x=e.slice(2,r-2);return(0,f.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,f.jsxs)(`ol`,{className:`breadcrumb m-0 p-0`,children:[_,v,i?(0,f.jsx)(`li`,{className:`breadcrumb-item`,children:(0,f.jsx)(`button`,{className:`btn-link`,onClick:h,"aria-label":p(`expand`),children:`...`})}):x.map((e,n)=>(0,f.jsx)(g,{breadcrumb:e,ref:n===0?u:null,linkClassName:t},n)),y,b]})})},v=d.memo(function({numItems:e=3}){return s(c.XS)?(0,f.jsx)(`div`,{className:`partial-loading-background`,style:{height:`1.3125rem`,width:`6rem`}}):(0,f.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,f.jsx)(`ol`,{className:`breadcrumb m-0 p-0`,children:u.getPartialLoadingItems({numItems:e}).map(({width:e},t)=>(0,f.jsx)(`li`,{className:`breadcrumb-item`,children:(0,f.jsx)(`span`,{className:`d-inline-block partial-loading-background`,style:{width:e},dangerouslySetInnerHTML:{__html:` `}})},t))})})});export{v as n,_ as t};
|
|
2
|
+
//# sourceMappingURL=Dr1flAez.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"Dr1flAez.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.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"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e}from"./Dp9qJj1C.chunk.js";import{t}from"./ImQRQGZr.chunk.js";import{lt as n,ut as r}from"./Dun43GrB.chunk.js";import{t as i}from"./Xo0rk19-.chunk.js";import{t as a}from"./Ca1QPe-q2.chunk.js";import{n as o}from"./D7d5XFW82.chunk.js";import{t as s}from"./DjIdG9LL2.chunk.js";import{t as c}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{p as e}from"./Dp9qJj1C.chunk.js";import{t}from"./ImQRQGZr.chunk.js";import{lt as n,ut as r}from"./Dun43GrB.chunk.js";import{t as i}from"./Xo0rk19-.chunk.js";import{t as a}from"./Ca1QPe-q2.chunk.js";import{n as o}from"./D7d5XFW82.chunk.js";import{t as s}from"./DjIdG9LL2.chunk.js";import{t as c}from"./CbLL7dIz2.chunk.js";r();var l={myAccount:`_myAccount_1fl6w_1`,group:`_group_1fl6w_4`},u=n();function d(e){let t=e.modules?.filter(e=>!e.hide),n=!!t?.length;function r(){switch(e.id){case`my-account`:return`img-fluid ${l.myAccount}`;default:return`img-fluid`}}return(0,u.jsx)(a,{appLink:e.appLink,children:(0,u.jsxs)(`div`,{className:`row p-3 border border-dark m-0 w-100 h-100 ${l.group}`,children:[(0,u.jsx)(`div`,{className:`col-3`,children:(0,u.jsx)(`div`,{className:`d-flex justify-content-center align-items-center h-100`,children:(0,u.jsx)(`img`,{src:e.imageUrl,alt:``,role:`presentation`,className:r()})})}),(0,u.jsxs)(`div`,{className:`col-9 h-100 ${n?``:`d-flex align-items-center`}`,children:[(0,u.jsx)(`h2`,{className:`h4`,children:e.name}),n&&(0,u.jsx)(`ul`,{className:`list-unstyled mb-0`,children:t.map(e=>(0,u.jsx)(`li`,{className:`mb-1`,children:`appLink`in e?(0,u.jsx)(a,{className:`btn btn-link p-0`,appLink:e.appLink,children:e.name}):(0,u.jsx)(`button`,{className:`btn btn-link p-0 text-start`,onClick:e.onClick,children:e.name})},e.name))})]})]})})}var f={settingsContainer:`_settingsContainer_fw505_1`,groupContainer:`_groupContainer_fw505_4`},p=`settings.settings`;function m(){s({title:t.getPhrase(p,`pageTitle`)});let n=c();if(!n.length){e.throw(new i);return}return(0,u.jsxs)(`div`,{className:`px-3`,children:[(0,u.jsx)(`h1`,{className:`h2`,children:(0,u.jsx)(o,{namespace:p,phrase:`heading`})}),(0,u.jsx)(`main`,{className:`row`,children:n.map(e=>(0,u.jsx)(`div`,{className:`col-md-6 p-0`,children:(0,u.jsx)(`div`,{className:`h-100 ${f.groupContainer}`,children:(0,u.jsx)(d,{...e})})},e.id))})]})}export{m as SettingsView};
|
|
2
|
+
//# sourceMappingURL=DwzBzBlI2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DwzBzBlI2.chunk.js","names":[],"sources":["../../src/apps/settings/components/settings-group/settings-group.module.scss","../../src/apps/settings/components/settings-group/SettingsGroup.tsx","../../src/apps/settings/views/settings/settings.module.scss","../../src/apps/settings/views/settings/SettingsView.tsx"],"sourcesContent":["@import '~styles/utils/include-media';\n:local {\n .myAccount {\n width: 5rem;\n }\n\n .group {\n width: 25rem;\n min-height: 11.5rem;\n border-radius: $border-radius-lg;\n }\n\n @include media('<=xl') {\n .group {\n width: 20rem;\n }\n }\n\n @include media('<=lg') {\n .group {\n min-height: 11rem;\n }\n }\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { SettingsGroup as SettingsGroupProps } from 'apps/settings/interfaces/SettingsGroup';\n\nimport styles from './settings-group.module.scss';\n\nexport function SettingsGroup(props: SettingsGroupProps): JSX.Element {\n const modulesToDisplay = props.modules?.filter(m => !m.hide);\n\n const hasModules = !!modulesToDisplay?.length;\n\n function getImageClassName(): string {\n switch (props.id) {\n case 'my-account':\n return `img-fluid ${styles.myAccount}`;\n\n default:\n return 'img-fluid';\n }\n }\n\n return (\n <AppLink appLink={props.appLink}>\n <div className={`row p-3 border border-dark m-0 w-100 h-100 ${styles.group}`}>\n <div className='col-3'>\n <div className='d-flex justify-content-center align-items-center h-100'>\n <img\n src={props.imageUrl}\n alt=''\n role='presentation'\n className={getImageClassName()}\n />\n </div>\n </div>\n\n <div className={`col-9 h-100 ${!hasModules ? 'd-flex align-items-center' : ''}`}>\n <h2 className='h4'>{props.name}</h2>\n\n {hasModules && (\n <ul className='list-unstyled mb-0'>\n {modulesToDisplay.map(m => (\n <li key={m.name} className='mb-1'>\n {'appLink' in m ?\n <AppLink className='btn btn-link p-0' appLink={m.appLink}>\n {m.name}\n </AppLink> :\n <button className='btn btn-link p-0 text-start' onClick={m.onClick}>\n {m.name}\n </button>\n }\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n </AppLink>\n );\n}\n","@import '~styles/utils/include-media';\n:local {\n .settingsContainer {\n padding: map-get($spacers, 3) map-get($spacers, 5);\n }\n\n .groupContainer {\n padding: map-get($spacers, 3);\n }\n\n @include media('<=xl') {\n .settingsContainer {\n padding: map-get($spacers, 3) map-get($spacers, 4);\n }\n }\n\n @include media('<=lg') {\n .settingsContainer {\n padding: map-get($spacers, 3) map-get($spacers, 3);\n }\n }\n\n @include media('<=md') {\n .groupContainer {\n margin: 0;\n margin-bottom: map-get($spacers, 3);\n }\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { SettingsGroup as SettingsGroupComponent } from 'apps/settings/components/settings-group/SettingsGroup';\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nimport styles from './settings.module.scss';\n\nconst namespace = 'settings.settings';\n\nexport function SettingsView(): JSX.Element {\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const groups = useGetSettingsGroups();\n\n if (!groups.length) {\n Core.ErrorHelper.throw(new NotFoundError());\n return;\n }\n\n return (\n <div className='px-3'>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n\n <main className='row'>\n {groups.map(group => (\n <div key={group.id} className='col-md-6 p-0'>\n <div className={`h-100 ${styles.groupContainer}`}>\n <SettingsGroupComponent {...group} />\n </div>\n </div>\n ))}\n </main>\n </div>\n );\n}\n"],"mappings":"gZCQA,SAAgB,EAAc,EAAwC,CACpE,IAAM,EAAmB,EAAM,SAAS,OAAO,GAAK,CAAC,EAAE,KAAK,CAEtD,EAAa,CAAC,CAAC,GAAkB,OAEvC,SAAS,GAA4B,CACnC,OAAQ,EAAM,GAAd,CACE,IAAK,aACH,MAAO,aAAa,EAAO,YAE7B,QACE,MAAO,aAIb,OACE,EAAA,EAAA,KAAC,EAAD,CAAS,QAAS,EAAM,kBACtB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,8CAA8C,EAAO,iBAArE,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mEACb,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EAAM,SACX,IAAI,GACJ,KAAK,eACL,UAAW,GAAA,CACX,CAAA,CACE,CAAA,CACF,CAAA,EAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,eAAgB,EAA2C,GAA9B,uCAA7C,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,cAAM,EAAM,KAAU,CAAA,CAEnC,IACC,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,8BACX,EAAiB,IAAI,IACpB,EAAA,EAAA,KAAC,KAAD,CAAiB,UAAU,gBACxB,YAAa,GACZ,EAAA,EAAA,KAAC,EAAD,CAAS,UAAU,mBAAmB,QAAS,EAAE,iBAC9C,EAAE,KACK,CAAA,EACV,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,8BAA8B,QAAS,EAAE,iBACxD,EAAE,KACI,CAAA,CAER,CATI,EAAE,KASN,CAAA,CAEJ,CAAA,CAAA,MAIH,CAAA,iGE5CR,EAAY,oBAElB,SAAgB,GAA4B,CAC1C,EAAmB,CAAE,MAAO,EAAgB,UAAU,EAAW,YAAY,CAAE,CAAC,CAEhF,IAAM,EAAS,GAAsB,CAErC,GAAI,CAAC,EAAO,OAAQ,CAClB,EAAiB,MAAM,IAAI,EAAgB,CAC3C,OAGF,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,eAAK,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,UAAY,CAAA,CAAK,CAAA,EAEvE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,eACb,EAAO,IAAI,IACV,EAAA,EAAA,KAAC,MAAD,CAAoB,UAAU,yBAC5B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,SAAS,EAAO,2BAC9B,EAAA,EAAA,KAAC,EAAD,CAAwB,GAAI,EAAS,CAAA,CACjC,CAAA,CACF,CAJI,EAAM,GAIV,CAAA,CAEH,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{v as e}from"./Dp9qJj1C.chunk.js";import{t}from"./BJvPfCvt.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{lt as r,ut as i}from"./Dun43GrB.chunk.js";import{t as a}from"./B-OL6Vs7.chunk.js";import{t as o}from"./CxwN2xIE.chunk.js";import{t as s}from"./DeldjYRc.chunk.js";import{t as c}from"./Ca1QPe-q2.chunk.js";import{n as l}from"./D7d5XFW82.chunk.js";import{A as u,D as d,z as f}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{v as e}from"./Dp9qJj1C.chunk.js";import{t}from"./BJvPfCvt.chunk.js";import{t as n}from"./ImQRQGZr.chunk.js";import{lt as r,ut as i}from"./Dun43GrB.chunk.js";import{t as a}from"./B-OL6Vs7.chunk.js";import{t as o}from"./CxwN2xIE.chunk.js";import{t as s}from"./DeldjYRc.chunk.js";import{t as c}from"./Ca1QPe-q2.chunk.js";import{n as l}from"./D7d5XFW82.chunk.js";import{A as u,D as d,z as f}from"./app-BIigh9wv.js";i();var p={logo:`_logo_15b07_1`},m=r(),h=`streamableVideos.signInPopup`,g=n.encloseNamespace(h);function _(n){let r=e.getHref(o.getCurrentRoute().appLink),i=r===`/`?{}:{redirectUrl:r};return(0,m.jsxs)(f,{title:g(`signInHeading`),hideTitle:!0,closePopup:n.closePopup,bodyClassName:`p-5`,children:[(0,m.jsx)(`button`,{className:`btn-close position-absolute top-0 end-0 p-3`,onClick:n.closePopup}),(0,m.jsx)(`div`,{className:`${p.logo} position-absolute top-0 start-0 m-3`,children:(0,m.jsx)(d,{})}),(0,m.jsx)(`h1`,{className:`h2 text-center`,children:(0,m.jsx)(l,{namespace:h,phrase:`signInHeading`})}),(0,m.jsx)(`p`,{className:`text-center mb-3`,children:(0,m.jsx)(l,{namespace:h,phrase:`signInDescription`})}),(0,m.jsxs)(c,{className:`mt-3 btn btn-dark w-100`,appLink:{application:a.DEFAULT,action:s.Default.CHALLENGE,params:i},children:[(0,m.jsx)(t,{svg:u}),(0,m.jsx)(`span`,{className:`ms-1`,children:(0,m.jsx)(l,{namespace:h,phrase:`signInButton`})})]}),(0,m.jsx)(c,{className:`d-flex justify-content-center align-items-center mt-3 text-info`,appLink:{application:a.DEFAULT,action:s.Default.CONTACT_US_POPUP},children:(0,m.jsx)(l,{namespace:h,phrase:`contactUsLink`})})]})}export{_ as SignInPopupView};
|
|
2
|
+
//# sourceMappingURL=DyT1OGvP2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DyT1OGvP2.chunk.js","names":[],"sources":["../../src/apps/videos/views/sign-in-popup/sign-in-popup.module.scss","../../src/apps/videos/views/sign-in-popup/SignInPopupView.tsx"],"sourcesContent":[":local {\n .logo {\n height: 2.5rem;\n width: 2.5rem;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { StreamableIconLogo } from 'shared/components/streamable-logo/StreamableLogo';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\nimport styles from './sign-in-popup.module.scss';\n\nconst namespace = 'streamableVideos.signInPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SignInPopupViewProps extends PopupProps { }\n\nexport function SignInPopupView(props: SignInPopupViewProps) {\n const redirectUrl = Core.AppLinkHelper.getHref(ContextService.getCurrentRoute().appLink);\n const params = redirectUrl !== '/' ? { redirectUrl } : {};\n\n return (\n <Popup\n title={getPhrase('signInHeading')}\n hideTitle\n closePopup={props.closePopup}\n bodyClassName='p-5'\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={props.closePopup} />\n <div className={`${styles.logo} position-absolute top-0 start-0 m-3`}>\n <StreamableIconLogo />\n </div>\n <h1 className='h2 text-center'><Text namespace={namespace} phrase='signInHeading' /></h1>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='signInDescription' /></p>\n <AppLink\n className='mt-3 btn btn-dark w-100'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params\n }}\n >\n <SvgContainer svg={NewWindowSvg} />\n <span className='ms-1'>\n <Text namespace={namespace} phrase='signInButton' />\n </span>\n </AppLink>\n <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CONTACT_US_POPUP\n }}\n >\n <Text namespace={namespace} phrase='contactUsLink' />\n </AppLink>\n </Popup>\n );\n}\n"],"mappings":"ycCkBM,EAAY,+BACZ,EAAY,EAAgB,iBAAiB,EAAU,CAI7D,SAAgB,EAAgB,EAA6B,CAC3D,IAAM,EAAA,EAAiC,QAAQ,EAAe,iBAAiB,CAAC,QAAQ,CAClF,EAAS,IAAgB,IAAwB,EAAE,CAApB,CAAE,cAAa,CAEpD,OACE,EAAA,EAAA,MAAC,EAAD,CACE,MAAO,EAAU,gBAAgB,CACjC,UAAA,GACA,WAAY,EAAM,WAClB,cAAc,eAJhB,EAME,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,8CAA8C,QAAS,EAAM,WAAc,CAAA,EAC7F,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,KAAK,gDAC7B,EAAA,EAAA,KAAC,EAAD,EAAsB,CAAA,CAClB,CAAA,EACN,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,2BAAiB,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,gBAAkB,CAAA,CAAK,CAAA,EACzF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,6BAAmB,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,oBAAsB,CAAA,CAAI,CAAA,EAC7F,EAAA,EAAA,MAAC,EAAD,CACE,UAAU,0BACV,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,SACD,UANH,EAQE,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAgB,CAAA,EACnC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,iBACd,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,eAAiB,CAAA,CAC/C,CAAA,CAAA,IAET,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,kEACV,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,iBACzB,WAED,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,gBAAkB,CAAA,CAC7C,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{r as n,t as r,v as i}from"./BJvPfCvt.chunk.js";import{t as a}from"./ImQRQGZr.chunk.js";import{C as o,M as s,dt as c,l,lt as u,n as d,ut as f}from"./Dun43GrB.chunk.js";import{n as p,t as m}from"./Ca1QPe-q2.chunk.js";import{t as ee}from"./iuoIcGAm2.chunk.js";import{r as te}from"./D2om474U2.chunk.js";import{t as h}from"./B8R4YVaF2.chunk.js";import{t as g}from"./X4vTaPlk.chunk.js";import{t as ne}from"./C6L8Y-TQ.chunk.js";import{N as _,i as re}from"./app-B1XBsz23.js";import{t as v}from"./CnDOpuFK.chunk.js";import{n as ie,t as ae}from"./B-6uVsUw2.chunk.js";import{t as y}from"./NrXAMmgy2.chunk.js";import{t as b}from"./BK011l4Q2.chunk.js";import{n as oe}from"./Bt57Tmef2.chunk.js";import{a as x,i as se,n as ce,r as le,t as S}from"./BKbKu9Rp.chunk.js";import{i as C,t as w}from"./DobKejA8.chunk.js";import{n as ue,t as de}from"./CpFOQcL7.chunk.js";var T=function(e){return e[e.Row=0]=`Row`,e[e.LargeRow=1]=`LargeRow`,e[e.Hero=2]=`Hero`,e[e.ResourcesTile=3]=`ResourcesTile`,e}({}),E=function(e){return e.Videos=`videos`,e.FeedVideos=`feed videos`,e.Series=`series`,e.Subjects=`subjects`,e.Playlists=`playlists`,e.Interactives=`interactives`,e.Clips=`clips`,e.PlayPageResources=`play page resources`,e.DashboardResources=`dashboard resources`,e.Libraries=`Libraries`,e.Folders=`Folders`,e.RecentActivities=`recent activities`,e.SmallSeries=`small series`,e.Companies=`companies`,e.PartnerProfiles=`partner profiles`,e.Ratings=`ratings`,e.SpecialEvents=`special events`,e.InteractivesV2=`interactives v2`,e.ClipsV2=`clips v2`,e.PlayPageResourcesV2=`playpage resources v2`,e}({}),D=e(f());function fe(e,t,n){let r=e.collection,a;(!r||s.isEmpty(r))&&!e.prefetched&&(a=e.fetch(n),r=a.data);let o=i.isFunction(e.setData)&&r?e.setData(r):r,c=o,l=_();return D.useEffect(()=>{if(!r||s.isEmpty(r))return;e.limitTotalItems&&(c=o.length>12?o.slice(0,12):o);let n=e.type;n===T.ResourcesTile&&(n=T.Row),t({type:S.Init,payload:{totalItems:c.length,breakpoints:l,type:n,contents:e.contents}})},[o?.length]),a}function pe(e,t){let{offset:n,viewableItems:r}=e,i=n,a=[];for(let e=0;e<i+r;e++)a.push(e);return function(e){let n=t.indexOf(e);return a.includes(n)}}function me(e,t){if(e)return{...e,args:e.args||[t.id,c.slugify(t.name)]}}function he(e,t){let{id:n,name:r,description:i}=e,a={};return Array.isArray(t)?{id:n,name:r,description:i}:(e.id&&(a.id=n),e.name&&(a.name=r),e.description&&(a.description=i),{...t,...a})}function O(e){switch(e){case E.Playlists:return A;case E.Videos:return N;case E.RecentActivities:return P;case E.FeedVideos:return F;case E.Subjects:return I;case E.InteractivesV2:return z;case E.Interactives:return L;case E.ClipsV2:return B;case E.Clips:return R;case E.PlayPageResources:return V;case E.PlayPageResourcesV2:return H;case E.DashboardResources:return N;case E.Libraries:case E.Folders:return M;case E.Ratings:return W;case E.SpecialEvents:return G;case E.Companies:return j;case E.SmallSeries:return ge;case E.PartnerProfiles:return k;case E.Series:default:return U}}function k(e,t,n){let r=6;return e.xs||e.sm?r=2:e.md&&(r=4),n<r&&(r=n),r}function A(e,t,n){let r=5;return e.xs?r=2:e.sm?r=3:e.md&&(r=4),n<r&&(r=n),r}function j(e,t,n){let r=8;return e.xs||e.sm?r=4:e.md&&(r=6),n<r&&(r=n),r}function M(e,t,n){let r=3;return e.xs||e.sm?r=1:e.md?r=2:e.lg&&(r=3),n<r&&(r=n),r}function N(e,t,n){let r=4;return e.xs&&(r=1),e.sm&&(r=2),(e.md||e.lg)&&(r=3),t===T.LargeRow&&r>3&&(r=3),n<r&&(r=n),r}function P(e,t,n){let r=4;return e.xs&&(r=2),e.sm&&(r=3),n<r&&(r=n),r}function F(e,t,n){return 1}function I(e,t,n){if(t===T.LargeRow){let t=5;return e.xs?t=2:e.sm?t=3:e.md&&(t=4),n<t&&(t=n),t}let r=6;return e.xs?r=2:e.sm?r=3:e.md?r=4:e.lg?r=5:(e.xl||e.xxl)&&(r=6),n<r&&(r=n),r}function L(e,t,n){let r=3;return(e.md||e.sm)&&(r=2),e.xs&&(r=1),n<Math.ceil(r)&&(r=n),r}function R(e,t,n){let r=3;return(e.md||e.sm)&&(r=2),e.xs&&(r=1),n<Math.ceil(r)&&(r=n),r}function z(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function B(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function V(e,t,n){let r=4;return e.sm&&(r=3),e.xs&&(r=2),n<r&&(r=n),r}function H(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function U(e,t,n){let r=4;return e.xs?r=2:e.sm&&(r=3),n<r&&(r=n),r}function ge(e,t,n){let r=6;return e.xs?r=2:e.sm?r=3:e.md?r=4:e.lg&&(r=5),n<r&&(r=n),r}function W(e,t,n){if(n<4)return n;let r=5;return(e.xs||e.sm)&&(r=3),(e.md||e.lg)&&(r=4),n===4&&(e.xs||e.sm)&&(r=3),n<r&&(r=n),r}function G(e,t,n){let r=6;return e.xs&&(r=2),e.sm&&(r=3),e.md&&(r=4),e.lg&&(r=5),(e.xl||e.xxl)&&(r=6),n<r&&(r=n),r}function _e(e,t,n,r,i,a,o){return function(s){let c=s.touches.item(0).clientX;i||(t.current.style.transition=``,r(t.current.getBoundingClientRect().width),a(c));let l=(i-c)/n*100;(l<0&&e.offset===e.viewableItems||l>0&&e.offset===e.totalItems)&&(l=0),o(l)}}var K=7.5;function ve(e,t,n,r,i,a,o){return function(){e.current.style.transition=`transform .4s ease-in-out`,t(null),Math.abs(n)>=K&&(i({type:n>0?S.Next:S.Previous}),n>0&&a?a():n<0&&o&&o()),r(0)}}function ye(e,t,n,r,i,a){return e||i<=r?!0:t||a?n===r:!0}function be(e,t,n,r,i,a,o){return e||i<=r?!0:n===r?!1:t?a?!1:i<=n:o?n===i:!0}function xe(e,t){D.useEffect(()=>{!e||e.current||(e.current={jumpToIndex:e=>t({type:S.JumpToIndex,payload:{offset:e+1}})})},[e?.current])}var Se={offset:0,viewableItems:4,position:0,totalItems:0,contents:null,type:T.Row},q=e=>{let{viewableItems:t,offset:n,position:r,totalItems:i}=e,a=i-n;return a%t===0||a>t?{position:r-100,offset:n+t}:a<t?{position:r-a/t*100,offset:n+a}:{position:r,offset:n}},Ce=e=>{let{viewableItems:t,offset:n,position:r}=e,i=n-t;return i%t===0||i>t?{position:r+100,offset:n-t}:i<t?{position:r+i/t*100,offset:n-i}:{position:r,offset:n}};function we(e,t){let{type:n,payload:r={}}=t;switch(n){case S.Next:return{...e,...q(e)};case S.Previous:return{...e,...Ce(e)};case S.JumpToIndex:return{...e,offset:r.offset,position:(r.offset-1)*-100};case S.Resize:{let t=O(e.contents)(r.breakpoints,e.type,e.totalItems);return{...e,position:0,offset:t,viewableItems:t}}case S.Init:{let t=O(r.contents)(r.breakpoints,r.type,r.totalItems);return Te({...e,offset:t,viewableItems:t,type:r.type,contents:r.contents,totalItems:r.totalItems,position:0})}case S.Update:return{...e,totalItems:r.totalItems};default:return e}}function Te(e){return{...Se,...e}}var J=u();function Y(e){return e.hideDescription&&e.hideHeading?(0,J.jsx)(J.Fragment,{}):e.isPreviewing?(0,J.jsx)(x,{name:e.name,description:e.description}):(0,J.jsxs)(`div`,{className:`curated-widget-header`,children:[!e.hideHeading&&(0,J.jsx)(`div`,{className:`partial-loading-background curated-widget-heading`,style:{height:`1.5rem`,width:`12rem`}}),!e.hideDescription&&(0,J.jsx)(`div`,{className:`partial-loading-background curated-widget-description`,style:{height:`1.434375rem`,width:`16rem`}})]})}var X={rightOverflowGradient:`_rightOverflowGradient_14i04_1`,leftOverflowGradient:`_leftOverflowGradient_14i04_1`,partialItem:`_partialItem_14i04_19`,mobileScroll:`_mobileScroll_14i04_24`,widgetItemWrapper:`_widgetItemWrapper_14i04_32`};function Ee(e){let t=_();return t.xs?{itemCount:1,colSize:12}:t.sm?{itemCount:2,colSize:6}:t.md||t.lg?{itemCount:3,colSize:4}:{itemCount:e===`sm`?4:3,colSize:e===`sm`?3:4}}Z.defaultProps={size:`sm`,childComponent:({colSize:e})=>(0,J.jsx)(`div`,{className:`col-${e} px-1`,children:(0,J.jsx)(`div`,{className:`${X.partialItem} partial-loading-background rounded-3`})})};function Z(e){let{itemCount:t,colSize:n}=Ee(e.size),r=e.childComponent,i=[];for(let e=0;e<t;e++)i.push((0,J.jsx)(r,{colSize:n},e));return(0,J.jsxs)(`div`,{className:`widget`,children:[(0,J.jsx)(Y,{hideHeading:e.hideHeading,hideDescription:e.hideDescription,name:e.name,description:e.description,isPreviewing:e.isPreviewing}),(0,J.jsx)(`div`,{className:`row g-0 mx-n1`,children:i})]})}var De=`shared.fixedWidget`;Oe.defaultProps={type:T.Row,minimumItemCount:0,extraChildComponentProps:{},touchBehavior:`scroll`};function Oe(e){let{analyticsData:n={},getWidgetItemAnalyticsData:r=()=>{}}=e,[o,s]=D.useState(null),[c,l]=D.useState(null),[u,f]=D.useState(0),[p,m]=D.useReducer(we,Se,Te),g=D.useRef(null),[ne,v]=ee(),[y,b]=D.useState(!1),[C,w]=D.useState(!1);xe(e.controlsRef,m);let{ref:ue,inView:de}=oe({prevent:!e.lazyLoad}),E=fe(e,m,de);function O(t){let n=e.prefetched?e.collection:E.data;return n?(i.isFunction(e.setData)?e.setData(n):n)?.slice(0,t)??[]:[]}let k=O(e.limitTotalItems?12:1/0),A=e.trailingItems&&e.trailingItemLength?k.length+e.trailingItemLength:k.length;function j(){return e.limitTotalItems?O(1/0).length>A:!1}let M=p.offset===A,N=_(),{onFocusWidget:P,onBlurWidget:F,isTabbing:I,getFixedAttributes:L,focusNext:R,focusPrev:z}=se({type:`fixed`,state:p,containerRef:g});D.useEffect(()=>{m({type:S.Resize,payload:{breakpoints:N}})},[N]),D.useEffect(()=>{if(!e.prefetched)return;let t=e.type;t===T.ResourcesTile&&(t=T.Row),m({type:S.Init,payload:{breakpoints:N,type:t,contents:e.contents,totalItems:A}})},[e.collection?.length,e.prefetched]);function B(e,t){if(A===p.viewableItems){b(e),w(e);return}if(t+1===A){w(e);return}if(t===0){b(e);return}if((t+1-p.offset%p.viewableItems)%p.viewableItems===0){w(e);return}if((t-p.offset%p.viewableItems)%p.viewableItems===0){b(e);return}}function V(){return e.touchBehavior===`scroll`?re.isTabletOrMobile():!1}let H={type:p.type,collectionSize:A,contents:e.contents},U=he(e,E?.data||e.collection);if(E?.hasError)return(0,J.jsx)(J.Fragment,{});if(!e.prefetched&&!E?.data)return(0,J.jsx)(`div`,{ref:ue,children:(0,J.jsx)(e.partialComponent||Z,{})});if(!A||A<e.minimumItemCount)return(0,J.jsx)(J.Fragment,{});let ge=e.childComponent,W=t=>({id:U?.id,name:U?.name,direction:t===S.Next?`right`:`left`,...e.analyticsData}),G=!e.appLink||!M?!1:j(),K=V()||e.hideButtons,q=p.offset===p.viewableItems,Ce=A<=p.offset,Y=p.viewableItems<A;return(0,J.jsx)(`div`,{className:`mx-n4 mb-n3`,children:(0,J.jsxs)(`div`,{className:V()?`pb-3 overflow-hidden`:`px-4 pb-3 overflow-hidden`,children:[!e.hideName&&(0,J.jsx)(`div`,{className:V()?`px-4`:``,children:(0,J.jsx)(x,{name:U.name,description:U.description,appLink:me(e.appLink,U),onAppLinkClick:e.onAppLinkClick,analyticsData:{id:U?.id,name:U?.name,...e.analyticsData},analyticsOptions:h.getSliderHeadingAnalyticsOptions(),showSeeMoreLink:e.showSeeMoreLink??Y,content:k,isPreviewing:e.isPreviewing,widgetTypeId:e.widgetTypeId,badgeComponent:e.headingBadgeComponent,onClose:e.onClose,onFollow:e.onFollow,isFollowing:e.isFollowing,showFollowSpinner:e.showFollowSpinner})}),(0,J.jsxs)(`div`,{ref:ne,className:`position-relative mx-n1 ${V()?`${X.mobileScroll} px-4`:``} ${e.hideBleedingContent?`overflow-hidden-x`:``}`,children:[!K&&(0,J.jsxs)(J.Fragment,{children:[!e.hideBleedingContent&&!y&&!q&&(0,J.jsx)(`div`,{className:X.leftOverflowGradient}),(0,J.jsx)(ae,{direction:ie.Left,onClick:()=>{z(),m({type:S.Previous}),d.logUserAction(W(S.Previous),h.getSliderAnalyticsOptions()),i.isFunction(e.onPrevious)&&e.onPrevious()},hide:!!e.hideButtons||ye(y,v,p.offset,p.viewableItems,A,I),contents:e.contents,className:e.leftWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:p})]}),(0,J.jsxs)(ce,{position:p.position,positionType:le.Percentage,onTouchMove:e.touchBehavior===`drag`&&_e(p,g,c,l,o,s,f),onTouchEnd:e.touchBehavior===`drag`&&ve(g,s,u,f,m,e.onNext,e.onPrevious),ref:g,percentageDragged:u,children:[k.map((t,i)=>(0,J.jsx)(`li`,{onFocus:()=>P(i),onBlur:F,className:X.widgetItemWrapper,...L(i),children:(0,J.jsx)(ge,{data:t,collectionAppLink:e.appLink,getAppLink:e.getChildAppLink?()=>e.getChildAppLink(t):()=>null,context:H,preloadImage:pe(p,k)(t),thumbnailSize:e.thumbnailSize||te.Medium,analyticsData:{widgetId:U.id,widgetName:U.name,itemIndex:i,...n,...r(t)},analyticsOptions:{...e.analyticsOptions,...h.getSliderItemAnalyticsOptions()},onHover:e=>{V()||window.setTimeout(()=>{B(e,i)},e?0:200)},...e.extraChildComponentProps})},`${t.id}:${i}`)),e.trailingItems,V()&&(0,J.jsx)(`div`,{className:`ps-4`})]}),!K&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ae,{direction:ie.Right,onClick:()=>{if(G){t.trigger(me(e.appLink,U));return}R(),m({type:S.Next}),d.logUserAction(W(S.Next),h.getSliderAnalyticsOptions()),i.isFunction(e.onNext)&&e.onNext()},hide:!!e.hideButtons||be(C,v,p.offset,p.viewableItems,A,G,I),contents:e.contents,hoverText:G&&a.getPhrase(De,`seeMore`),className:e.rightWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:p}),!e.hideBleedingContent&&!C&&!Ce&&(0,J.jsx)(`div`,{className:X.rightOverflowGradient})]})]})]})})}var Q={imageStyle:`_imageStyle_pcnjg_1`,item:`_item_pcnjg_6`,dashboard:`_dashboard_pcnjg_10`,playPage:`_playPage_pcnjg_25`,aspectRatio:`_aspectRatio_pcnjg_34`,outerContainer:`_outerContainer_pcnjg_39`,innerContainer:`_innerContainer_pcnjg_46`,actions:`_actions_pcnjg_46`,titleBelow:`_titleBelow_pcnjg_56`,thumbnailContainer:`_thumbnailContainer_pcnjg_59`,titleAbove:`_titleAbove_pcnjg_62`,teacherPack:`_teacherPack_pcnjg_65`,text:`_text_pcnjg_65`,hoverState:`_hoverState_pcnjg_71`,atomGuide:`_atomGuide_pcnjg_74`,studentActivity:`_studentActivity_pcnjg_83`,additionalMaterials:`_additionalMaterials_pcnjg_92`,userUploaded:`_userUploaded_pcnjg_101`,imageTypeResource:`_imageTypeResource_pcnjg_110`,download:`_download_pcnjg_116`};function ke(e){switch(e){case`atom-guide`:return Q.atomGuide;case`student-activity`:return Q.studentActivity;case`teacher-pack`:return Q.teacherPack;case`additional-materials`:return Q.additionalMaterials;default:return Q.userUploaded}}function Ae(e,t){let n=_();return t===`public`?!0:n.xs||n.sm||e.type!==`resource`||!(`metadata`in e)?!1:e.metadata.type===y.Image?!0:e.metadata.type===y.Pdf?!!e.url:!!e.pdf?.url}$.defaultProps={preloadImage:!0,actionBehaviour:`normal`};function $(e){let t=null;`metadata`in e.data&&(t=e.data.metadata);let i=v.isType(e.data,g.Resource);function a(t){let n=`
|
|
1
|
+
import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{r as n,t as r,v as i}from"./BJvPfCvt.chunk.js";import{t as a}from"./ImQRQGZr.chunk.js";import{C as o,M as s,dt as c,l,lt as u,n as d,ut as f}from"./Dun43GrB.chunk.js";import{n as p,t as m}from"./Ca1QPe-q2.chunk.js";import{t as ee}from"./iuoIcGAm2.chunk.js";import{r as te}from"./D2om474U2.chunk.js";import{t as h}from"./B8R4YVaF2.chunk.js";import{t as g}from"./X4vTaPlk.chunk.js";import{t as ne}from"./C6L8Y-TQ.chunk.js";import{N as _,i as re}from"./app-BIigh9wv.js";import{t as v}from"./CnDOpuFK.chunk.js";import{n as ie,t as ae}from"./B-6uVsUw2.chunk.js";import{t as y}from"./NrXAMmgy2.chunk.js";import{t as b}from"./BK011l4Q2.chunk.js";import{n as oe}from"./Bt57Tmef2.chunk.js";import{a as x,i as se,n as ce,r as le,t as S}from"./DK3xia1t.chunk.js";import{i as C,t as w}from"./DobKejA8.chunk.js";import{n as ue,t as de}from"./BxypZGPK.chunk.js";var T=function(e){return e[e.Row=0]=`Row`,e[e.LargeRow=1]=`LargeRow`,e[e.Hero=2]=`Hero`,e[e.ResourcesTile=3]=`ResourcesTile`,e}({}),E=function(e){return e.Videos=`videos`,e.FeedVideos=`feed videos`,e.Series=`series`,e.Subjects=`subjects`,e.Playlists=`playlists`,e.Interactives=`interactives`,e.Clips=`clips`,e.PlayPageResources=`play page resources`,e.DashboardResources=`dashboard resources`,e.Libraries=`Libraries`,e.Folders=`Folders`,e.RecentActivities=`recent activities`,e.SmallSeries=`small series`,e.Companies=`companies`,e.PartnerProfiles=`partner profiles`,e.Ratings=`ratings`,e.SpecialEvents=`special events`,e.InteractivesV2=`interactives v2`,e.ClipsV2=`clips v2`,e.PlayPageResourcesV2=`playpage resources v2`,e}({}),D=e(f());function fe(e,t,n){let r=e.collection,a;(!r||s.isEmpty(r))&&!e.prefetched&&(a=e.fetch(n),r=a.data);let o=i.isFunction(e.setData)&&r?e.setData(r):r,c=o,l=_();return D.useEffect(()=>{if(!r||s.isEmpty(r))return;e.limitTotalItems&&(c=o.length>12?o.slice(0,12):o);let n=e.type;n===T.ResourcesTile&&(n=T.Row),t({type:S.Init,payload:{totalItems:c.length,breakpoints:l,type:n,contents:e.contents}})},[o?.length]),a}function pe(e,t){let{offset:n,viewableItems:r}=e,i=n,a=[];for(let e=0;e<i+r;e++)a.push(e);return function(e){let n=t.indexOf(e);return a.includes(n)}}function me(e,t){if(e)return{...e,args:e.args||[t.id,c.slugify(t.name)]}}function he(e,t){let{id:n,name:r,description:i}=e,a={};return Array.isArray(t)?{id:n,name:r,description:i}:(e.id&&(a.id=n),e.name&&(a.name=r),e.description&&(a.description=i),{...t,...a})}function O(e){switch(e){case E.Playlists:return A;case E.Videos:return N;case E.RecentActivities:return P;case E.FeedVideos:return F;case E.Subjects:return I;case E.InteractivesV2:return z;case E.Interactives:return L;case E.ClipsV2:return B;case E.Clips:return R;case E.PlayPageResources:return V;case E.PlayPageResourcesV2:return H;case E.DashboardResources:return N;case E.Libraries:case E.Folders:return M;case E.Ratings:return W;case E.SpecialEvents:return G;case E.Companies:return j;case E.SmallSeries:return ge;case E.PartnerProfiles:return k;case E.Series:default:return U}}function k(e,t,n){let r=6;return e.xs||e.sm?r=2:e.md&&(r=4),n<r&&(r=n),r}function A(e,t,n){let r=5;return e.xs?r=2:e.sm?r=3:e.md&&(r=4),n<r&&(r=n),r}function j(e,t,n){let r=8;return e.xs||e.sm?r=4:e.md&&(r=6),n<r&&(r=n),r}function M(e,t,n){let r=3;return e.xs||e.sm?r=1:e.md?r=2:e.lg&&(r=3),n<r&&(r=n),r}function N(e,t,n){let r=4;return e.xs&&(r=1),e.sm&&(r=2),(e.md||e.lg)&&(r=3),t===T.LargeRow&&r>3&&(r=3),n<r&&(r=n),r}function P(e,t,n){let r=4;return e.xs&&(r=2),e.sm&&(r=3),n<r&&(r=n),r}function F(e,t,n){return 1}function I(e,t,n){if(t===T.LargeRow){let t=5;return e.xs?t=2:e.sm?t=3:e.md&&(t=4),n<t&&(t=n),t}let r=6;return e.xs?r=2:e.sm?r=3:e.md?r=4:e.lg?r=5:(e.xl||e.xxl)&&(r=6),n<r&&(r=n),r}function L(e,t,n){let r=3;return(e.md||e.sm)&&(r=2),e.xs&&(r=1),n<Math.ceil(r)&&(r=n),r}function R(e,t,n){let r=3;return(e.md||e.sm)&&(r=2),e.xs&&(r=1),n<Math.ceil(r)&&(r=n),r}function z(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function B(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function V(e,t,n){let r=4;return e.sm&&(r=3),e.xs&&(r=2),n<r&&(r=n),r}function H(e,t,n){let r=3;return e.xs&&(r=2),n<r&&(r=n),r}function U(e,t,n){let r=4;return e.xs?r=2:e.sm&&(r=3),n<r&&(r=n),r}function ge(e,t,n){let r=6;return e.xs?r=2:e.sm?r=3:e.md?r=4:e.lg&&(r=5),n<r&&(r=n),r}function W(e,t,n){if(n<4)return n;let r=5;return(e.xs||e.sm)&&(r=3),(e.md||e.lg)&&(r=4),n===4&&(e.xs||e.sm)&&(r=3),n<r&&(r=n),r}function G(e,t,n){let r=6;return e.xs&&(r=2),e.sm&&(r=3),e.md&&(r=4),e.lg&&(r=5),(e.xl||e.xxl)&&(r=6),n<r&&(r=n),r}function _e(e,t,n,r,i,a,o){return function(s){let c=s.touches.item(0).clientX;i||(t.current.style.transition=``,r(t.current.getBoundingClientRect().width),a(c));let l=(i-c)/n*100;(l<0&&e.offset===e.viewableItems||l>0&&e.offset===e.totalItems)&&(l=0),o(l)}}var K=7.5;function ve(e,t,n,r,i,a,o){return function(){e.current.style.transition=`transform .4s ease-in-out`,t(null),Math.abs(n)>=K&&(i({type:n>0?S.Next:S.Previous}),n>0&&a?a():n<0&&o&&o()),r(0)}}function ye(e,t,n,r,i,a){return e||i<=r?!0:t||a?n===r:!0}function be(e,t,n,r,i,a,o){return e||i<=r?!0:n===r?!1:t?a?!1:i<=n:o?n===i:!0}function xe(e,t){D.useEffect(()=>{!e||e.current||(e.current={jumpToIndex:e=>t({type:S.JumpToIndex,payload:{offset:e+1}})})},[e?.current])}var Se={offset:0,viewableItems:4,position:0,totalItems:0,contents:null,type:T.Row},q=e=>{let{viewableItems:t,offset:n,position:r,totalItems:i}=e,a=i-n;return a%t===0||a>t?{position:r-100,offset:n+t}:a<t?{position:r-a/t*100,offset:n+a}:{position:r,offset:n}},Ce=e=>{let{viewableItems:t,offset:n,position:r}=e,i=n-t;return i%t===0||i>t?{position:r+100,offset:n-t}:i<t?{position:r+i/t*100,offset:n-i}:{position:r,offset:n}};function we(e,t){let{type:n,payload:r={}}=t;switch(n){case S.Next:return{...e,...q(e)};case S.Previous:return{...e,...Ce(e)};case S.JumpToIndex:return{...e,offset:r.offset,position:(r.offset-1)*-100};case S.Resize:{let t=O(e.contents)(r.breakpoints,e.type,e.totalItems);return{...e,position:0,offset:t,viewableItems:t}}case S.Init:{let t=O(r.contents)(r.breakpoints,r.type,r.totalItems);return Te({...e,offset:t,viewableItems:t,type:r.type,contents:r.contents,totalItems:r.totalItems,position:0})}case S.Update:return{...e,totalItems:r.totalItems};default:return e}}function Te(e){return{...Se,...e}}var J=u();function Y(e){return e.hideDescription&&e.hideHeading?(0,J.jsx)(J.Fragment,{}):e.isPreviewing?(0,J.jsx)(x,{name:e.name,description:e.description}):(0,J.jsxs)(`div`,{className:`curated-widget-header`,children:[!e.hideHeading&&(0,J.jsx)(`div`,{className:`partial-loading-background curated-widget-heading`,style:{height:`1.5rem`,width:`12rem`}}),!e.hideDescription&&(0,J.jsx)(`div`,{className:`partial-loading-background curated-widget-description`,style:{height:`1.434375rem`,width:`16rem`}})]})}var X={rightOverflowGradient:`_rightOverflowGradient_14i04_1`,leftOverflowGradient:`_leftOverflowGradient_14i04_1`,partialItem:`_partialItem_14i04_19`,mobileScroll:`_mobileScroll_14i04_24`,widgetItemWrapper:`_widgetItemWrapper_14i04_32`};function Ee(e){let t=_();return t.xs?{itemCount:1,colSize:12}:t.sm?{itemCount:2,colSize:6}:t.md||t.lg?{itemCount:3,colSize:4}:{itemCount:e===`sm`?4:3,colSize:e===`sm`?3:4}}Z.defaultProps={size:`sm`,childComponent:({colSize:e})=>(0,J.jsx)(`div`,{className:`col-${e} px-1`,children:(0,J.jsx)(`div`,{className:`${X.partialItem} partial-loading-background rounded-3`})})};function Z(e){let{itemCount:t,colSize:n}=Ee(e.size),r=e.childComponent,i=[];for(let e=0;e<t;e++)i.push((0,J.jsx)(r,{colSize:n},e));return(0,J.jsxs)(`div`,{className:`widget`,children:[(0,J.jsx)(Y,{hideHeading:e.hideHeading,hideDescription:e.hideDescription,name:e.name,description:e.description,isPreviewing:e.isPreviewing}),(0,J.jsx)(`div`,{className:`row g-0 mx-n1`,children:i})]})}var De=`shared.fixedWidget`;Oe.defaultProps={type:T.Row,minimumItemCount:0,extraChildComponentProps:{},touchBehavior:`scroll`};function Oe(e){let{analyticsData:n={},getWidgetItemAnalyticsData:r=()=>{}}=e,[o,s]=D.useState(null),[c,l]=D.useState(null),[u,f]=D.useState(0),[p,m]=D.useReducer(we,Se,Te),g=D.useRef(null),[ne,v]=ee(),[y,b]=D.useState(!1),[C,w]=D.useState(!1);xe(e.controlsRef,m);let{ref:ue,inView:de}=oe({prevent:!e.lazyLoad}),E=fe(e,m,de);function O(t){let n=e.prefetched?e.collection:E.data;return n?(i.isFunction(e.setData)?e.setData(n):n)?.slice(0,t)??[]:[]}let k=O(e.limitTotalItems?12:1/0),A=e.trailingItems&&e.trailingItemLength?k.length+e.trailingItemLength:k.length;function j(){return e.limitTotalItems?O(1/0).length>A:!1}let M=p.offset===A,N=_(),{onFocusWidget:P,onBlurWidget:F,isTabbing:I,getFixedAttributes:L,focusNext:R,focusPrev:z}=se({type:`fixed`,state:p,containerRef:g});D.useEffect(()=>{m({type:S.Resize,payload:{breakpoints:N}})},[N]),D.useEffect(()=>{if(!e.prefetched)return;let t=e.type;t===T.ResourcesTile&&(t=T.Row),m({type:S.Init,payload:{breakpoints:N,type:t,contents:e.contents,totalItems:A}})},[e.collection?.length,e.prefetched]);function B(e,t){if(A===p.viewableItems){b(e),w(e);return}if(t+1===A){w(e);return}if(t===0){b(e);return}if((t+1-p.offset%p.viewableItems)%p.viewableItems===0){w(e);return}if((t-p.offset%p.viewableItems)%p.viewableItems===0){b(e);return}}function V(){return e.touchBehavior===`scroll`?re.isTabletOrMobile():!1}let H={type:p.type,collectionSize:A,contents:e.contents},U=he(e,E?.data||e.collection);if(E?.hasError)return(0,J.jsx)(J.Fragment,{});if(!e.prefetched&&!E?.data)return(0,J.jsx)(`div`,{ref:ue,children:(0,J.jsx)(e.partialComponent||Z,{})});if(!A||A<e.minimumItemCount)return(0,J.jsx)(J.Fragment,{});let ge=e.childComponent,W=t=>({id:U?.id,name:U?.name,direction:t===S.Next?`right`:`left`,...e.analyticsData}),G=!e.appLink||!M?!1:j(),K=V()||e.hideButtons,q=p.offset===p.viewableItems,Ce=A<=p.offset,Y=p.viewableItems<A;return(0,J.jsx)(`div`,{className:`mx-n4 mb-n3`,children:(0,J.jsxs)(`div`,{className:V()?`pb-3 overflow-hidden`:`px-4 pb-3 overflow-hidden`,children:[!e.hideName&&(0,J.jsx)(`div`,{className:V()?`px-4`:``,children:(0,J.jsx)(x,{name:U.name,description:U.description,appLink:me(e.appLink,U),onAppLinkClick:e.onAppLinkClick,analyticsData:{id:U?.id,name:U?.name,...e.analyticsData},analyticsOptions:h.getSliderHeadingAnalyticsOptions(),showSeeMoreLink:e.showSeeMoreLink??Y,content:k,isPreviewing:e.isPreviewing,widgetTypeId:e.widgetTypeId,badgeComponent:e.headingBadgeComponent,onClose:e.onClose,onFollow:e.onFollow,isFollowing:e.isFollowing,showFollowSpinner:e.showFollowSpinner})}),(0,J.jsxs)(`div`,{ref:ne,className:`position-relative mx-n1 ${V()?`${X.mobileScroll} px-4`:``} ${e.hideBleedingContent?`overflow-hidden-x`:``}`,children:[!K&&(0,J.jsxs)(J.Fragment,{children:[!e.hideBleedingContent&&!y&&!q&&(0,J.jsx)(`div`,{className:X.leftOverflowGradient}),(0,J.jsx)(ae,{direction:ie.Left,onClick:()=>{z(),m({type:S.Previous}),d.logUserAction(W(S.Previous),h.getSliderAnalyticsOptions()),i.isFunction(e.onPrevious)&&e.onPrevious()},hide:!!e.hideButtons||ye(y,v,p.offset,p.viewableItems,A,I),contents:e.contents,className:e.leftWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:p})]}),(0,J.jsxs)(ce,{position:p.position,positionType:le.Percentage,onTouchMove:e.touchBehavior===`drag`&&_e(p,g,c,l,o,s,f),onTouchEnd:e.touchBehavior===`drag`&&ve(g,s,u,f,m,e.onNext,e.onPrevious),ref:g,percentageDragged:u,children:[k.map((t,i)=>(0,J.jsx)(`li`,{onFocus:()=>P(i),onBlur:F,className:X.widgetItemWrapper,...L(i),children:(0,J.jsx)(ge,{data:t,collectionAppLink:e.appLink,getAppLink:e.getChildAppLink?()=>e.getChildAppLink(t):()=>null,context:H,preloadImage:pe(p,k)(t),thumbnailSize:e.thumbnailSize||te.Medium,analyticsData:{widgetId:U.id,widgetName:U.name,itemIndex:i,...n,...r(t)},analyticsOptions:{...e.analyticsOptions,...h.getSliderItemAnalyticsOptions()},onHover:e=>{V()||window.setTimeout(()=>{B(e,i)},e?0:200)},...e.extraChildComponentProps})},`${t.id}:${i}`)),e.trailingItems,V()&&(0,J.jsx)(`div`,{className:`ps-4`})]}),!K&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ae,{direction:ie.Right,onClick:()=>{if(G){t.trigger(me(e.appLink,U));return}R(),m({type:S.Next}),d.logUserAction(W(S.Next),h.getSliderAnalyticsOptions()),i.isFunction(e.onNext)&&e.onNext()},hide:!!e.hideButtons||be(C,v,p.offset,p.viewableItems,A,G,I),contents:e.contents,hoverText:G&&a.getPhrase(De,`seeMore`),className:e.rightWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:p}),!e.hideBleedingContent&&!C&&!Ce&&(0,J.jsx)(`div`,{className:X.rightOverflowGradient})]})]})]})})}var Q={imageStyle:`_imageStyle_pcnjg_1`,item:`_item_pcnjg_6`,dashboard:`_dashboard_pcnjg_10`,playPage:`_playPage_pcnjg_25`,aspectRatio:`_aspectRatio_pcnjg_34`,outerContainer:`_outerContainer_pcnjg_39`,innerContainer:`_innerContainer_pcnjg_46`,actions:`_actions_pcnjg_46`,titleBelow:`_titleBelow_pcnjg_56`,thumbnailContainer:`_thumbnailContainer_pcnjg_59`,titleAbove:`_titleAbove_pcnjg_62`,teacherPack:`_teacherPack_pcnjg_65`,text:`_text_pcnjg_65`,hoverState:`_hoverState_pcnjg_71`,atomGuide:`_atomGuide_pcnjg_74`,studentActivity:`_studentActivity_pcnjg_83`,additionalMaterials:`_additionalMaterials_pcnjg_92`,userUploaded:`_userUploaded_pcnjg_101`,imageTypeResource:`_imageTypeResource_pcnjg_110`,download:`_download_pcnjg_116`};function ke(e){switch(e){case`atom-guide`:return Q.atomGuide;case`student-activity`:return Q.studentActivity;case`teacher-pack`:return Q.teacherPack;case`additional-materials`:return Q.additionalMaterials;default:return Q.userUploaded}}function Ae(e,t){let n=_();return t===`public`?!0:n.xs||n.sm||e.type!==`resource`||!(`metadata`in e)?!1:e.metadata.type===y.Image?!0:e.metadata.type===y.Pdf?!!e.url:!!e.pdf?.url}$.defaultProps={preloadImage:!0,actionBehaviour:`normal`};function $(e){let t=null;`metadata`in e.data&&(t=e.data.metadata);let i=v.isType(e.data,g.Resource);function a(t){let n=`
|
|
2
2
|
d-flex flex-column align-items-center justify-content-end rounded-3 h-100
|
|
3
3
|
position-relative ${ke(t)} ${Q.innerContainer}`;return e.theme?.containerClass?n+=` ${e.theme.containerClass}`:n+=` pt-3 px-3`,e.applyHoverState&&(n+=` ${Q.hoverState}`),n}return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:Q.aspectRatio,children:(0,J.jsx)(`div`,{className:Q.outerContainer,children:(0,J.jsxs)(`div`,{className:a(t?.resourceType),children:[e.titlePosition===`above`&&(0,J.jsx)(n,{title:e.data.name,children:(0,J.jsx)(`h3`,{className:`text-center text-break h5 mb-3 ${Q.text}`,children:(0,J.jsx)(`span`,{className:`clamp-1`,children:e.data.name})})}),(0,J.jsx)(`div`,{className:`
|
|
4
4
|
${e.theme?.thumbnailContainerClass??``} w-75 overflow-hidden
|
|
5
5
|
${Q.thumbnailContainer} ${e.titlePosition===`above`?Q.titleAbove:``}
|
|
6
6
|
${Q.imageStyle}
|
|
7
7
|
`,children:(0,J.jsx)(ue,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage})}),i&&e.onClickDownload&&e.actionBehaviour===`normal`&&(0,J.jsx)(`div`,{className:Q.actions,children:(0,J.jsx)(p,{onClick:t=>e.onClickDownload(t,e.data),className:`${Q.download} d-flex align-items-center justify-content-center`,children:(0,J.jsx)(r,{svg:b})})}),!e.hideTypeBadge&&i&&(0,J.jsx)(w,{typeId:g.Resource})]})})}),e.titlePosition===`below`&&(0,J.jsxs)(`div`,{className:`mt-1 ${Q.titleBelow}`,children:[v.isType(e.data,g.Resource)&&!!e.data?.metadata?.resourceType&&(0,J.jsx)(C,{children:de.getResourceTypeName(e.data.metadata.resourceType)}),(0,J.jsx)(`h3`,{className:`h6 clamp-2`,children:e.data.name})]})]})}var je=D.memo(function(e){let n=Ae(e.data,e.actionBehaviour);function r(){return e.location===`play-page`?Q.playPage:Q.dashboard}let i={...e.analyticsData,...e.data},a={...e.analyticsOptions,actionType:o.Click,entity:e.data.typeId===g.Resource?l.Resource:l.Link};function s(){d.logUserAction(i,a)}let c={...e,applyHoverState:n||!!e.data.url};return(0,J.jsx)(`div`,{className:`px-1 flex-shrink-0 ${Q.item} ${r()} ${ne.RESOURCE_ITEM_SELECTOR}`,children:(()=>{let r=`d-block no-decoration`;return e.data.type===`link`?(0,J.jsx)(`a`,{href:e.data.url,target:`_blank`,className:r,onClick:s,children:(0,J.jsx)($,{...c})}):n?e.actionBehaviour===`public`?(0,J.jsx)(`div`,{className:`${r} cursor-pointer d-inline`,onClick:()=>{s(),t.trigger(e.getAppLink(e.data))},children:(0,J.jsx)($,{...c})}):(0,J.jsx)(m,{appLink:e.getAppLink(e.data),className:r,analyticsData:i,analyticsOptions:a,children:(0,J.jsx)($,{...c})}):e.data.url?(0,J.jsx)(`a`,{href:e.data.url,className:r,onClick:s,children:(0,J.jsx)($,{...c})}):(0,J.jsx)(`div`,{className:r,children:(0,J.jsx)($,{...c})})})()})});export{Y as a,Z as i,je as n,E as o,Oe as r,T as s,$ as t};
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=Llxar-VU.chunk.js.map
|