@clickview/streamable-learning 0.48.0-rc.1 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +605 -605
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{CN8PeBwg.chunk.js → BIisq8ZO.chunk.js} +2 -2
- package/dist/scripts/{CN8PeBwg.chunk.js.map → BIisq8ZO.chunk.js.map} +1 -1
- package/dist/scripts/{BaMNOAYj2.chunk.js → BWU6_pPN2.chunk.js} +2 -2
- package/dist/scripts/{BaMNOAYj2.chunk.js.map → BWU6_pPN2.chunk.js.map} +1 -1
- package/dist/scripts/{BvJXPFoz2.chunk.js → BcZFo9Vw2.chunk.js} +2 -2
- package/dist/scripts/{BvJXPFoz2.chunk.js.map → BcZFo9Vw2.chunk.js.map} +1 -1
- package/dist/scripts/Bd2bbHru.chunk.js +1 -0
- package/dist/scripts/{CkYqp83j.chunk.js → BfNy0Hvk.chunk.js} +2 -2
- package/dist/scripts/{CkYqp83j.chunk.js.map → BfNy0Hvk.chunk.js.map} +1 -1
- package/dist/scripts/{D0SYGnyF.chunk.js → BivP7X20.chunk.js} +2 -2
- package/dist/scripts/{D0SYGnyF.chunk.js.map → BivP7X20.chunk.js.map} +1 -1
- package/dist/scripts/{BihZ4r0z2.chunk.js → BjbY4Fbp2.chunk.js} +3 -3
- package/dist/scripts/{BihZ4r0z2.chunk.js.map → BjbY4Fbp2.chunk.js.map} +1 -1
- package/dist/scripts/{DO8_mR5i2.chunk.js → BmxcE73n2.chunk.js} +2 -2
- package/dist/scripts/{DO8_mR5i2.chunk.js.map → BmxcE73n2.chunk.js.map} +1 -1
- package/dist/scripts/{bycmewy72.chunk.js → BnEMhkEE2.chunk.js} +2 -2
- package/dist/scripts/{bycmewy72.chunk.js.map → BnEMhkEE2.chunk.js.map} +1 -1
- package/dist/scripts/{jWpq99N3.chunk.js → Buc8GegC.chunk.js} +2 -2
- package/dist/scripts/{jWpq99N3.chunk.js.map → Buc8GegC.chunk.js.map} +1 -1
- package/dist/scripts/{CrCAJmt6.chunk.js → Byczy1lS.chunk.js} +2 -2
- package/dist/scripts/{CrCAJmt6.chunk.js.map → Byczy1lS.chunk.js.map} +1 -1
- package/dist/scripts/{BZOcEcTA2.chunk.js → C2itEpvc2.chunk.js} +2 -2
- package/dist/scripts/{BZOcEcTA2.chunk.js.map → C2itEpvc2.chunk.js.map} +1 -1
- package/dist/scripts/{smdLElLq.chunk.js → CEFKXxac.chunk.js} +2 -2
- package/dist/scripts/{smdLElLq.chunk.js.map → CEFKXxac.chunk.js.map} +1 -1
- package/dist/scripts/{B-qOny0I2.chunk.js → CEYjJAp52.chunk.js} +2 -2
- package/dist/scripts/{B-qOny0I2.chunk.js.map → CEYjJAp52.chunk.js.map} +1 -1
- package/dist/scripts/{CNJrD44-2.chunk.js → CJSc4YDq2.chunk.js} +2 -2
- package/dist/scripts/{CNJrD44-2.chunk.js.map → CJSc4YDq2.chunk.js.map} +1 -1
- package/dist/scripts/{Br0Uc4GG.chunk.js → CKUA5J3R.chunk.js} +2 -2
- package/dist/scripts/{Br0Uc4GG.chunk.js.map → CKUA5J3R.chunk.js.map} +1 -1
- package/dist/scripts/{CWFInhB82.chunk.js → CYrzupmS2.chunk.js} +2 -2
- package/dist/scripts/{CWFInhB82.chunk.js.map → CYrzupmS2.chunk.js.map} +1 -1
- package/dist/scripts/{Llxar-VU.chunk.js → CcGYZb9f.chunk.js} +2 -2
- package/dist/scripts/{Llxar-VU.chunk.js.map → CcGYZb9f.chunk.js.map} +1 -1
- package/dist/scripts/{BTYwcYPL2.chunk.js → CeQGaFi-2.chunk.js} +2 -2
- package/dist/scripts/{BTYwcYPL2.chunk.js.map → CeQGaFi-2.chunk.js.map} +1 -1
- package/dist/scripts/{D7tastET2.chunk.js → Cr3Blj6H2.chunk.js} +2 -2
- package/dist/scripts/{D7tastET2.chunk.js.map → Cr3Blj6H2.chunk.js.map} +1 -1
- package/dist/scripts/{Dr1flAez.chunk.js → CxCkwLio.chunk.js} +2 -2
- package/dist/scripts/{Dr1flAez.chunk.js.map → CxCkwLio.chunk.js.map} +1 -1
- package/dist/scripts/{DyT1OGvP2.chunk.js → Cxj75Dqe2.chunk.js} +2 -2
- package/dist/scripts/{DyT1OGvP2.chunk.js.map → Cxj75Dqe2.chunk.js.map} +1 -1
- package/dist/scripts/{CsC3VVvE2.chunk.js → D-VNmhoM2.chunk.js} +2 -2
- package/dist/scripts/{CsC3VVvE2.chunk.js.map → D-VNmhoM2.chunk.js.map} +1 -1
- package/dist/scripts/{CKdklY2o2.chunk.js → D2FqnK9m2.chunk.js} +2 -2
- package/dist/scripts/{CKdklY2o2.chunk.js.map → D2FqnK9m2.chunk.js.map} +1 -1
- package/dist/scripts/{qcrBN1zR2.chunk.js → D3sdyN2Q2.chunk.js} +2 -2
- package/dist/scripts/{qcrBN1zR2.chunk.js.map → D3sdyN2Q2.chunk.js.map} +1 -1
- package/dist/scripts/{Ce1TZZdV2.chunk.js → D6IzS-bj2.chunk.js} +2 -2
- package/dist/scripts/{Ce1TZZdV2.chunk.js.map → D6IzS-bj2.chunk.js.map} +1 -1
- package/dist/scripts/{B703cBe72.chunk.js → D8g6nOG92.chunk.js} +2 -2
- package/dist/scripts/{B703cBe72.chunk.js.map → D8g6nOG92.chunk.js.map} +1 -1
- package/dist/scripts/{CCoZQmgX.chunk.js → DCKKwz9L.chunk.js} +2 -2
- package/dist/scripts/{CCoZQmgX.chunk.js.map → DCKKwz9L.chunk.js.map} +1 -1
- package/dist/scripts/{DIavEegC.chunk.js → DL4UFxRK.chunk.js} +2 -2
- package/dist/scripts/{DIavEegC.chunk.js.map → DL4UFxRK.chunk.js.map} +1 -1
- package/dist/scripts/{C5i1HsPp2.chunk.js → DLofRa642.chunk.js} +2 -2
- package/dist/scripts/{C5i1HsPp2.chunk.js.map → DLofRa642.chunk.js.map} +1 -1
- package/dist/scripts/{B5jBIPaP.chunk.js → DMZ--ok1.chunk.js} +2 -2
- package/dist/scripts/{B5jBIPaP.chunk.js.map → DMZ--ok1.chunk.js.map} +1 -1
- package/dist/scripts/{CUUUI6pl.chunk.js → DQFcbMMk.chunk.js} +2 -2
- package/dist/scripts/{CUUUI6pl.chunk.js.map → DQFcbMMk.chunk.js.map} +1 -1
- package/dist/scripts/{Dj4AeYQQ2.chunk.js → DVeqPzBe2.chunk.js} +2 -2
- package/dist/scripts/{Dj4AeYQQ2.chunk.js.map → DVeqPzBe2.chunk.js.map} +1 -1
- package/dist/scripts/{CGxa1Jzq.chunk.js → DWerltCT.chunk.js} +2 -2
- package/dist/scripts/{CGxa1Jzq.chunk.js.map → DWerltCT.chunk.js.map} +1 -1
- package/dist/scripts/{CbLL7dIz2.chunk.js → DatscYpA2.chunk.js} +2 -2
- package/dist/scripts/{CbLL7dIz2.chunk.js.map → DatscYpA2.chunk.js.map} +1 -1
- package/dist/scripts/{DwzBzBlI2.chunk.js → DkaGC5IU2.chunk.js} +2 -2
- package/dist/scripts/{DwzBzBlI2.chunk.js.map → DkaGC5IU2.chunk.js.map} +1 -1
- package/dist/scripts/{BLrjbrp8.chunk.js → DqZWSPDJ.chunk.js} +2 -2
- package/dist/scripts/{BLrjbrp8.chunk.js.map → DqZWSPDJ.chunk.js.map} +1 -1
- package/dist/scripts/{BKnxYKDu2.chunk.js → Dql-1E6g2.chunk.js} +2 -2
- package/dist/scripts/{BKnxYKDu2.chunk.js.map → Dql-1E6g2.chunk.js.map} +1 -1
- package/dist/scripts/{B7iwtSij.chunk.js → DuBHin02.chunk.js} +2 -2
- package/dist/scripts/{B7iwtSij.chunk.js.map → DuBHin02.chunk.js.map} +1 -1
- package/dist/scripts/{BpgHKWR52.chunk.js → QMuFwiiF2.chunk.js} +2 -2
- package/dist/scripts/{BpgHKWR52.chunk.js.map → QMuFwiiF2.chunk.js.map} +1 -1
- package/dist/scripts/{Ces-KTwe.chunk.js → U_sIlzAD.chunk.js} +2 -2
- package/dist/scripts/{Ces-KTwe.chunk.js.map → U_sIlzAD.chunk.js.map} +1 -1
- package/dist/scripts/{ACTQklJQ.chunk.js → WLyOm9Lj.chunk.js} +2 -2
- package/dist/scripts/{ACTQklJQ.chunk.js.map → WLyOm9Lj.chunk.js.map} +1 -1
- package/dist/scripts/{DR80oZtZ.chunk.js → Ymq7JLkU.chunk.js} +2 -2
- package/dist/scripts/{DR80oZtZ.chunk.js.map → Ymq7JLkU.chunk.js.map} +1 -1
- package/dist/scripts/{app-BIigh9wv.js → app-gjHxcZG3.js} +4 -4
- package/dist/scripts/app-gjHxcZG3.js.map +1 -0
- package/dist/scripts/{CNmmq34f.chunk.js → djRnI462.chunk.js} +2 -2
- package/dist/scripts/{CNmmq34f.chunk.js.map → djRnI462.chunk.js.map} +1 -1
- package/dist/scripts/{oTYyWWB-.chunk.js → e2K2YU7z.chunk.js} +2 -2
- package/dist/scripts/{oTYyWWB-.chunk.js.map → e2K2YU7z.chunk.js.map} +1 -1
- package/dist/scripts/{BxypZGPK.chunk.js → fnfhCa1P.chunk.js} +2 -2
- package/dist/scripts/{BxypZGPK.chunk.js.map → fnfhCa1P.chunk.js.map} +1 -1
- package/dist/scripts/{BsAo7Lri2.chunk.js → iyIL3kim2.chunk.js} +2 -2
- package/dist/scripts/{BsAo7Lri2.chunk.js.map → iyIL3kim2.chunk.js.map} +1 -1
- package/dist/scripts/{DK3xia1t.chunk.js → kfFYr9dc.chunk.js} +2 -2
- package/dist/scripts/{DK3xia1t.chunk.js.map → kfFYr9dc.chunk.js.map} +1 -1
- package/dist/scripts/{BXJetawx2.chunk.js → kts5xiiM2.chunk.js} +2 -2
- package/dist/scripts/{BXJetawx2.chunk.js.map → kts5xiiM2.chunk.js.map} +1 -1
- package/dist/scripts/{tYi-sUb22.chunk.js → lLAYbgAy2.chunk.js} +2 -2
- package/dist/scripts/{tYi-sUb22.chunk.js.map → lLAYbgAy2.chunk.js.map} +1 -1
- package/dist/scripts/{BCBfXCYM2.chunk.js → p9ukva5a2.chunk.js} +2 -2
- package/dist/scripts/{BCBfXCYM2.chunk.js.map → p9ukva5a2.chunk.js.map} +1 -1
- package/dist/scripts/{DKnZ8BaN.chunk.js → wOeN2ls0.chunk.js} +2 -2
- package/dist/scripts/{DKnZ8BaN.chunk.js.map → wOeN2ls0.chunk.js.map} +1 -1
- package/dist/scripts/{DU1SE31v2.chunk.js → zp2BHOp82.chunk.js} +2 -2
- package/dist/scripts/{DU1SE31v2.chunk.js.map → zp2BHOp82.chunk.js.map} +1 -1
- package/dist/scripts/{DnSy_Myx.chunk.js → zyVwH8JF.chunk.js} +2 -2
- package/dist/scripts/{DnSy_Myx.chunk.js.map → zyVwH8JF.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/C4MLxDS-.chunk.js +0 -1
- package/dist/scripts/app-BIigh9wv.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{gt as e,p as t}from"./Dp9qJj1C.chunk.js";import{r as n}from"./BJvPfCvt.chunk.js";import{t as r}from"./ImQRQGZr.chunk.js";import{M as i,dt as a,l as o,lt as s,m as c,ut as l}from"./Dun43GrB.chunk.js";import{t as u}from"./Xo0rk19-.chunk.js";import{t as d}from"./B-OL6Vs7.chunk.js";import{l as f}from"./BQ5XMoHG.chunk.js";import{t as p}from"./B7tm2CBz.chunk.js";import{t as m}from"./DeldjYRc.chunk.js";import{t as ee}from"./BVWg3YHX.chunk.js";import{t as h}from"./BYYiNmLB.chunk.js";import{n as g,t as _,u as v}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{gt as e,p as t}from"./Dp9qJj1C.chunk.js";import{r as n}from"./BJvPfCvt.chunk.js";import{t as r}from"./ImQRQGZr.chunk.js";import{M as i,dt as a,l as o,lt as s,m as c,ut as l}from"./Dun43GrB.chunk.js";import{t as u}from"./Xo0rk19-.chunk.js";import{t as d}from"./B-OL6Vs7.chunk.js";import{l as f}from"./BQ5XMoHG.chunk.js";import{t as p}from"./B7tm2CBz.chunk.js";import{t as m}from"./DeldjYRc.chunk.js";import{t as ee}from"./BVWg3YHX.chunk.js";import{t as h}from"./BYYiNmLB.chunk.js";import{n as g,t as _,u as v}from"./e2K2YU7z.chunk.js";import{n as y,t as b}from"./D7d5XFW82.chunk.js";import{n as x,t as S}from"./DjIdG9LL2.chunk.js";import{t as C}from"./DUNFBIIl2.chunk.js";import{r as w}from"./B8R4YVaF2.chunk.js";import{n as T,t as E}from"./Bx_V3too2.chunk.js";import{t as D}from"./CoualKDX.chunk.js";import{t as O}from"./iTHYgnO8.chunk.js";import{I as k,X as A,q as j}from"./app-gjHxcZG3.js";import{t as M}from"./BRiYVLuz.chunk.js";import{t as N}from"./CwttNCGZ.chunk.js";import{t as P}from"./DpDQnXqh2.chunk.js";import{t as F}from"./C9tPKnK22.chunk.js";import{t as I}from"./BlBCp_pE.chunk.js";import{n as L,t as R}from"./zyVwH8JF.chunk.js";import{n as z,t as B}from"./DMZ--ok1.chunk.js";import{r as te,t as V}from"./BBWlVBxr.chunk.js";import{t as H}from"./CxCkwLio.chunk.js";import{t as U}from"./DL4UFxRK.chunk.js";import{t as W}from"./BivP7X20.chunk.js";import{t as G}from"./BjxC-sgo.chunk.js";var K=e(l()),q=s(),J=`streamable.companyDashboardEmptyState`,Y=r.encloseNamespace(J);function X(e){let t=e.dashboard?.status===E.Archived;return(0,q.jsx)(b.Provider,{value:J,children:(0,q.jsxs)(O,{children:[(0,q.jsx)(O.Image,{src:e.imageUrl,altText:Y(`headingForStreamable`)}),e.isReadOnly?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(O.Heading,{children:(0,q.jsx)(y,{namespace:J,phrase:`headingForCurator`})}),(0,q.jsx)(O.Info,{children:(0,q.jsx)(y,{namespace:J,phrase:`info`})}),(0,q.jsx)(n,{title:t?r.getPhrase(J,`archivedCtaTooltip`):``,spanHack:!0,children:(0,q.jsx)(O.Cta,{text:r.getPhrase(J,`add`),appLink:e.addWidgetApplink?.(),className:`btn btn-dark`,icon:N,disabled:t})})]}):(0,q.jsx)(O.Heading,{children:(0,q.jsx)(y,{phrase:`headingForStreamable`})})]})})}var Z=r.encloseNamespace(`streamable.companyDashboard`);function Q(e){let t=p.sortBy(e.dashboard?.widgets,`index`),n=K.useMemo(()=>t.reduce((e,t)=>(e[t.id]=!1,e),{}),[t?.length]),[r,i]=K.useState(n);function a(t,n,r){let i=w.getWidgetParams(n,r,w.getDashboardTargetType(e.dashboard),e.activeAudiences?.map(e=>e.masterId));return e.getWidgetContentRequest(t,i,r)}let s=K.useCallback((e,t)=>{r[e]!==t&&i({...r,[e]:t})},[r,t]);function l(){return t?.length?Object.values(r).every(e=>!!e):!0}let u=l();return(0,q.jsxs)(q.Fragment,{children:[!!t.length&&(0,q.jsxs)(q.Fragment,{children:[e.company?(0,q.jsx)(B,{heading:e.company.name,logo:e.company.logo,logoBgColour:e.company.metadata?.colour,alignLogoLeft:!!e.company.logo||!!e.company.cover,banner:e.company.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,blockColourClass:V(e.company.name,te),actions:e.getBannerActions?.(),actionsDropdownClassName:`btn btn-outline-dark`}):(0,q.jsx)(z,{}),(0,q.jsxs)(`div`,{className:`d-flex flex-column row-gap-3 py-3 mb-3 border-bottom`,children:[(0,q.jsx)(H,{breadcrumbs:e.getBreadcrumbs?.()}),(0,q.jsx)(L,{audiences:e.audiences,activeAudiences:e.activeAudiences,disabled:e.isReadOnly,appLink:e.widgetAppLinks?.audience()})]}),e.company.description&&(0,q.jsx)(`div`,{className:`mb-5`,children:(0,q.jsx)(v,{id:e.company?.id,question:Z(`aboutUs`),answer:P.linkifyText(e.company.description),isBot:e.isBot,analyticsOptions:{entity:o.Company,location:c.Dashboard}})}),(0,q.jsx)(`div`,{children:t.map(t=>(0,q.jsx)(g,{widgetCollection:T.Company,dashboardTarget:T.Company,id:t.id,getContentRequest:a,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,setIsEmpty:s,appLinks:e.widgetAppLinks,isScrollToTargetWidget:e?.scrollToWidgetId===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadOnly,lazyLoad:e.lazyLoad,contentType:C.Livestream,imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,classification:null,seeMoreLink:void 0,hasTableOfContents:!1,onClickRemoveItem:void 0,settings:{hasTopicDirectories:!1},badgeComponent:null},t.id))})]}),u&&(0,q.jsx)(X,{dashboard:e.dashboard,isReadOnly:e.isReadOnly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard})]})}function ne(e,t){return{...D,audience:()=>({application:d.DASHBOARD,action:m.Dashboard.COMPANY_DASHBOARD,args:[e?.id,a.slugify(e?.name)],params:t}),series:()=>null,classificationLatestReleases:()=>null,playlist:()=>null,watchHistory:()=>null,widgetWizard:()=>null,searchSettings:()=>null,searchHome:()=>null,getPreviewQuestionsAppLink:()=>null,partner:()=>null,partnerHome:()=>null}}var $=r.encloseNamespace(`dashboard.companyDashboard`);function re(e){return e?i.pick(e,[`a`,`dashboardId`]):{}}function ie(e){let{commonVideoProps:n}=U(),r=f(A.config()),i=f(G.company(e.companyId,{query:`banner,logo`})),a=f(j.streamablePresentation()),o=f(a.data&&M.presentationAudiences(ee.StreamableLearning,a.data.id)),s=F.getActiveAudiencesFromParams(o.data,e.queryParams),c=i.data&&ne(i.data,e.queryParams),{dashboard:l,isPreviewing:p}=_({targetType:T.Company,companyId:e.companyId,dashboardId:e.queryParams?.dashboardId});S(x.getDefaultMetadata({title:i.data?.name,phraseContext:{phraseHandler:$,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:I.getCanonicalLink({customAppLink:c?.audience()}),allowIndexing:!0,product:k.PRODUCT_NAME}));function g(){return i.hasCompleted?[{name:$(`discover`),appLink:{application:d.DASHBOARD,action:m.Dashboard.HOME}},{name:i.data.name,active:!0}]:[]}return K.useEffect(()=>{!l.hasCompleted||l.data||t.throw(new u)},[l.data,l.hasCompleted]),r.hasCompleted&&l.hasCompleted&&a.hasCompleted&&o.hasCompleted&&i.hasCompleted?(0,q.jsxs)(`div`,{className:`position-relative px-4`,children:[!!(p&&l.data)&&(0,q.jsx)(R,{status:l.data.status,type:`company`}),(0,q.jsx)(Q,{company:i.data,dashboard:l.data,getWidgetContentRequest:W.dashboardWidgetContent,presentation:a.data,widgetAppLinks:c,getBreadcrumbs:g,hasPermissions:()=>!1,hasLocalPermissions:()=>!1,audiences:o.data,activeAudiences:s,emptyImageUrl:h.EmptyStates.Topics.TOPIC,isBot:I.isBot(),lazyLoad:!I.isBot(),commonVideoProps:n})]}):(0,q.jsx)(q.Fragment,{})}export{ie as CompanyDashboardView,re as sanitizeDashboardParams};
|
|
2
|
+
//# sourceMappingURL=djRnI462.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNmmq34f.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState.tsx","../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard.tsx","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils.ts","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'streamable.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamableCompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadOnly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function StreamableCompanyDashboardEmptyState(props: StreamableCompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('headingForStreamable')} />\n {!props.isReadOnly ? (\n <EmptyState.Heading>\n <Text phrase='headingForStreamable' />\n </EmptyState.Heading>\n ) : (\n <>\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='headingForCurator' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardEmptyState } from 'libs/shared/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState';\nimport { AudienceFilter } from 'libs/shared/apps/subjects/components/audience-filter/AudienceFilter';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableQuestion } from 'libs/shared/components/expandable-question/ExpandableQuestion';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CalendarEventContentType, Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nconst namespace = 'streamable.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface StreamableCompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n audience: () => Core.AppLink,\n widgetWizard: () => Core.AppLink\n };\n scrollToWidgetId?: string;\n isReadOnly?: boolean;\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n isBot?: boolean;\n lazyLoad?: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function StreamableCompanyDashboard(props: StreamableCompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const initialEmptyWidgets = React.useMemo(() => {\n return widgets.reduce((acc: HashObject<boolean>, widget) => {\n acc[widget.id] = false;\n return acc;\n }, {});\n }, [widgets?.length]);\n \n const [ emptyWidgets, setEmptyWidgets ] = React.useState(initialEmptyWidgets);\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n props.activeAudiences?.map(a => a.masterId)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n if (emptyWidgets[widgetId] === isEmpty)\n return;\n\n const newEmptyState = {\n ...emptyWidgets,\n [widgetId]: isEmpty\n };\n\n setEmptyWidgets(newEmptyState);\n }, [ emptyWidgets, widgets ]);\n\n function shouldShowEmptyState(): boolean {\n if (!widgets?.length)\n return true;\n\n return Object.values(emptyWidgets).every(state => !!state);\n }\n\n const showEmptyState = shouldShowEmptyState();\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company ?\n (\n <BannerHeader\n heading={props.company.name}\n logo={props.company.logo}\n logoBgColour={props.company.metadata?.colour}\n alignLogoLeft={!!props.company.logo || !!props.company.cover}\n banner={props.company.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='d-flex flex-column row-gap-3 py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n\n <AudienceFilter\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n disabled={props.isReadOnly}\n appLink={props.widgetAppLinks?.audience()}\n />\n </div>\n\n {props.company.description && (\n <div className='mb-5'>\n <ExpandableQuestion\n id={props.company?.id}\n question={getPhrase('aboutUs')}\n answer={LinkifyHelper.linkifyText(props.company.description)}\n isBot={props.isBot}\n analyticsOptions={{\n entity: EntityType.Company,\n location: LocationContext.Dashboard\n }}\n />\n </div>\n )}\n\n <div>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n setIsEmpty={onSetIsEmpty}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadOnly}\n lazyLoad={props.lazyLoad}\n contentType={CalendarEventContentType.Livestream}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n seeMoreLink={undefined}\n hasTableOfContents={false}\n onClickRemoveItem={undefined}\n settings={{\n hasTopicDirectories: false\n }}\n badgeComponent={null}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <StreamableCompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadOnly={props.isReadOnly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardProps } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { Company } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\n\nexport function getCompanyAppLinks(\n company: Company,\n params: HashObject\n): StreamableCompanyDashboardProps['widgetAppLinks'] {\n return {\n ...StreamableAppLinks,\n audience: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ company?.id, TextHelper.slugify(company?.name) ],\n params\n }),\n\n // TODO: Find a nice way around having to pass these in\n series: () => null,\n classificationLatestReleases: () => null,\n playlist: () => null,\n watchHistory: () => null,\n widgetWizard: () => null,\n searchSettings: () => null,\n searchHome: () => null,\n getPreviewQuestionsAppLink: () => null,\n partner: () => null,\n partnerHome: () => null\n };\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { StreamableCompanyDashboard } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Company, Config, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchDashboard } from 'shared/hooks/useFetchDashboard';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { getCompanyAppLinks } from 'apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils';\n\nconst namespace = 'dashboard.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * NOTE: Ensure any keys added here are also added\n * to sanitizeDashboardParams below.\n */\nexport interface CompanyDashboardViewQueryParams {\n a?: string[];\n dashboardId?: string;\n}\n\nexport function sanitizeDashboardParams(queryParams: CompanyDashboardViewQueryParams): CompanyDashboardViewQueryParams {\n if (!queryParams)\n return {};\n\n return ObjectHelper.pick(queryParams, [ 'a', 'dashboardId' ]);\n}\n\ninterface CompanyDashboardViewProps {\n companyId: string;\n queryParams?: CompanyDashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const { commonVideoProps } = useCommonVideoProps();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId, { query: 'banner,logo' }));\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(presentation.data &&\n AudienceRequests.presentationAudiences(PresentationType.StreamableLearning, presentation.data.id));\n\n const activeAudiences = AudienceHelper.getActiveAudiencesFromParams(audiences.data, props.queryParams);\n\n const companyAppLinks = company.data && getCompanyAppLinks(company.data, props.queryParams);\n\n const {\n dashboard,\n isPreviewing\n } = useFetchDashboard({\n targetType: DashboardTargetType.Company,\n companyId: props.companyId,\n dashboardId: props.queryParams?.dashboardId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: companyAppLinks?.audience()\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }, {\n name: company.data.name,\n active: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const hasLoaded = (\n config.hasCompleted &&\n dashboard.hasCompleted &&\n presentation.hasCompleted &&\n audiences.hasCompleted &&\n company.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <StreamableCompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n presentation={presentation.data}\n widgetAppLinks={companyAppLinks}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={() => false}\n hasLocalPermissions={() => false}\n audiences={audiences.data}\n activeAudiences={activeAudiences}\n emptyImageUrl={ImageUrls.EmptyStates.Topics.TOPIC}\n isBot={SeoHelper.isBot()}\n lazyLoad={!SeoHelper.isBot()}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"djRnI462.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState.tsx","../../../../libs/shared/src/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard.tsx","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils.ts","../../src/apps/dashboard/views/company-dashboard/CompanyDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'streamable.companyDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamableCompanyDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadOnly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function StreamableCompanyDashboardEmptyState(props: StreamableCompanyDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('headingForStreamable')} />\n {!props.isReadOnly ? (\n <EmptyState.Heading>\n <Text phrase='headingForStreamable' />\n </EmptyState.Heading>\n ) : (\n <>\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='headingForCurator' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardEmptyState } from 'libs/shared/apps/streamable-learning/components/company-dashboard/empty-state/StreamableCompanyDashboardEmptyState';\nimport { AudienceFilter } from 'libs/shared/apps/subjects/components/audience-filter/AudienceFilter';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableQuestion } from 'libs/shared/components/expandable-question/ExpandableQuestion';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllCompanyWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CalendarEventContentType, Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nconst namespace = 'streamable.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface StreamableCompanyDashboardProps {\n dashboard: CuratedDashboard;\n company: Company;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllCompanyWidgetTemplates['appLinks'] & {\n audience: () => Core.AppLink,\n widgetWizard: () => Core.AppLink\n };\n scrollToWidgetId?: string;\n isReadOnly?: boolean;\n getBreadcrumbs?: () => Breadcrumb[];\n getBannerActions?: () => ActionOptions[];\n isBot?: boolean;\n lazyLoad?: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function StreamableCompanyDashboard(props: StreamableCompanyDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const initialEmptyWidgets = React.useMemo(() => {\n return widgets.reduce((acc: HashObject<boolean>, widget) => {\n acc[widget.id] = false;\n return acc;\n }, {});\n }, [widgets?.length]);\n \n const [ emptyWidgets, setEmptyWidgets ] = React.useState(initialEmptyWidgets);\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n props.activeAudiences?.map(a => a.masterId)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n if (emptyWidgets[widgetId] === isEmpty)\n return;\n\n const newEmptyState = {\n ...emptyWidgets,\n [widgetId]: isEmpty\n };\n\n setEmptyWidgets(newEmptyState);\n }, [ emptyWidgets, widgets ]);\n\n function shouldShowEmptyState(): boolean {\n if (!widgets?.length)\n return true;\n\n return Object.values(emptyWidgets).every(state => !!state);\n }\n\n const showEmptyState = shouldShowEmptyState();\n\n return (\n <>\n {!!widgets.length &&\n <>\n {props.company ?\n (\n <BannerHeader\n heading={props.company.name}\n logo={props.company.logo}\n logoBgColour={props.company.metadata?.colour}\n alignLogoLeft={!!props.company.logo || !!props.company.cover}\n banner={props.company.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n blockColourClass={getBgColorClass(props.company.name, BG_COLOUR_CLASS_NAMES)}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n ) : <PartialBannerHeader />\n }\n\n <div className='d-flex flex-column row-gap-3 py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n\n <AudienceFilter\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n disabled={props.isReadOnly}\n appLink={props.widgetAppLinks?.audience()}\n />\n </div>\n\n {props.company.description && (\n <div className='mb-5'>\n <ExpandableQuestion\n id={props.company?.id}\n question={getPhrase('aboutUs')}\n answer={LinkifyHelper.linkifyText(props.company.description)}\n isBot={props.isBot}\n analyticsOptions={{\n entity: EntityType.Company,\n location: LocationContext.Dashboard\n }}\n />\n </div>\n )}\n\n <div>\n {widgets.map(widget => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Company}\n dashboardTarget={DashboardTargetType.Company}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n setIsEmpty={onSetIsEmpty}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadOnly}\n lazyLoad={props.lazyLoad}\n contentType={CalendarEventContentType.Livestream}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n\n // TODO: Ideally we don't have to do this\n classification={null}\n seeMoreLink={undefined}\n hasTableOfContents={false}\n onClickRemoveItem={undefined}\n settings={{\n hasTopicDirectories: false\n }}\n badgeComponent={null}\n />\n );\n })}\n </div>\n </>\n }\n\n {showEmptyState && (\n <StreamableCompanyDashboardEmptyState\n dashboard={props.dashboard}\n isReadOnly={props.isReadOnly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { StreamableCompanyDashboardProps } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { Company } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\n\nexport function getCompanyAppLinks(\n company: Company,\n params: HashObject\n): StreamableCompanyDashboardProps['widgetAppLinks'] {\n return {\n ...StreamableAppLinks,\n audience: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ company?.id, TextHelper.slugify(company?.name) ],\n params\n }),\n\n // TODO: Find a nice way around having to pass these in\n series: () => null,\n classificationLatestReleases: () => null,\n playlist: () => null,\n watchHistory: () => null,\n widgetWizard: () => null,\n searchSettings: () => null,\n searchHome: () => null,\n getPreviewQuestionsAppLink: () => null,\n partner: () => null,\n partnerHome: () => null\n };\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { StreamableCompanyDashboard } from 'libs/shared/apps/streamable-learning/components/company-dashboard/StreamableCompanyDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Company, Config, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { CompanyRequests } from 'shared/flight-requests/CompanyRequests';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchDashboard } from 'shared/hooks/useFetchDashboard';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { getCompanyAppLinks } from 'apps/dashboard/views/company-dashboard/CompanyDashboardViewUtils';\n\nconst namespace = 'dashboard.companyDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * NOTE: Ensure any keys added here are also added\n * to sanitizeDashboardParams below.\n */\nexport interface CompanyDashboardViewQueryParams {\n a?: string[];\n dashboardId?: string;\n}\n\nexport function sanitizeDashboardParams(queryParams: CompanyDashboardViewQueryParams): CompanyDashboardViewQueryParams {\n if (!queryParams)\n return {};\n\n return ObjectHelper.pick(queryParams, [ 'a', 'dashboardId' ]);\n}\n\ninterface CompanyDashboardViewProps {\n companyId: string;\n queryParams?: CompanyDashboardViewQueryParams;\n}\n\nexport function CompanyDashboardView(props: CompanyDashboardViewProps): JSX.Element {\n const { commonVideoProps } = useCommonVideoProps();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.company(props.companyId, { query: 'banner,logo' }));\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(presentation.data &&\n AudienceRequests.presentationAudiences(PresentationType.StreamableLearning, presentation.data.id));\n\n const activeAudiences = AudienceHelper.getActiveAudiencesFromParams(audiences.data, props.queryParams);\n\n const companyAppLinks = company.data && getCompanyAppLinks(company.data, props.queryParams);\n\n const {\n dashboard,\n isPreviewing\n } = useFetchDashboard({\n targetType: DashboardTargetType.Company,\n companyId: props.companyId,\n dashboardId: props.queryParams?.dashboardId\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: company.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: companyAppLinks?.audience()\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!company.hasCompleted)\n return [];\n\n return [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }, {\n name: company.data.name,\n active: true\n }];\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const hasLoaded = (\n config.hasCompleted &&\n dashboard.hasCompleted &&\n presentation.hasCompleted &&\n audiences.hasCompleted &&\n company.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='position-relative px-4'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='company' />}\n <StreamableCompanyDashboard\n company={company.data}\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n presentation={presentation.data}\n widgetAppLinks={companyAppLinks}\n getBreadcrumbs={getBreadcrumbs}\n hasPermissions={() => false}\n hasLocalPermissions={() => false}\n audiences={audiences.data}\n activeAudiences={activeAudiences}\n emptyImageUrl={ImageUrls.EmptyStates.Topics.TOPIC}\n isBot={SeoHelper.isBot()}\n lazyLoad={!SeoHelper.isBot()}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|